Flutter從其他頁(yè)面返回到當(dāng)前頁(yè)面時(shí)的監(jiān)聽(tīng)

參考文章:
Flutter監(jiān)聽(tīng)路由返回

方法一:
push方法.then,支持手勢(shì)返回?,可以獲取傳回參數(shù)?。

方法二:
didPopNext,支持手勢(shì)返回?,但回傳參數(shù)獲取不到?。

方法三、
deactivate(),不支持手勢(shì)返回?,回傳參數(shù)獲取不到?。

各個(gè)使用方法:
方法一、push后.then即可

方法二、添加route監(jiān)聽(tīng)
1、程序入口添加:

// 用于路由返回監(jiān)聽(tīng)
  static final RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();

2、MaterialApp下添加

return MaterialApp(
        navigatorObservers: [MyApp.routeObserver],

3、所在頁(yè)面添加with RouteAware
4、添加訂閱和移除訂閱

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    // 添加監(jiān)聽(tīng)訂閱
    MyApp.routeObserver.subscribe(this, ModalRoute.of(context));
  }

  @override
  void dispose() {
    // 移除監(jiān)聽(tīng)訂閱
    MyApp.routeObserver.unsubscribe(this);
    super.dispose();
  }

4、使用一下方法來(lái)監(jiān)聽(tīng)

  @override
  void didPush() {
    super.didPush();
    // push進(jìn)入當(dāng)前頁(yè)面時(shí)走這里
    LogUtils.d('生命周期監(jiān)聽(tīng)', 'didPush');
  }

  @override
  void didPushNext() {
    super.didPushNext();
    // 當(dāng)前頁(yè)面push到其他頁(yè)面走這里
    LogUtils.d('生命周期監(jiān)聽(tīng)', 'didPushNext');
  }

  @override
  void didPop() {
    super.didPop();
    // pop出當(dāng)前頁(yè)面時(shí)走這里
    LogUtils.d('生命周期監(jiān)聽(tīng)', 'didPop');
  }

  @override
  void didPopNext() {
    super.didPopNext();
    // 從其他頁(yè)面pop回當(dāng)前頁(yè)面走這里
    LogUtils.d('生命周期監(jiān)聽(tīng)', 'didPopNext');
  }

方法三、

@override
  void deactivate() {
    bool isBack = ModalRoute.of(context).isCurrent;
    if (isBack) {
      // 限于從其他頁(yè)面返回到當(dāng)前頁(yè)面時(shí)執(zhí)行,首次進(jìn)入當(dāng)前頁(yè)面不執(zhí)行
      // 注:此方法在iOS手勢(shì)返回時(shí),不執(zhí)行此處
      logPrint('從其他頁(yè)面返回到${widget.runtimeType}頁(yè)');
    } else {
      // 離開(kāi)當(dāng)前頁(yè)面或退出當(dāng)前頁(yè)面時(shí)執(zhí)行
      logPrint('離開(kāi)或退出${widget.runtimeType}頁(yè)');
    }
    super.deactivate();
  }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容