|
- import 'package:flutter/material.dart';
- import 'dart:async';
- import 'package:provider/provider.dart';
-
- ///页面刷新通知
- class BaseChangeNotifier extends ChangeNotifier {
- StreamController pageController = StreamController.broadcast();
-
- static Map<String, String> hasKeys = Map();
-
- ///刷新通知方法
- void refresh() {
- pageController.add("refresh");
- notifyListeners();
- }
-
-
- void close() {
- pageController.close();
- }
-
- Stream get stream => pageController.stream;
-
- }
-
- enum EventType {
- refresh,
-
- ///刷新事件
- }
-
- ///页面刷新辅助类
- class RefreshListener {
- bool isListen = false;
- Map<String, String> hasKeys = Map();
- StreamSubscription streamSubscription;
- ///监听方法
- ///已废弃
- void _listen(BuildContext context, Function(String) refresh) {
- BaseChangeNotifier baseChangeNotifier;
- try {
- baseChangeNotifier = Provider.of<BaseChangeNotifier>(context);
- } catch (e, s) {
- print(e);
- print(s);
- throw Exception(
- "父页面或父控件必须添加 BaseChangeNotifier 的 Provide值才能使用RefreshListener对象");
- }
- if (!isListen && baseChangeNotifier != null) {
- isListen = true;
- streamSubscription = baseChangeNotifier.stream.listen((event) {
- if (refresh != null) {
- refresh(event);
- }
- });
- }
- }
-
- ///监听构造
- void listen(BuildContext context, Function(String) refresh) {
-
- BaseChangeNotifier baseChangeNotifier;
- try {
- baseChangeNotifier = Provider.of<BaseChangeNotifier>(context);
- } catch (e, s) {
- print(e);
- print(s);
- }
- if (!isListen && baseChangeNotifier != null) {
- isListen = true;
- streamSubscription= baseChangeNotifier.stream.listen((event) {
- if (refresh != null) {
- refresh(event);
- }
- });
- }
- }
-
- ///关闭监听
- void close() {
- if (streamSubscription != null) {
- streamSubscription?.cancel();
- }
- }
- }
|