event_bus.dart 813 B

123456789101112131415161718192021222324252627282930313233
  1. import 'dart:async';
  2. import 'package:event_bus/event_bus.dart';
  3. import 'package:get/get.dart';
  4. import '../app/modules/splittunneling/selectapp/controllers/splittunneling_selectapp_controller.dart';
  5. final EventBus eventBus = EventBus();
  6. mixin EventBusMixin on GetxController {
  7. final List<StreamSubscription> _subscriptions = [];
  8. /// 监听某种事件类型
  9. void listenEvent<T>(void Function(T event) handler) {
  10. final sub = eventBus.on<T>().listen(handler);
  11. _subscriptions.add(sub);
  12. }
  13. @override
  14. void onClose() {
  15. // 页面销毁时自动反注册
  16. for (final sub in _subscriptions) {
  17. sub.cancel();
  18. }
  19. _subscriptions.clear();
  20. super.onClose();
  21. }
  22. }
  23. class SplitTunnelingPageEvent {
  24. final SplitTunnelingMode mode;
  25. SplitTunnelingPageEvent({required this.mode});
  26. }