#flutter #setstate #flutter-futurebuilder
Вопрос:
Я получаю ошибку, но все равно хочу, чтобы решение изменило мое состояние сразу после того, как я получу будущие данные без каких-либо действий по нажатию.
FutureBuilder(
future: blogServices.articleComment(token, widget.article.id),
builder: (context, snapshot) {
// print(token);
if (snapshot.hasError) {
return Container();
} else if (snapshot.connectionState ==
ConnectionState.done amp;amp;
snapshot.data != null) {
List<ArticleComment> comments = snapshot.data;
setState(() {. <-------- Error!!!!!!!!
commentsCount=comments.length;
});
return Container();
} else {
return CircularProgressIndicator();
}
},
),
Комментарии:
1. я также использовал WidgetsBinding.instance.addPostFrameCallback((_) { setState(() { commentsCount = количество; }); }); состояние изменилось, но будущий конструктор бесконечно зацикливается.
2. пожалуйста, сформулируйте свою проблему более четко. Разработайте код, а также добавьте больше фрагментов кода из-за кода.
3. без функции обратного вызова вы не разрешаете вызывать
setState()
, если вы хотите использоватьcommentsCount
внешний конструктор будущего , вам нужно вызвать свой API изinitState
4. но это снова вызовет будущее futurebuilder
Ответ №1:
Я нашел решение, поэтому вместо
setState(() {. <-------- Error!!!!!!!!
commentsCount=comments.length;
});
Я использовал приведенный ниже код
WidgetsBinding.instance.addPostFrameCallback((_) { setState(() { commentsCount = count; }); });
и часть загрузки была связана с моим снимком состояния.ConnectionState ==
Состояние соединения.сделав это, я удалил его и просто сделал снимок.данные != ноль. Это сработало для меня!!