facebook twitter hatena line email

「Flutter/画面遷移/画面遷移イベント検知」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
行18: 行18:
 
   }
 
   }
  
   // 上の画面がpopされて、この画面に戻ったときに呼ばれます
+
   // この画面に戻ったとき
 
   void didPopNext() {
 
   void didPopNext() {
 
     debugPrint("didPopNext ${runtimeType}");
 
     debugPrint("didPopNext ${runtimeType}");
 
   }
 
   }
  
   // この画面がpushされたときに呼ばれます
+
   // 画面がpushされたとき
 
   void didPush() {
 
   void didPush() {
 
     debugPrint("didPush ${runtimeType}");
 
     debugPrint("didPush ${runtimeType}");
 
   }
 
   }
  
   // この画面がpopされたときに呼ばれます
+
   // 画面がpopされたとき
 
   void didPop() {
 
   void didPop() {
 
     debugPrint("didPop ${runtimeType}");
 
     debugPrint("didPop ${runtimeType}");
 
   }
 
   }
  
   // この画面から新しい画面をpushしたときに呼ばれます
+
   // 新しい画面へ移動した時
 
   void didPushNext() {
 
   void didPushNext() {
 
     debugPrint("didPushNext ${runtimeType}");
 
     debugPrint("didPushNext ${runtimeType}");

2019年11月16日 (土) 15:29時点における版

Scaffoldの画面でイベント検知する

_TextPageState と ArticleTextPage は各々のクラス名を入れる。

class _TextPageState extends State<ArticleTextPage> with RouteAware {
  RouteObserver<PageRoute> routeObserver = new RouteObserver<PageRoute>();

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    routeObserver.subscribe(this, ModalRoute.of(context));
  }

  @override
  void dispose() {
    routeObserver.unsubscribe(this);
    super.dispose();
  }

  // この画面に戻ったとき
  void didPopNext() {
    debugPrint("didPopNext ${runtimeType}");
  }

  // 画面がpushされたとき
  void didPush() {
    debugPrint("didPush ${runtimeType}");
  }

  // 画面がpopされたとき
  void didPop() {
    debugPrint("didPop ${runtimeType}");
  }

  // 新しい画面へ移動した時
  void didPushNext() {
    debugPrint("didPushNext ${runtimeType}");
  }

参考:https://qiita.com/najeira/items/89d8014a30102204babb