我正在开发一个使用 Flutterscoped_model
作为状态管理器的项目。
但是有一点我不确定。我实际上在每次构建时都调用我的 API,这对我来说看起来很奇怪。使用状态管理进行 API 调用的良好做法是scoped_model
什么?这是我实际的小部件代码:
class RunsListPage extends StatelessWidget {
final ScopedRuns scopedRuns = ScopedRuns();
@override
Widget build(BuildContext context) {
this.scopedRuns.getRuns();
return ScopedModel<ScopedRuns>(
model: this.scopedRuns,
child: ScopedModelDescendant<ScopedRuns>(
builder: (context, child, scopedRuns) {
return Column(
children: <Widget>[
Expanded(
child: Stack(
children: <Widget>[
LoadingIndicatorWidget(
visible: scopedRuns.isLoading,
),
RefreshIndicator(
color: Theme.of(context).primaryColor,
onRefresh: () async => this.scopedRuns.getRuns(),
child: RunsList(
runsList: scopedRuns.runs ?? [],
visible: !scopedRuns.isLoading),
),
],
),
)
],
);
},
));
}}
这是我的模型中的getRuns()
方法ScopedRuns
:
getRuns() async {
_isLoading = true;
notifyListeners();
_runs = await APIService.getRuns();
_isLoading = false;
notifyListeners();
}