我使用的TabBarView有两个选项卡,每个选项卡都显示一个有状态的小部件-让我们将它们称为“主小部件”和“配置小部件”。
Configuration Widget充当Main Widget的“配置部分”-我用它来设置诸如Main Main Widget中的背景色和URL变量之类的东西,该变量用于从Web服务获取数据。
主窗口小部件具有一个由该Web服务填充的ListView。我正在使用Bloc模式将事件从一个窗口小部件发送到另一个窗口小部件,这是配置窗口小部件将URL值发送到主窗口小部件的方式-触发了一个事件,该事件由bloc变为主窗口小部件可以在其构造函数中读取并带有新URL的“状态”对象,并用于构建ListView。
现在,如果我没有更改配置小部件中的URL,那么我现在在主窗口小部件中使用wantKeepAlive机制来避免重新填充ListView;如果不这样做,则每次我重建主窗口小部件时返回它的选项卡,即使我没有在“配置小部件”中进行任何更改。
我想做的是有选择地设置该值,以便在配置中更改URL时,将wantKeepAlive
值更新为false
,以便ListView 使用新的URL进行重建。但是,构建完成后,请将wantKeepAlive
的值重新设置为true
,这样就不会重建,直到下一个URL更改为止。
完成build()
方法后是否可以调用生命周期方法,可以在其中设置wantKeepAlive
设置?我认为在build方法本身中这样做不起作用。欢迎提出建议,谢谢。
答案 0 :(得分:2)
在构建窗口小部件之后,您可以使用addPostFrameCallback
实例中的WidgetsBinding
来执行一些代码。
_onLayoutDone(_) {
//add your code here
}
@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback(_onLayoutDone);
super.initState();
}