feat: 重构会话管理与提醒通知系统
This commit is contained in:
@@ -52,6 +52,7 @@ class HomeScreen extends StatefulWidget {
|
||||
final VoiceRecorder? voiceRecorder;
|
||||
final Future<String> Function(String filePath)? onTranscribeAudio;
|
||||
final ChatBloc? chatBloc;
|
||||
final String? initialUserId;
|
||||
final bool autoLoadHistory;
|
||||
final List<XFile> initialSelectedImages;
|
||||
|
||||
@@ -60,6 +61,7 @@ class HomeScreen extends StatefulWidget {
|
||||
this.voiceRecorder,
|
||||
this.onTranscribeAudio,
|
||||
this.chatBloc,
|
||||
this.initialUserId,
|
||||
this.autoLoadHistory = true,
|
||||
this.initialSelectedImages = const [],
|
||||
});
|
||||
@@ -119,7 +121,10 @@ class _HomeScreenState extends State<HomeScreen>
|
||||
duration: const Duration(milliseconds: _rippleDurationMs),
|
||||
);
|
||||
_selectedImages.addAll(widget.initialSelectedImages);
|
||||
if (widget.autoLoadHistory &&
|
||||
final initialUserId = widget.initialUserId?.trim();
|
||||
if (initialUserId != null && initialUserId.isNotEmpty) {
|
||||
unawaited(_chatBloc.switchUser(initialUserId));
|
||||
} else if (widget.autoLoadHistory &&
|
||||
_chatBloc.state.items.isEmpty &&
|
||||
!_chatBloc.state.isLoadingHistory) {
|
||||
_chatBloc.loadHistory();
|
||||
@@ -166,6 +171,20 @@ class _HomeScreenState extends State<HomeScreen>
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void didUpdateWidget(covariant HomeScreen oldWidget) {
|
||||
super.didUpdateWidget(oldWidget);
|
||||
final oldUserId = oldWidget.initialUserId?.trim();
|
||||
final newUserId = widget.initialUserId?.trim();
|
||||
if (oldUserId == newUserId) {
|
||||
return;
|
||||
}
|
||||
final normalized = (newUserId != null && newUserId.isNotEmpty)
|
||||
? newUserId
|
||||
: null;
|
||||
unawaited(_chatBloc.switchUser(normalized));
|
||||
}
|
||||
|
||||
@override
|
||||
void didPopNext() {
|
||||
unawaited(_inboxSyncStore.refreshSnapshot());
|
||||
|
||||
Reference in New Issue
Block a user