美文网首页
flutter中页面事件通知LiveData

flutter中页面事件通知LiveData

作者: 逍遥德道 | 来源:发表于2021-05-25 09:37 被阅读0次

Android中的LiveData可以在activity可见时回调,那我们可以根据生命周期函数自己创建在页面可见时的回调

因为flutter没有resume,pause,要先看下如何添加这两个生命周期文章在这里,有了这两个生命函数才能实现LiveData

typedef CallBack =void Function(T data);

class LiveDataCallBack {

final boolstick;

  intversion = -1;

  final LifecycleStatestate;

  final CallBackcallBack;

  LiveDataCallBack(

{this.stick:true, this.state, @required this.callBack});

}

class LiveData {

T_data;

  int_version = -1;

  List>_listeners = [];

  void removeListeners(LiveDataCallBack liveDataCallBack) {

_listeners.remove(liveDataCallBack);

  }

void addListeners(LiveDataCallBack listener) {

if (listener ==null || listener.callBack ==null) {

return;

    }

_listeners.add(listener);

    if (!listener.stick) {

listener.version =_version;

    }

if (listener.state ==null) {

_sendListener(listener);

return;

    }

listener.state.addListener((event) {

if (event == Event.ON_DISPOSE) {

_listeners.remove(listener);

return;

      }

if (event == Event.ON_PAUSE) {

return;

      }

_sendListener(listener);

    });

  }

_sendListener(LiveDataCallBack listener) {

if (listener.version >=_version) {

return;

    }

listener.version =_version;

    listener.callBack(_data);

  }

set data(T data) {

if (_data == data) {

return;

    }

_data = data;

    _version++;

    _dispatchingValue();

  }

void _dispatchingValue() {

_listeners.forEach((element) {

if (element.state ==null || element.state.isActive()) {

_sendListener(element);

      }

});

  }

}

LiveDataCallBack 第一个参数是否粘性数据,默认true,如何有数据在监听时立刻得到,第二个是我们添加生命周期,第三个是回调函数,如何生命周期函数不传在回调处使用setState在页面不处于显示时会报错,结构很简单

相关文章

  • flutter中页面事件通知LiveData

    Android中的LiveData可以在activity可见时回调,那我们可以根据生命周期函数自己创建在页面可见时...

  • Flutter单例模式

    借用Flutter事件总线的例子: 8.3 事件总线 在APP中,我们经常会需要一个广播机制,用以跨页面事件通知,...

  • EventBus使用

    1、前言 在APP中,我们经常会需要一个广播机制,用以跨页面事件通知,Flutter中我们可以使用event_bu...

  • Flutter EventBus消息总线

    1、前言 在APP中,我们经常会需要一个广播机制,用以跨页面事件通知,Flutter中我们可以使用event_bu...

  • Jetpact 之 LiveData

    LiveData和ViewModel的关系 在ViewModel中的数据发生变化是通知页面image.png当Vi...

  • 原生IOS与Flutter的交互

    1.IOS原生跳转flutter页面时的传值。在flutter页面初始化之前注册通知,在flutter页面初始化里...

  • Flutter(三十五)事件总线EventBus

    在Android原生中,有广播可以进行跨页面传递数据。Flutter中我们可以自定义一个事件总线,实现跨页面传递数...

  • Flutter 路由

    flutter 路由 页面跳转 在flutter中界面就是组件Flutter 中的路由通俗的讲就是页面跳转。在 F...

  • Flutter之EventBus消息总线

    EventBus事件总线 原生开发中,时常遇到通知或广播机制,应对需要跨页面的事件通知。作为移动端跨平台框架的Fl...

  • flutter跳转原生页面后的穿透问题

    现象:flutter页面通过present跳转原生页面后,原生页面上的点击会首先响应下面的flutter页面中的内...

网友评论

      本文标题:flutter中页面事件通知LiveData

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