小程序开发|小程序制作|小程序开发网

搜索

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

2022-2-14 22:04| 发布者: admin| 查看: 243| 评论: 1

摘要: 学习原文:https://zhuanlan.zhihu.com/p/149603388当按钮被点击时,showTestDialog()方法被执行。界面将显示一个小窗口,里面有一个复选框。  我们要实现的效果当然是用户点击复选框的时候,改变复选框的状态。因

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

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

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

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

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

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

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

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


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

鲜花

握手

雷人

路过

鸡蛋
发表评论

最新评论

引用 快乐的鱼 2022-2-14 22:14
感谢分享

查看全部评论(1)

返回顶部