美文网首页
Flutter中的viewWillAppear

Flutter中的viewWillAppear

作者: hyq1101 | 来源:发表于2023-04-19 18:26 被阅读0次

    在iOS原生开发中,如果我们从页面A push 到页面B,再从页面B pop回页面A时,想刷新页面A的数据的话,可以在viewWillAppear生命周期方法中进行处理。在Flutter中也想实现此需求的话可以使用全局路由监听对象。
    1、在main.dart中创建全局路由监听对象

    RouteObserver<PageRoute> routeObserver = RouteObserver<PageRoute>();
    
    image.png

    2、将全局路由监听对象传入MaterialApp的navigatorObservers属性里

    navigatorObservers: [routeObserver],
    
    image.png

    3、在需要使用的页面里的State混入RouteAware

    class _QLUserContentState extends State<QLUserContent> with RouteAware {
    
    image.png

    4、重写didChangeDependencies方法加入监听

    @override
    void didChangeDependencies() {
      // TODO: implement didChangeDependencies
      super.didChangeDependencies();
      routeObserver.subscribe(this, ModalRoute.of(context) as PageRoute);
    }
    

    5、页面dispose时销毁监听

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

    6、重写需要监听的事件方法

    // 1、Push到该页面时调用
    @override
    void didPush() {
        print('didPush');
    }
     
    // 2、Pop到该页面时调用
    @override
    void didPopNext() {
        print('didPopNext');
    }
     
    // 3、从该页面Push到其他页面时调用
    @override
    void didPushNext() {
        print('didPushNext');
    }
    
    // 4、该页面被Pop时调用
    @override
    void didPop() {
        print('didPop');
    }
    

    相关文章

      网友评论

          本文标题:Flutter中的viewWillAppear

          本文链接:https://www.haomeiwen.com/subject/uiuljdtx.html