Flutter ListView+ExpansionTile状态

2022-12-05  本文已影响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的状态会保留

上一篇 下一篇

猜你喜欢

热点阅读