Flutter學習

實現展開/收起的功能

需求

需求:

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) {

? ? }

)

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容