【发布时间】:2021-03-24 23:31:45
【问题描述】:
目前我正在尝试了解使用颤振和 Firestore 检索数据的一些基础知识。就我而言,我想检索一次数据,所以我决定选择FutureBuilder 而不是StreamBuilder。
现在,当我在我的小部件树中放置一个打印语句时,我注意到,每次我调用我的函数时,整个树都在重建。现在我想使用Consumer,这样只有我的Listview.Builder 重新加载,但我无法让它正常工作。小部件树仍在重建。希望有人可以帮助我。
Consumer<SongProvider>(builder: (context, sProvider, _) {
return FutureBuilder(
future: songFuture,
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
case ConnectionState.waiting:
return Align(
alignment: Alignment.center,
child: CircularProgressIndicator()
);
case ConnectionState.done:
if (snapshot.hasError) {
return Text('Error: ${snapshot.error}');
} else {
return ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (context, index) {
return Text(
snapshot.data[index]['songName'].toString());
});
}
}
}
);
}))
],
)));
}
}
我怎样才能让Consumer 现在工作?我想我可能需要用快照替换它,但我不知道我如何以及从哪里获取数据。请帮忙
【问题讨论】:
-
只有当你的小部件在你的提供者之下时,消费者才能工作,你可以在这里阅读更多:medium.com/flutter-community/…
-
感谢您提供来源。我编辑了我的代码,我可以假设我在我的小部件树上方使用 ChangenotifierProvider
标签: firebase flutter google-cloud-firestore flutter-provider