美文网首页
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