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的状态会保留
网友评论