Itembuilder не выполняется в streambuilder при обновлении данных в firestore
Когда я запускаю приложение в первый раз, оно загружает все элементы в анимированный список. Но когда я добавляю элемент в firestore, streambuilder понимает, что что-то случилось. НО он не выполняет itembuilder, поэтому новые элементы не отображаются. Однако, если я перезапущу приложение, новые элементы будут загружены. Если бы я просто изменил имя существующего элемента в базе данных firestore, он без проблем перестроился.
Когда я обновляю элемент. Мне нужно получить карту задач и заменить ее новой копией, в которой есть элемент, и опубликовать / обновить ее в firestore.
Я перепробовал все, что мог придумать, не понимаю, почему это происходит. Я напечатал в itembuilder и вижу, что он не выполняется при обновлении.
Widget _buildTasksList() {
return new Expanded(
child: new StreamBuilder(
stream: Firestore.instance
.collection("lists")
.document(tasklist.postID)
.snapshots(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (!snapshot.hasData) {
return new Text("Loading");
}
var listdata = snapshot.data;
tasklist.tasks = listdata['tasks'];
tasklist.owners = listdata['owners'];
tasklist.sorter = listdata['sorter'];
return new AnimatedList(
initialItemCount: convertToTaskList(listdata['tasks']).length,
key: _listKey,
itemBuilder: (context, index, animation) {
return new TaskRow(
task: this.listModel[index],
animation: animation,
listModel: this.listModel,
tasklist: tasklist,
onChange: () => _onChange(this.listModel[index]),
);
},
);
},
)
);
}
1 ответ
Получил работу, сбросив мой _listKey, добавил это перед анимированным списком. _listKey = ноль; _listKey = новый GlobalKey();