#flutter
Вопрос:
[РЕШЕНО] Проверьте источник данных listview builder.
Я хочу обновить содержимое столбца, но когда я удаляю элемент и добавляю новый элемент в todoFutureBuilder, пользовательский интерфейс по-прежнему отображает старые данные(и новые данные после старых данных). Почему это происходит? Что я должен сделать, чтобы обновить содержимое?
код
способ инициализации
List<Widget> todoFutureBuilder=[];
@override
void initState() {
todoFutureBuilder.add(Text('This is result'));
super.initState();
}
способ сборки
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
getSearchBar(),
Expanded(
child: Column(
children: todoFutureBuilder,
),
)
],
),
);
}
способ изменения содержимого виджета.
showSearchArtistResults() {
setState(() {
if(todoFutureBuilder.length!=1){
todoFutureBuilder.removeAt(1);
}
print(todoFutureBuilder);
});
setState(() {
todoFutureBuilder.add(
FutureBuilder(
future: getSearchArtistResultList(),
builder: (context, snapshot) {
if (snapshot.hasData) {
print(snapshot.data);
if (snapshot.data == 'have_result') {
return Expanded(child: buildArtistResultList());
} else {
return Text('No Result, Please Search Again');
}
} else if (snapshot.hasError) {
return Text("${snapshot.error}");
}
return CircularProgressIndicator();
},
)
);
print(todoFutureBuilder);
});
}
Ответ №1:
используйте todoFutureBuilder.clear()
функцию
Комментарии:
1. это не работает. На самом деле отладчик показывает, что todoFutureBuilder-это [Текст(«Результат»), FutureBuilder<Строка>], Просто содержит 2 виджета, но на экране все еще отображается 3(или более)
2. если(todoFutureBuilder.length!=1){ } Возможно, это ограничение вызывает ошибку
3. Я нашел проблему. Я использую другой список для хранения данных и забываю обновить его, в то время как список виджетов в порядке. Спасибо.