我使用下面的示例测试和学习如何从子窗口小部件调用父函数。
当您单击TestButton
时,将调用countRefresh
函数,并且变量count
将增加1。
现在,每次单击按钮都会更改颜色(蓝色或红色)。
问题:说我希望颜色根据count
变量周围的某些逻辑而变化,如何从{{1 }}小部件?
例如。如果count
是三的倍数,则按钮应为红色,否则为蓝色。
我读到有关InheritedWidgets的信息,但似乎变量在InheritedWidgets中必须是final的(如果我未将final放在TestButton
之前,则会收到“此类被标记为不可变的”消息错误)。
但是基于此示例,每次单击按钮时,我需要count
进行更改。
InheritedWidgets的替代方法是什么?
int count = 0;
答案 0 :(得分:1)
我希望颜色根据围绕count变量的某种逻辑进行更改,如何从TestButton小部件中访问count变量?例如。如果count是3的倍数,则按钮应为红色,否则为蓝色。
您需要将count
传递给孩子,让孩子根据该值建立自己。
不要尝试访问父窗口小部件。在声明式编程中,您只能更新状态和重建树。
以下是有关Flutter中状态管理的精彩视频:https://www.youtube.com/watch?v=HrBiNHEqSYU