action_broadcast 2.1.0 action_broadcast: ^2.1.0 copied to clipboard
一个简单的全局广播系统,类似于Android的本地广播
action_broadcast #
一个简单的全局广播系统,类似于Android的本地广播
Usage #
- 添加
action_broadcast
到 pubspec.yaml 文件. import 'package:action_broadcast/action_broadcast.dart';
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
中混入自动化管理StreamSubscription
的AutoCancelStreamMixin
以简化工作
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');