【发布时间】:2021-09-01 17:13:12
【问题描述】:
所以,我已经看到了使用 initState 函数将数据 (http) 加载到有状态小部件提供程序的示例。但是如果小部件是无状态的,我不确定最好的方法是什么。我所做的如下:
class GamesGrid extends StatelessWidget {
@override
Widget build(BuildContext context) {
final gamesData = Provider.of<GamesProvider>(context);
return FutureBuilder<void>(
future: gamesData.fetchGamesFromBgg(),
builder: (ctx, AsyncSnapshot<void> snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
final games = gamesData.items;
return GridView.builder(
padding: const EdgeInsets.all(10.0),
itemCount: games.length,
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
childAspectRatio: 3 / 2,
crossAxisSpacing: 10,
mainAxisSpacing: 10),
itemBuilder: (context, idx) => ChangeNotifierProvider.value(
value: games[idx],
child: GameItem()
)
);
} else {
return CircularProgressIndicator();
}
}
);
}
}
我只是不确定这是否是正确的方法。
【问题讨论】:
标签: flutter dart flutter-provider flutter-futurebuilder