美文网首页
Flutter ListView 在 setState 之后不更

Flutter ListView 在 setState 之后不更

作者: 王冥 | 来源:发表于2023-09-21 09:48 被阅读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吧。

    相关文章

      网友评论

          本文标题:Flutter ListView 在 setState 之后不更

          本文链接:https://www.haomeiwen.com/subject/akfzvdtx.html