Flutter event_busの基本的な使い方(足で読んでも書くことができます)

Flutter event_busの基本的な使い方(足で読んでも書くことができます)

原文:@ As.Kai
ブログアドレス:https://blog.csdn.net/qq_42362997
以下の内容が参考になりましたら、よろしくお願いします〜

まず、最も基本的な必要条件は依存関係をインポートします。

event_bus:^ 1.1.1
最新のpubバージョンクリックして確認
この記事では、サブスクライバーがログインしてすべてのパブリッシャーに通知するかどうかを確認します。
実装シナリオ:ユーザーのログインステータスを監視する

メイントピックにステップインします。

使用する前に:

event_busは、
パブリッシャー/サブスクライバーに分割されたイベントバスを介して通信できます。パブリッシャーはイベントをトリガーでき、サブスクライバーはイベントをリッスン
できますこれにより、オブジェクトを追跡するリスナーを明示的に定義しなくても、オブジェクトが相互に通信および対話できます。

全体として
、非同期処理を必要としないSharedPreferences、およびmain関数に登録する必要がないプロバイダーとして理解できます。
これは個人的な理解です。理解は人によって異なります。誤解を招くエラーがある場合は、送信できます。私にメッセージ。

次に、最も基本的なevent_busの使用方法について説明しましょう。

プロジェクトのデモに入ります。
最初に、現在のプロジェクトのevent_busツールクラスを作成する必要があります
。event_bus_util.dart:

import 'package:event_bus/event_bus.dart';

EventBus eventBus = new EventBus();
//用户是否注册
class UserIsLogin{
  final bool isLogin;
  UserLoggedInEvent({this.isLogin});
}

最初のページに、現在のログインステータスを表示するテキストを配置し、
次に新しいページにジャンプするボタンを配置します
。two.dart初期化メソッドで、event_busに書き込んだユーザーがログに記録されるかどうかをサブスクライブしましょう。に

String test = '当前登录状态:';

@override
void initState() {
  // TODO: implement initState
  super.initState();
  eventBus.on<UserLoggedInEvent>().listen((event) {
    if(event.isLogin){
      print('true');
      test = '用户已登录';
    }else{
      print('false');
      test = '用户未登录';
    }
    setState((){});
  });
}
@override
Widget build(BuildContext context) {
  return new Scaffold(
    appBar: new AppBar(
      title: new Text('aaa'),
    ),
//event_bus Demo
body: new Column(
  children: [
    new Text(test),
    new GestureDetector(
      onTap: () {
        Navigator.push(context, new MaterialPageRoute(builder: (context){
          return Two();
        }));
      },
      child: new Text('第二个页面'),
    )
  ],
),
);

two.dart:
2ページ目では、主にパブリッシャーのトリガーイベントを
実行します.2つのボタンを配置します。1つはユーザーがログインするためのもので、もう1つはユーザーがログインしないためのものです。

@override
Widget build(BuildContext context) {
  return new Scaffold(
    appBar: new AppBar(
      title: new Text('two'),
    ),
    body: new Column(
      children: [
        new GestureDetector(
          onTap: (){
            print('onTap()');
            eventBus.fire(UserLoggedInEvent(isLogin: false));
          },
          child: new Text('用户未登录'),
        ),
        new GestureDetector(
          onTap: (){
            print('onTap()');
            eventBus.fire(UserLoggedInEvent(isLogin: true));
          },
          child: new Text('用户登录'),
        ),
      ],
    )
  );
}

eventBus.fire(UserLoggedInEvent(isLogin:false));
eventBus.fire(UserLoggedInEvent(isLogin:true));

パブリッシャーをクリックしてイベントをトリガーします

フラッターランを実行して効果を確認してください!

最後に、親指を立ててください。

私に従って、一緒に成長してください!
@ As.Kai

おすすめ

転載: blog.csdn.net/qq_42362997/article/details/114023763