在FutureBuilder
下面,使用ListView
。 findRequirement
基于ListView
的项目。这个FutureBuilder
放在Build
方法里面。但是办公室文件说:“将来一定要早一些,例如在State.initState
,State.didUpdateConfig
或State.didChangeDependencies
期间。”
问题是每次滚动调用findRequirement
api时,现在listView缓慢/滞后。
ListView.builder(
...
itemCount:value.length,
itemBuilder: (BuildContext context, int index) {
...
FutureBuilder<List<RequirementModel>>(
future: db.findRequirement(
userId, value[index].subCategoryId),
builder: (context, snapshot) {
if (snapshot.hasData) {
//widget
} else
return Container();
})
最佳答案
您可以这样做:
// inside state class
class _MyAppState extends State<MyApp> {
Future _getRequirments;
@override
void initState() {
super.initState();
_getRequirments = db.findRequirement(
userId, value[index].subCategoryId);
}
// change your FutureBuilder to this
FutureBuilder<List<RequirementModel>>(
future: _getRequirments,
builder: (context, snapshot) {
if (snapshot.hasData) {
//widget
} else
return Container();
这样,它将不会继续反复调用您的方法,因为您只能获得一次在initState()
内部的 future ,并且FutureBuilder future:
具有该状态并且不会调用db.findRequirement(userId, value[index].subCategoryId);
对于每个版本。关于flutter - 在这种情况下,有什么方法可以在initState中使用FutureBuilder(future)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63097593/