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