Flutter学习之ExpansionPanel折叠面板

1,038 阅读1分钟
  • 项目实战代码片断记录,写完就忘了
  • ExpansionPanelList
  • ExpansionPanel
ExpansionPanelList(
    //expansionCallback方法点击回调事件bool值(折叠或展开)
        expansionCallback: (index, bOpen) {
        //bool值取反
          controller.sectionFloorSum.data![index].bOpen = !bOpen;
          //因为使用Get需要监听obs变量刷新页面
          controller.iLoaded.value++;
        },
        children: [
          ...controller.sectionFloorSum.data!.map((item) {
            return ExpansionPanel(
            //默认是否展开
              isExpanded: item.bOpen ?? false,
              headerBuilder: (BuildContext context, bool bOpen) {
              //折叠后显示条目
                return ListTile(
                  title: TextTN(
                    text: item.description,
                  ),
                );
              },
              //展开后显示条目
              body: ListView.builder(
                  shrinkWrap: true,
                  itemCount: item.floorList!.length,
                  itemBuilder: (context, indexed) {
                    //单个条目点击事件
                    return InkWell(
                      onTap: () {
                        controller.curIndex.value = indexed;
                        controller.doDynamicFilter(
                            "Floor", item.floorList![indexed].code);
                      },
                      child: Row(
                        children: [
                          addHorizontalSpace(24),
                          TextTNL(
                            text: item.floorList![indexed].description,
                            w: 90,
                            align: Alignment.center,
                          ),
                          TextTN(
                            text: item.floorList![indexed].sum.toString(),
                            w: 40,
                          ),
                          addHorizontalSpace(24),
                        ],
                      ),
                    );
                  }),
            );
          }).toList()
        ],
      ),