This commit is contained in:
Developer
2026-03-31 03:48:14 +08:00
parent 62729615b7
commit 888363785b
26 changed files with 219 additions and 808 deletions

View File

@@ -4,23 +4,22 @@
/// 最新变化: 新增 NetworkEventType.search 与 sendSearchEvent供诗词搜索页通知
import 'dart:async';
import 'package:flutter/foundation.dart';
/// 网络状态枚举
enum NetworkStatus {
idle, // 空闲
loading, // 加载中
success, // 成功
error, // 错误
idle, // 空闲
loading, // 加载中
success, // 成功
error, // 错误
}
/// 网络事件类型
enum NetworkEventType {
like, // 点赞操作
unlike, // 取消点赞
refresh, // 刷新操作
load, // 加载操作
search, // 诗词搜索完成
like, // 点赞操作
unlike, // 取消点赞
refresh, // 刷新操作
load, // 加载操作
search, // 诗词搜索完成
noteUpdate, // 笔记更新(新建/编辑/删除)
}
@@ -41,20 +40,21 @@ class NetworkEvent {
/// 网络监听服务
class NetworkListenerService {
static final NetworkListenerService _instance = NetworkListenerService._internal();
static final NetworkListenerService _instance =
NetworkListenerService._internal();
factory NetworkListenerService() => _instance;
NetworkListenerService._internal();
// 状态管理
NetworkStatus _status = NetworkStatus.idle;
final Map<String, bool> _loadingStates = {};
// 事件流控制器
final StreamController<NetworkEvent> _eventController =
final StreamController<NetworkEvent> _eventController =
StreamController<NetworkEvent>.broadcast();
// 状态流控制器
final StreamController<NetworkStatus> _statusController =
final StreamController<NetworkStatus> _statusController =
StreamController<NetworkStatus>.broadcast();
// 公开流
@@ -89,10 +89,7 @@ class NetworkListenerService {
/// 发送错误事件
void sendErrorEvent(NetworkEventType type, {String? errorMessage}) {
_updateStatus(NetworkStatus.error);
_eventController.add(NetworkEvent(
type: type,
errorMessage: errorMessage,
));
_eventController.add(NetworkEvent(type: type, errorMessage: errorMessage));
}
/// 发送点赞事件
@@ -131,7 +128,7 @@ class NetworkListenerService {
/// 方便其他类使用网络监听功能
mixin NetworkListenerMixin {
final NetworkListenerService _networkService = NetworkListenerService();
Stream<NetworkEvent> get networkEvents => _networkService.eventStream;
Stream<NetworkStatus> get networkStatus => _networkService.statusStream;
NetworkStatus get currentNetworkStatus => _networkService.currentStatus;