Flutter将动态列表绑定到StatefulWidget

时间:2018-10-03 16:55:52

标签: dart flutter flutter-layout

我在调用太多电话以获取列表数据时遇到问题。

这是发生的事情(简化)。我有向我返回List<T>的服务,其中T是一个简单的对象,几乎没有属性(标题,颜色,键等)。

然后我有一个StatefulWidget,在Widget build()方法中,我正在调用API以返回数据,如下所示:

Widget build(BuildContext context) {
    _masterCategories = _masterCategories ??
        StaticListService.getItems(StaticItemType.masterCategory, context);

最后,我将此数组绑定到Wrap小部件,该小部件显示Chip元素的数组:

Wrap(
    spacing: 8.0,
    runSpacing: 4.0,
    children: _masterCategories
        .map((item) => _generateSimpleChip(context, item))
        .toList()),

好的,一切正常!但是,我遇到一个小问题,当我单击某个Chip项目并选择它时(我有一个简单的Set<String>用于跟踪所有选定的筹码),结果是,显然,我的build方法是重新构建。

这会重新调用我的API方法来检索我确定知道的项目,该项目与当前页面相同(除非我离开当前页面并返回,否则我可以保证项目不会更改)。

我尝试在initState()方法中填充我的List<T>,但是该方法引发了错误:

  在之前调用了

inheritFromWidgetOfExactType(_LocalizationsScope)   _DetailPageComponentState.initState()完成

正如您在我的代码(第一个代码块)中所看到的那样,我包括一个检查,检查数组是否包含值,如果不包含,则从API中获取值。

问题:
我想知道,是否有更好的方法来做到这一点?我已经尝试过FutureBuilder,但结果却是相同的->在更改chip项目的状态时,重新调用了Future,并重新填充了我不需要的项目。< / p>

0 个答案:

没有答案