如何从另一个小部件更新小部件树 class - Flutter

How to update widget tree from another widget class - Flutter

当一个变量发生变化时,我面临重新呈现页面的问题 class/widget(父小部件和子小部件都是有状态的 classes)。

事情是这样的: 我将三个按钮合二为一 class,它可以更改变量状态 (foodCategory)。

int foodCategory = 0;
// down in the elevated button body - i am updating the variable
setState(() {
          foodCategory = 1;});

在另一个小部件中,我使用此变量执行某些操作:

for (var item in foodItems.values.elementAt(foodCategory))
                GestureDetector(........ and so on...

但是在第二个片段中,小部件不知道是否有变化并且它不会再次调用 buildcontext ... 我不确定如何克服这个问题。我试过 valuelistenablebuilder 但没有成功。也许我不知道如何在循环中使用它(我将 foodcategory 用作 int(迭代器))。

碰巧我用错了 valuelistenable builder。

很简单。只需将变量和更改标记为 valueNotifier。就我而言,我需要将 foodCategory 标记为 valueNotifer。

然后,我需要将小部件(在我的例子中是列小部件)包装为 ValueListenableBuilder。这解决了我的问题。