action_broadcast 3.0.2 copy "action_broadcast: ^3.0.2" to clipboard
action_broadcast: ^3.0.2 copied to clipboard

A simple global broadcast system, similar to Android's local broadcast.

action_broadcast #

pub package

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

Usage #

Listen #

  • 传统使用方式

 const actionUserLogin = 'actionUserLogin';
 const actionUserInfoChange = 'actionUserInfoChange';
 const actionLogout = 'actionLogout';
 
 // in State

 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([actionUserLogin]).listen((intent) {
        setState(() {
          // do something
        });
      },
    );
    
    yield registerSingleReceiver(actionLogout).listen((intent) {
        setState(() {
          // do something
        });
      },
    );
  }

}

Notify #

sendBroadcast(actionUserLogin, data : 'accountId');

sendBroadcast(actionUserInfoChang, extras: {'nickname' : 'asdasd'});

sendBroadcast(actionLogout);

4
likes
140
pub points
85%
popularity

Publisher

unverified uploader

A simple global broadcast system, similar to Android's local broadcast.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

flutter

More

Packages that depend on action_broadcast