flutter刷新页面数据,页面跳转

3 篇文章 0 订阅
3 篇文章 0 订阅

flutter刷新页面数据,页面跳转

需求

从A页面进入详情页面B,B页面经过逻辑操作导致数据更改,当回到A页面时,需要更改A页面的数据项,有如下办法:

  1. 返回A页面直接刷新,用户体验很差
  2. 通过监听手势实现Navigator.of(context).pop(),很抱歉,我没找到监听手势的方法,通过按钮倒是可以实现,但是总不可能取消手势动作,用户习惯我们无法预知。
  3. 通过Stream实现消息订阅和跨组件通知。

Stream实现消息订阅和跨组件通知

第一步:建立通信类

StreamController<WorkEventBean> workBeanStream = StreamController.broadcast();

class WorkEventBean{
  int index;
  dynamic data;

  WorkEventBean(this.index, this.data);
}

第二步:在需要数据更改的页面监听通信

 // 消息订阅监听对象
  StreamSubscription _streamSubscription;
  
  @override
  void initState() {
    super.initState();

    // 添加消息监听
    _streamSubscription = workBeanStream.stream.listen((WorkEventBean event) {
        
      if (event.index != null) {
          // 这里主要看你的代码逻辑是什么样的,主要是寻找到目标数据,将该数据替换成传输过来的数据项
          // 如果是List数据,也可以通过for循环再判断获取
          if (widget.workBean.id == event.index) {
              // 替换数据 widget.workBean即目标数据项,根据实际自行更改
            widget.workBean = event.data;
            setState(() {});
          }
      }
    });
  }

第三步:通过通信类通知其他页面更改数据

// 你前面的逻辑导致的_workBean的数据更改
// widget.id可以是数据项的唯一id,也可以是List的下标索引,根据实际需要传值
........
workBeanStream.add(WorkEventBean(widget.id, _workBean));
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值