微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter - 避免 ListView 重建

如何解决Flutter - 避免 ListView 重建

当您根据 ListViewListView.builder认行为插入/删除/重新排序(或进行任何其他操作)ListView.separated 项时,它始终会重建整个小部件。

我怎样才能避免这种情况?它会带来数据丢失等不良后果。

解决方法

您可以通过设置 ListView.builder 属性来使用 ListView.separated,而不是使用 ListView.customfindChildIndexCallback

ListView.custom(
        key: Key('messageListView'),controller: _scrollController,reverse: true,childrenDelegate: SliverChildBuilderDelegate(
          (context,i) {
            return Container(key: ValueKey('message-${message.id}'));
          },childCount: _messages.length,findChildIndexCallback: (key) {
            final ValueKey<String> valueKey = key;
            return _messages
                .indexWhere((m) => 'message-${m.id}' == valueKey.value);
          },),);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。