flutter方法里展示dialog,设置setState()无效

学习原文:https://zhuanlan.zhihu.com/p/149603388

解决前

当按钮被点击时,showTestDialog()方法被执行。界面将显示一个小窗口,里面有一个复选框。  

我们要实现的效果当然是用户点击复选框的时候,改变复选框的状态。因此,在复选框的onChanged()方法中改变了决定复选框状态的布尔值,并setState()。 

然而真实的运行结果并非像预期那样产生效果。  

究其原因,我们还需从setState()说起。 

顾名思义,setState()要求其作用对象必须是一个有状态的组件。如果作用对象本身无状态,那么setState()将无法起作用。 

因此,我们找到原因:SimpleDialog()中的子组件默认是无状态的。 

接下来的解决办法就简单了,只需要在SimpleDialog组件外部“套”一个StatefulBuilder组件即可。参考下面的代码:

解决后

你可能感兴趣的:(flutter方法里展示dialog,设置setState()无效)