實現展開/收起的功能
需求
需求:
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) {
? ? }
)