@@ -173,11 +173,11 @@ steps:
173173
174174 part 'gemini.g.dart';
175175
176- @riverpod
176+ @Riverpod(keepAlive: true)
177177 Future<FirebaseApp> firebaseApp(Ref ref) =>
178178 Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
179179
180- @riverpod
180+ @Riverpod(keepAlive: true)
181181 Future<GenerativeModel> geminiModel(Ref ref) async {
182182 await ref.watch(firebaseAppProvider.future);
183183
@@ -245,7 +245,7 @@ steps:
245245 }
246246 }
247247
248- @riverpod
248+ @Riverpod(keepAlive: true)
249249 GeminiChatService geminiChatService(Ref ref) => GeminiChatService(ref);
250250 - name : Run build_runner
251251 path : colorist
@@ -448,7 +448,7 @@ steps:
448448
449449 part 'system_prompt.g.dart';
450450
451- @riverpod
451+ @Riverpod(keepAlive: true)
452452 Future<String> systemPrompt(Ref ref) =>
453453 rootBundle.loadString('assets/system_prompt.md');
454454 - name : Patch lib/providers/gemini.dart
@@ -465,7 +465,7 @@ steps:
465465 part 'gemini.g.dart';
466466
467467 @@ -19,9 +20,11 @@ Future<FirebaseApp> firebaseApp(Ref ref) =>
468- @riverpod
468+ @Riverpod(keepAlive: true)
469469 Future<GenerativeModel> geminiModel(Ref ref) async {
470470 await ref.watch(firebaseAppProvider.future);
471471 + final systemPrompt = await ref.watch(systemPromptProvider.future);
@@ -526,7 +526,7 @@ steps:
526526 ];
527527 }
528528
529- @riverpod
529+ @Riverpod(keepAlive: true)
530530 GeminiTools geminiTools(Ref ref) => GeminiTools(ref);
531531 - name : Patch lib/providers/gemini.dart
532532 path : colorist/lib/providers/gemini.dart
@@ -723,7 +723,7 @@ steps:
723723 + }
724724 }
725725
726- @riverpod
726+ @Riverpod(keepAlive: true)
727727 - name : Run build_runner
728728 path : colorist
729729 dart : run build_runner build --delete-conflicting-outputs
@@ -751,17 +751,31 @@ steps:
751751
752752 import 'package:colorist_ui/colorist_ui.dart';
753753 import 'package:firebase_ai/firebase_ai.dart';
754- +import 'package:flutter_riverpod/legacy .dart';
754+ +import 'package:flutter_riverpod/flutter_riverpod .dart';
755755 import 'package:riverpod_annotation/riverpod_annotation.dart';
756756
757757 import '../providers/gemini.dart';
758- @@ -13,46 +14,41 @@ import 'gemini_tools.dart';
758+ @@ -13,46 +14,55 @@ import 'gemini_tools.dart';
759759
760760 part 'gemini_chat_service.g.dart';
761-
762- +final conversationStateProvider = StateProvider(
763- + (ref) => ConversationState.idle,
764- +);
761+
762+ +class ConversationStateNotifier extends Notifier<ConversationState> {
763+ + @override
764+ + ConversationState build() => ConversationState.idle;
765+ +
766+ + void busy() {
767+ + state = ConversationState.busy;
768+ + }
769+ +
770+ + void idle() {
771+ + state = ConversationState.idle;
772+ + }
773+ +}
774+ +
775+ +final conversationStateProvider =
776+ + NotifierProvider<ConversationStateNotifier, ConversationState>(
777+ + ConversationStateNotifier.new,
778+ + );
765779 +
766780 class GeminiChatService {
767781 GeminiChatService(this.ref);
@@ -784,7 +798,7 @@ steps:
784798 + final conversationStateNotifier = ref.read(
785799 + conversationStateProvider.notifier,
786800 + );
787- + conversationStateNotifier.state = ConversationState. busy;
801+ + conversationStateNotifier.busy() ;
788802 chatStateNotifier.addUserMessage(message);
789803 logStateNotifier.logUserText(message);
790804 final llmMessage = chatStateNotifier.createLlmMessage();
@@ -824,11 +838,11 @@ steps:
824838 }
825839 } catch (e, st) {
826840 logStateNotifier.logError(e, st: st);
827- @@ -63,6 +59,45 @@ class GeminiChatService {
841+ @@ -63,6 +73,44 @@ class GeminiChatService {
828842 );
829843 } finally {
830844 chatStateNotifier.finalizeMessage(llmMessage.id);
831- + conversationStateNotifier.state = ConversationState. idle;
845+ + conversationStateNotifier.idle() ;
832846 + }
833847 + }
834848 +
@@ -840,7 +854,6 @@ steps:
840854 + final chatStateNotifier = ref.read(chatStateProvider.notifier);
841855 + final logStateNotifier = ref.read(logStateProvider.notifier);
842856 + final blockText = block.text;
843- +
844857 + if (blockText != null) {
845858 + logStateNotifier.logLlmText(blockText);
846859 + chatStateNotifier.appendToMessage(llmMessageId, blockText);
@@ -922,7 +935,7 @@ steps:
922935
923936 import 'package:colorist_ui/colorist_ui.dart';
924937 import 'package:firebase_ai/firebase_ai.dart';
925- @@ -22 ,6 +23 ,10 @@ class GeminiChatService {
938+ @@ -36 ,6 +37 ,10 @@ class GeminiChatService {
926939 GeminiChatService(this.ref);
927940 final Ref ref;
928941
0 commit comments