action_broadcast

pub package

一个简单的全局广播系统,类似于Android的本地广播

Usage

Listen

  • 传统使用方式

 const actionUserLogin = 'actionUserLogin';
 const actionUserInfoChange = 'actionUserInfoChange';
 const actionLogout = 'actionLogout';

 StreamSubscription receiver;

 @override
 void initState() {
    super.initState();

    receiver = registerReceiver(['actionUserLogin','actionUserInfoChange','actionLogout']).listen((intent){
            switch(intent.action){
                case 'actionUserLogin': accountId = intent.data;
                             break;
                case 'actionUserInfoChang': nickname = intent['nickname'];
                             break;
                case 'actionLogout': Navigator.pop(context);
                             break;
            }
    });
 }

 @override
 void dispose(){
   receiver.cancel();
   super.dispose();
 }

  • State中混入自动化管理StreamSubscriptionAutoCancelStreamMixin以简化工作

class _ExampleState extends State<Example> with AutoCancelStreamMixin{

  @override
  Iterable<StreamSubscription> get registerSubscriptions sync* {
    yield registerReceiver([actionExample]).listen((intent) {
        setState(() {
          // do something
        });
      },
    );
  }

}

Notify

sendBroadcast(actionUserLogin,extras:{'accountId':'adc'});

sendBroadcast(actionUserInfoChang,data:'nickname');

Libraries

action_broadcast