Flutter跨組件通訊event_bus

Flutter中經常使用event_bus實現跨頁面?zhèn)鬟f數據,其核心是基于Dart Streams(流)。event_bus是一個典型的采用訂閱發(fā)布模式設計,包含發(fā)布者和訂閱者兩種角色,可以通過事件總線來觸發(fā)事件和監(jiān)聽事件。

使用

安裝

event_bus: ^1.1.0

創(chuàng)建EventBus

import 'package:event_bus/event_bus.dart';
/// 創(chuàng)建EventBus
EventBus eventBus = EventBus();

定義事件UpdateAppEvent

/// 更新App版本事件
class UpdateAppEvent {

  final String from;
  final String version;
  final String title;
  final List description;
  final bool forcedUpdate;
  final String link;

  UpdateAppEvent(this.from, this.version, this.title, this.description, this.forcedUpdate, this.link);

  @override
  String toString() {
    return "UpdateAppEvent {from: $from, version: $version, title: $title, description: $description, forcedUpdate: $forcedUpdate, link: $link}";
  }
}

注冊事件監(jiān)聽器

import 'dart:async';

   /// 監(jiān)聽版本檢查事件
 StreamSubscription  _busSubscription =  eventBus.on<UpdateAppEvent>().listen((event) {
      updateAppDialog.show(context, event);
    });

觸發(fā)訂閱的事件

 eventBus.fire(
      UpdateAppEvent(
        pageHome,
        remoteVersion,
        title,
        remoteDescription,
        forcedUpdate,
        link,
      ),
    );

銷毀已訂閱事件

  @override
  void dispose() {
    _busSubscription.cancel();
    super.dispose();
  }
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容