Flutter学习

2024-04-19  本文已影响0人  nicaho

实现展开/收起的功能

需求

需求:

0.用系统自带的ExpansionTile

1.展开时,去除上下的线条

2.根据内容行数,决定显示"展开/收起"与否

需求1

通过 Theme 修改分割线的颜色

Theme(

data:Theme.of(context).copyWith(dividerColor: Colors.transparent),

child: ExpansionTile(xxx)

)

需求2

通过 String 初始化 TextSpan

通过 TextSpan 初始化 Text,根据行数显示展开还是收缩

通过 TextSpan 初始化 TextPainter,根据行数是否显示 展开/收缩

不提前运行入口 widget 的 initState 的代码

监听原生 ViewController 的 ViewDidLoad

0.通过 GlobalKey 关联

GlobalKey<_MyHomePageState> widgetKey = GlobalKey();

1.在 initState 增加监听

observer = ViewDidLoadObserver(widgetKey);

WidgetsBinding.instance.addObserver(observer);

2.在 WidgetBindingObserver 处理

3.同时,要增加标识,判断何时重新刷新(build)

void buildDatas() {

    _isShowList = true

}

FutureBuilder<XXX>(

    future: futureXXX,

    builder: (context, snapshot) {

      if (snapshot.connectionState == ConnectionState.waiting || !_isShowList) {

    }

)

上一篇下一篇

猜你喜欢

热点阅读