app-starlock/lib/talk/starChart/handle/other/talk_data_repository.dart

37 lines
931 B
Dart
Raw Normal View History

2024-12-13 14:30:33 +08:00
import 'dart:async';
2025-01-23 14:30:31 +08:00
import 'package:star_lock/talk/starChart/proto/talk_data.pb.dart';
2024-12-13 14:30:33 +08:00
class TalkDataRepository {
TalkDataRepository._() {
_talkDataStreamController = StreamController<TalkData>.broadcast(
onListen: () {
_isListening = true;
},
onCancel: () {
_isListening = false;
},
2025-04-16 14:16:27 +08:00
sync: false, // 改为同步模式以提高实时性
);
}
2024-12-13 14:30:33 +08:00
static final TalkDataRepository _instance = TalkDataRepository._();
static TalkDataRepository get instance => _instance;
late final StreamController<TalkData> _talkDataStreamController;
bool _isListening = false;
2024-12-13 14:30:33 +08:00
2025-04-16 14:16:27 +08:00
// 直接返回原始流,不做转换
Stream<TalkData> get talkDataStream => _talkDataStreamController.stream;
2024-12-13 14:30:33 +08:00
2025-02-21 15:55:35 +08:00
void addTalkData(TalkData talkData) {
if (_isListening) {
2025-02-21 15:55:35 +08:00
_talkDataStreamController.add(talkData);
}
2024-12-13 14:30:33 +08:00
}
void dispose() {
_talkDataStreamController.close();
}
}