【发布时间】:2020-06-08 22:31:13
【问题描述】:
我正在使用flutter_bloc 在我的应用程序中实现 bloc。
我有一个可以进行多次转换的屏幕。因此,在页面上的不同操作上调度了多个事件,并且返回的每个状态都代表了该特定事件的返回状态。
如何在这些转换之间维护小部件中的状态?
例如,屏幕有 3 个按钮。每个按钮单击都会调度一个事件,并且状态会返回一段文本。所以点击button1后,状态返回一个带有文本的State对象,并且按钮被这个文本替换。现在,当用户单击 button2 时,它会返回另一段文本并替换 button2。但是当这种情况发生时,button1 的文本消失了。
我有一个 StatefulWidget,它的状态看起来像这样 -
List<String> allTexts = List();
但更新此状态不起作用,因为调用 setState 会引发此错误 -
setState() or markNeedsBuild() called during build.
我该如何解决这个问题?
提前致谢。
【问题讨论】:
-
在您的
build方法中检查可能的调用setState -
你不应该在widget中保存状态,而是将状态保存在bloc的状态模型类中
-
绝对同意!你如何建议我传递价值?我有多个类,每个代表一个新状态。有没有一个例子我可以看到所有这些状态类都改变了一个变量?
标签: flutter bloc flutter-bloc