Flutter ListView 在 setState 之后不更

2023-09-21  本文已影响0人  王冥

这两天遇到很尴尬无语的问题,不知道是我对flutter不够了解还是咋的,修改listview中一个data的数据,setState之后死活不刷新,在网上找了很久,尽然有人也是这样

最佳答案

我遇到了同样的问题。

我已将 key: UniqueKey() 添加到我的 Listview 中

而且效果很好,不需要其他任何东西:)

关于Flutter ListView 在 setState 之后不更新,使用 StatefulWidget 作为项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54897163/

现在还不明白为啥,什么原理,有知道的大神请解答一下

看了关于UniqueKey介绍

class UniqueKey extends LocalKey {  UniqueKey();  @override  String toString() => '[#${shortHash(this)}]';}

唯一的key,LocalKey的一个实现,其并未重写==和hashCode方法,所有它只和自己相等。注意看UniqueKey的构造函数,并没有像其他的几个key的构造函数一样使用const修饰,这样做的目的是为了进一步保证UniqueKey的唯一性。这样在调用Element的updateChild方法时,此方法内部调用的Widget.canUpdate方法就会始终返回false,从而每次都会创建新的child element。

所以,如果你想让某一个widget每一次都不复用old element,而是去重新创建新的element,那么就给他添加UniqueKey吧。

上一篇 下一篇

猜你喜欢

热点阅读