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

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

解决前

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

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

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

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

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

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

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

解决后
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容