美文网首页
Flutter ListView+ExpansionTile状态

Flutter ListView+ExpansionTile状态

作者: 倪大头 | 来源:发表于2022-12-05 10:25 被阅读0次

ListView和ExpansionTile组合使用的时候,展开状态在页面滚动后不会保留,有两种解决方案:
1.给每个item增加PageStorageKey

ListView.builder(
  itemCount: 30,
  itemBuilder: (context, index) {
    return Container(
      key: PageStorageKey(index),
      ...
    );
  },
)

但我的情况比较复杂,item里面又套了ListView和GridView,这时候再使用PageStorageKey的话,ScrollPosition就会报错:

type 'bool' is not a subtype of type 'double?' in type cast

2.把ListView换成SingleChildScrollView+Column的模式

SingleChildScrollView(
  child: Column(
    children: [
      ExpansionTile(),
      ExpansionTile(),
      ExpansionTile(),
    ],
  ),
)

SingleChildScrollView不会清除屏幕外的组件,对性能影响较大,如果ExpansionTile个数不是很多的话,可以使用这种方式,ExpansionTile的状态会保留

相关文章

网友评论

      本文标题:Flutter ListView+ExpansionTile状态

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