From 7f2b3379d4218c8bda386187bf538dd788e3ebbf Mon Sep 17 00:00:00 2001 From: Guilherme Girotto Date: Wed, 17 Nov 2021 16:13:58 -0300 Subject: [PATCH] Updates theme and `RichTextEditingController` references (rebase) --- lib/application/widgets/theme/memo_terminal.dart | 15 ++++++++------- .../widgets/theme/terminal_window.dart | 2 +- .../widgets/theme/memo_terminal_test.dart | 6 ++++-- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/lib/application/widgets/theme/memo_terminal.dart b/lib/application/widgets/theme/memo_terminal.dart index 6d95e14be..05746dd0f 100644 --- a/lib/application/widgets/theme/memo_terminal.dart +++ b/lib/application/widgets/theme/memo_terminal.dart @@ -1,10 +1,11 @@ import 'package:flutter/material.dart'; -import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:layoutr/common_layout.dart'; import 'package:memo/application/constants/dimensions.dart' as dimens; import 'package:memo/application/constants/images.dart' as images; import 'package:memo/application/constants/strings.dart' as strings; +import 'package:memo/application/hooks/rich_text_field_controller_hook.dart'; import 'package:memo/application/theme/theme_controller.dart'; import 'package:memo/application/utils/bottom_sheet.dart'; import 'package:memo/application/widgets/theme/custom_button.dart'; @@ -14,7 +15,7 @@ import 'package:memo/application/widgets/theme/terminal_window.dart'; /// A terminal-styled component that presents a `Memo` question and answer that can be updated. /// /// Use [questionController] and [answerController] to control the Memo content being edited. -class MemoTerminal extends ConsumerWidget { +class MemoTerminal extends HookConsumerWidget { const MemoTerminal({ required this.memoIndex, this.questionController, @@ -27,10 +28,10 @@ class MemoTerminal extends ConsumerWidget { final int memoIndex; /// Controls the `Memo` question content. - final TextEditingController? questionController; + final RichTextFieldController? questionController; /// Controls the `Memo` answer content. - final TextEditingController? answerController; + final RichTextFieldController? answerController; /// Triggers when the current memo should be removed from the Collection Memos. final VoidCallback? onRemove; @@ -39,10 +40,10 @@ class MemoTerminal extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - final theme = useTheme(ref); + final theme = ref.watch(themeController); final textTheme = Theme.of(context).textTheme; - final questionController = this.questionController ?? useTextEditingController(); + final questionController = this.questionController ?? useRichTextEditingController(); final questionTitle = Text( strings.updateMemoQuestionTitle(memoIndex), style: textTheme.bodyText1?.copyWith(color: theme.secondarySwatch), @@ -60,7 +61,7 @@ class MemoTerminal extends ConsumerWidget { ], ); - final answerController = this.answerController ?? useTextEditingController(); + final answerController = this.answerController ?? useRichTextEditingController(); final answerTitle = Text( strings.updateMemoAnswer, style: textTheme.bodyText1?.copyWith(color: theme.primarySwatch), diff --git a/lib/application/widgets/theme/terminal_window.dart b/lib/application/widgets/theme/terminal_window.dart index 211955d49..8aa120cd1 100644 --- a/lib/application/widgets/theme/terminal_window.dart +++ b/lib/application/widgets/theme/terminal_window.dart @@ -44,7 +44,7 @@ class _TerminalHeader extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - final theme = useTheme(ref); + final theme = ref.watch(themeController); final pseudoActions = List.generate( _actionsAmount, diff --git a/test/application/widgets/theme/memo_terminal_test.dart b/test/application/widgets/theme/memo_terminal_test.dart index 1e7570345..d9ddc524b 100644 --- a/test/application/widgets/theme/memo_terminal_test.dart +++ b/test/application/widgets/theme/memo_terminal_test.dart @@ -4,6 +4,7 @@ import 'package:memo/application/constants/strings.dart' as strings; import 'package:memo/application/widgets/theme/custom_button.dart'; import 'package:memo/application/widgets/theme/destructive_button.dart'; import 'package:memo/application/widgets/theme/memo_terminal.dart'; +import 'package:memo/application/widgets/theme/rich_text_field.dart'; import 'package:mocktail/mocktail.dart'; import '../../../utils/fakes.dart'; @@ -14,8 +15,9 @@ void main() { const hugeFakeText = r'A\nHuge\nFake\nText\nThat\nWill\nExpand\nThe\nRich\nText\nEditor'; const encodedText = '[{"insert":"$hugeFakeText\\n"}]'; final scrollController = ScrollController(); - final questionController = TextEditingController(text: encodedText); - final answerController = TextEditingController(text: encodedText); + final questionController = RichTextFieldController(richText: encodedText, plainText: hugeFakeText); + final answerController = RichTextFieldController(richText: encodedText, plainText: hugeFakeText); + // Wraps `MemoTerminal` in a tiny SizedBox to force its content to be scrollable final memoTerminal = SizedBox.square( dimension: 320,