在Flutter中将新数据集设置为列表时,如何重置列表项上发生的所有UI更改?

时间:2019-05-26 21:23:13

标签: listview flutter flutter-layout listviewitem multipleselection

My Layout

我正在尝试构建此布局,到目前为止,我可以从列表中选择一餐,并且当我从同一天选择另一餐时,选择更改为新选择的餐..我的问题是,当我切换到另一天。.我应该能够选择另一顿饭..发生的事情是选择了上次选择的同一顿饭的索引..我无法弄清楚为什么会发生这种情况。 / p>

例如,如果我选择5月27日的第一餐,然后切换到5月28日,我会发现5月28日及其他所有日期也选择了第一餐。

我认为问题在于,当设置新数据时,我需要以某种方式重置列表视图。

这就是我吃饭的方式

mealsSubscription = MealsBloc.todayMealsStream.listen((todayMeals) {
      setState(() {
        if (todayMeals!= null && todayMeals.length>0){
          CircularLoadingBloc.stop();
          meals = todayMeals;
        }
        else{
          meals.clear();
        }
      });
    });

这是我的列表视图生成器

MediaQuery.removePadding(
              context: context,
              child: ListView.builder(
                physics: NeverScrollableScrollPhysics(),
                shrinkWrap: true,
                itemCount: meals.length,
                itemBuilder: (context, index) {
                  return MealItem(
                    meal: meals.elementAt(index),
                    showButton: true,
                    redeemed: true,
                    showDate:false,
                    inSubscription: true,
                    date: MealsBloc.currentVisibleDate,
                  );
                },
              ),
              removeTop: true,
            ),

实际上,当我切换到第二天时。我发现选择内容甚至都没有进入侦听器。

我希望我能找到第二天去清除选择的方法。

0 个答案:

没有答案