簡體   English   中英

Flutter | 如何監聽導航事件?

[英]Flutter | How to listen for navigation event?

在Flutter中,有沒有辦法監聽導航變化?

示例:在Widget A中觸發導航:

Navigator.of(context).pushNamed('/chat');

執行上述代碼時,我希望在Widget A的子級中觸發一個事件。 這可能嗎?

使用 RouteObserver:

final RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();

然后將此添加到根 materialApp 小部件:

MaterialApp(
      theme: ThemeData(),
      navigatorObservers: [routeObserver],
)

我們需要在每個可能被推送或彈出到路由堆棧的小部件中實現 RouteAware。

class Screen extends State<Screen3> with RouteAware{
...

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

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

  @override
  void didPush() {
    final route = ModalRoute.of(context).settings.name;
    print('didPush route: $route');
  }

  @override
  void didPopNext() {
    final route = ModalRoute.of(context).settings.name;
    print('didPopNext route: $route');
  }

  @override
  void didPushNext() {
    final route = ModalRoute.of(context).settings.name;
    print('didPushNext route: $route');
  }

  @override
  void didPop() {
    final route = ModalRoute.of(context).settings.name;
    print('didPop route: $route');
  }
...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM