私はアニメーション化されたリストを持っています。ビルド関数はアプリの本体からスタックに含まれています。データベースで何かが更新されるたびに、ストリームビルダーは再構築しません.項目は関数によって初期化に設定されます:
Stream<List<Task>> getTasks(){
try {
Firestore.instance
.collection("lists")
.document(tasklist.postID)
.collection("tasks")
.snapshots();
}
on Exception {
error();
}
return ref.snapshots().map((list) =>
list.documents.map((doc) => Task.fromFireStore(doc)).toList());
}
Widget _buildTasksList() {
return new Expanded(
child: new StreamBuilder(
stream: items,
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (!snapshot.hasData) {
return new Text("Loading");
}
return new AnimatedList(
initialItemCount: tasks.length,
key: _listKey,
itemBuilder: (context, index, animation) {
print(index);
return new TaskRow(
task: listModel[index],
animation: animation,
listModel: listModel,
tasklist: tasklist,
onChange: () => _onChange(listModel[index]),
);
},
);
},
)
);
}