【发布时间】:2022-01-16 22:49:32
【问题描述】:
当一个类/小部件(父小部件和子小部件都是有状态的类)中的变量发生变化时,我面临重新渲染页面的问题。
事情是这样的: 我在一个类中有三个按钮,它们改变了一个变量状态(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...
但是在第二个 sn-p 中,小部件不知道是否发生了变化,并且它没有再次调用 buildcontext... 我不知道如何克服这个问题。我试过 valuelistenablebuilder 但徒劳无功。也许我不知道如何在循环中使用它(我使用 foodcategory 作为 int(迭代器))。
【问题讨论】:
-
你应该使用GETX,在getx中你可以使用同一个控制器更新任何小部件
-
请分享代码,显示您在哪里使用此
for循环。如果它在以foodCategory作为成员的类的构建方法中,setState应该更新。如果它位于不同的小部件中,您可以使用Provider和Consumer来实现。
标签: flutter flutter-layout flutter-web statefulwidget