美文网首页Flutter学习
flutter实现监听路由触发方法

flutter实现监听路由触发方法

作者: 小小的开发人员 | 来源:发表于2019-12-06 12:10 被阅读0次

背景

需求:进入其他页面后,点击Tab返回到当前active,即触发一次拉取最新数据的请求。
这是一个很常见的功能,写过vue的同学 ,采用watch监听路由可以很容易实现,flutter在生命周期内也可以实现监听路由的功能。

flutter生命周期

  • initState:当Widget第一次插入到Widget树时会被调用,对于每一个State对象,Flutter framework只会调用一次该回调,所以,通常在该回调中做一些一次性的操作,如状态初始化、订阅子树的事件通知等。
  • didChangeDependencies():当State对象的依赖发生变化时会被调用。
  • build():Widget子树的,会在如下场景被调用:
    1. 在调用initState()之后。
    2. 在调用didUpdateWidget()之后。
    3. 在调用setState()之后。
    4. 在调用didChangeDependencies()之后。
    5. 在State对象从树中一个位置移除后(会调用deactivate)又重新插入到树的其它位置之后。
  • reassemble():此回调是专门为了开发调试而提供的,在热重载(hot reload)时会被调用,此回调在Release模式下永远不会被调用。
  • didUpdateWidget():在widget重新构建时,Flutter framework会调用Widget.canUpdate来检测Widget树中同一位置的新旧节点,然后决定是否需要更新,如果Widget.canUpdate返回true则会调用此回调。正如之前所述,Widget.canUpdate会在新旧widget的key和runtimeType同时相等时会返回true,也就是说在在新旧widget的key和runtimeType同时相等时。didUpdateWidget()就会被调用。
  • deactivate():当State对象从树中被移除时,会调用此回调。在一些场景下,Flutter framework会将State对象重新插到树中,如果移除后没有重新插入到树中则紧接着会调用dispose()方法。
  • dispose():当State对象从树中被永久移除时调用;通常在此回调中释放资源。

StatefulWidget生命周期如图所示:

上面简单介绍了生命周期,可以看到deactivate属性可以实现路由监听的功能,可以这么做:

 @override
  void deactivate() {
    super.deactivate();
    // 进入页面重新拉取学习时长
    if (ModalRoute.of(context).isCurrent && this._isLogined) {
      eventManager.eventBus.fire(getStudyDuration(pageUser));
    }
  }

相关文章

  • flutter实现监听路由触发方法

    背景 需求:进入其他页面后,点击Tab返回到当前active,即触发一次拉取最新数据的请求。这是一个很常见的功能,...

  • models的数据请求时机

    在路由监听时候做触发的时机

  • 自己写一个vue-router

    路由工作流程 URL发生改变 触发监听事件,vue-router触发Window自带监听 改变vuerouter里...

  • vue3 路由跳转相关

    需求: 点击按钮实现页面跳转&&触发浏览器的回到上一页/下一页,页面和按钮效果实时变化。 方法: 监听路由变化,v...

  • Vue跳转同一路由,重新请求数据

    通过此种方式跳转路由,如果本身就在此路由中,会发现页面加载时,函数没有重新触发 解决方法: 监听$router的改...

  • flutter ValueNotifier 监听失败

    定义 监听 赋值:方法1,无法触发监听 赋值:方法2,可以触发监听 原理与iOS的kvo原理类似.list添加元素...

  • vue-9

    通过watch实现路由监听 导航守卫

  • KVO使用及实现原理

    KVO使用及实现原理 KVO使用 对属性进行监听 对属性的属性进行监听 容器监听 触发(手动触发,kvc赋值) 添...

  • Flutter监听路由返回

    前言我们通常有这样一个需求:点击修改用户信息需要跳转页面,修改完成以后返回之前的页面我们需要重新获取新的数据刷新修...

  • Flutter可滑动+自动滚动折线图

    使用框架syncfusion_flutter_charts,通过框架自带刷新方法结合手势监听实现滚动效果 直接上代...

网友评论

    本文标题:flutter实现监听路由触发方法

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