在本文中,我們將學(xué)習(xí)一個(gè)重要的Flutter小部件,。很多時(shí)候,,在應(yīng)用程序中,我們必須知道一個(gè)小部件是否可見,。 類似Android的onResum事件,,在Flutter中,需要使用一些額外的方法來實(shí)現(xiàn)這個(gè)事件檢測(cè),。 簡(jiǎn)單的應(yīng)用場(chǎng)景就是在A頁面中點(diǎn)擊一個(gè)按鈕打開B頁面,,A頁面失去焦點(diǎn),然后B頁面關(guān)閉消失,,A頁面重新獲取得了焦點(diǎn),,同時(shí)回調(diào)onResum事件。
要回調(diào)這個(gè)事件,,我非就是想在B頁面消失的時(shí)候,,再做一事內(nèi)容處理,我一般使用的方法是使用 future await 來實(shí)現(xiàn)處理,,核心代碼如下:
TextButton buildTextButton(BuildContext context) { return TextButton( onPressed: () async { //打開其他頁面 await Navigator.of(context) .push(MaterialPageRoute(builder: (BuildContext context) { return OnePage(); })); //處理其他事情 }, child: const Text("測(cè)試"), ); }
現(xiàn)我也可以使用 visibilityDetector 在頁面中做統(tǒng)一的處理,。
添加依賴如下:
visibility_detector: ^0.4.0+2
然后在頁面中引入依賴:
import 'package:visibility_detector/visibility_detector.dart';
核心使用代碼如下:
//核心使用代碼 VisibilityDetector buildVisibilityDetector(BuildContext context) { return VisibilityDetector( onVisibilityChanged: (visibilityInfo) { setState(() { //當(dāng)前頁面可見 _isVisible = visibilityInfo.visibleFraction > 0; // It will show how much percentage the widget is visible var visiblePercentage = visibilityInfo.visibleFraction * 100; //頁面的可見度 print('Widget is ${visiblePercentage}% visible'); }); }, key: const Key('my-widget-key'), child: Center( //頁面的其他布局 child: buildTextButton(context), ), ); }
|