diff --git a/lib/pangea/toolbar/reading_assistance_input_row/reading_assistance_input_bar.dart b/lib/pangea/toolbar/reading_assistance_input_row/reading_assistance_input_bar.dart index 3b0e0f836..0ae9f93c5 100644 --- a/lib/pangea/toolbar/reading_assistance_input_row/reading_assistance_input_bar.dart +++ b/lib/pangea/toolbar/reading_assistance_input_row/reading_assistance_input_bar.dart @@ -48,6 +48,10 @@ class ReadingAssistanceInputBarState extends State { return const SizedBox(); // return ReactionsPicker(controller); } else { + final activityType = overlayController.toolbarMode.associatedActivityType; + final activityCompleted = activityType != null && + overlayController.isPracticeActivityDone(activityType); + switch (overlayController.toolbarMode) { case MessageMode.messageSpeechToText: case MessageMode.practiceActivity: @@ -57,6 +61,7 @@ class ReadingAssistanceInputBarState extends State { content = overlayController.isTotallyDone ? Text( L10n.of(context).allDone, + style: Theme.of(context).textTheme.bodyLarge, textAlign: TextAlign.center, ) : Text( @@ -80,19 +85,26 @@ class ReadingAssistanceInputBarState extends State { case MessageMode.wordEmoji: case MessageMode.wordMeaning: case MessageMode.listening: - if (target != null) { + if (target == null || activityCompleted) { + content = Text( + L10n.of(context).allDone, + style: Theme.of(context).textTheme.bodyLarge, + textAlign: TextAlign.center, + ); + } else { content = PracticeActivityCard( targetTokensAndActivityType: target, overlayController: overlayController, ); - } else { - content = Text( - L10n.of(context).allDone, - textAlign: TextAlign.center, - ); } case MessageMode.wordMorph: - if (target != null) { + if (activityCompleted) { + content = Text( + L10n.of(context).allDone, + style: Theme.of(context).textTheme.bodyLarge, + textAlign: TextAlign.center, + ); + } else if (target != null) { content = PracticeActivityCard( targetTokensAndActivityType: target, overlayController: overlayController, @@ -123,20 +135,17 @@ class ReadingAssistanceInputBarState extends State { child: Container( padding: const EdgeInsets.all(8.0), alignment: Alignment.center, - constraints: BoxConstraints( + constraints: const BoxConstraints( minHeight: minContentHeight, maxHeight: AppConfig.readingAssistanceInputBarHeight, - maxWidth: overlayController.maxWidth, ), - child: AnimatedSize( - duration: const Duration( - milliseconds: AppConfig.overlayAnimationDuration, - ), - child: Scrollbar( - thumbVisibility: true, + child: Scrollbar( + thumbVisibility: true, + controller: _scrollController, + child: SingleChildScrollView( controller: _scrollController, - child: SingleChildScrollView( - controller: _scrollController, + child: SizedBox( + width: overlayController.maxWidth, child: barContent(context), ), ), diff --git a/lib/pangea/toolbar/widgets/message_selection_overlay.dart b/lib/pangea/toolbar/widgets/message_selection_overlay.dart index 503f808cf..f0e40632f 100644 --- a/lib/pangea/toolbar/widgets/message_selection_overlay.dart +++ b/lib/pangea/toolbar/widgets/message_selection_overlay.dart @@ -344,29 +344,19 @@ class MessageOverlayController extends State bool get isPracticeComplete => isTranslationUnlocked; - bool get isEmojiDone => - practiceSelection - ?.activities(ActivityTypeEnum.emoji) - .every((a) => a.isComplete) == + bool isPracticeActivityDone(ActivityTypeEnum activityType) => + practiceSelection?.activities(activityType).every((a) => a.isComplete) == true; + bool get isEmojiDone => isPracticeActivityDone(ActivityTypeEnum.emoji); + bool get isMeaningDone => - practiceSelection - ?.activities(ActivityTypeEnum.wordMeaning) - .every((a) => a.isComplete) == - true; + isPracticeActivityDone(ActivityTypeEnum.wordMeaning); bool get isListeningDone => - practiceSelection - ?.activities(ActivityTypeEnum.wordFocusListening) - .every((a) => a.isComplete) == - true; + isPracticeActivityDone(ActivityTypeEnum.wordFocusListening); - bool get isMorphDone => - practiceSelection - ?.activities(ActivityTypeEnum.morphId) - .every((a) => a.isComplete) == - true; + bool get isMorphDone => isPracticeActivityDone(ActivityTypeEnum.morphId); /// you have to complete one of the mode mini-games to unlock translation bool get isTranslationUnlocked =>