代码 > flutter中强制Statefull子元素更新

2023-11-22

为了效率,flutter的setState是只更新依赖当前State的Widget的,维护自己独立Widget,通过listen event独立更新的子Widget是不会因为setState更新的。

但有时候整个Widget的刷新是必须的,一层层向下Bind Event是不可接受的。

这时候可以通过setState更新父元素的key来实现。不同的key的父元素代表不同的组件,自然会重建了。

元素添加一个属性

var _refreshKey = UniqueKey();
 

build时指定key

return RawKeyboardListener(
key: _refreshKey,
 

需要时重设key

setState(() {
_refreshKey = UniqueKey();
});
 

就能替换整个组件树了。

 

点击登录