diff --git a/lib/main.dart b/lib/main.dart index 0ef8288e..34bf7e9c 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -77,6 +77,7 @@ import 'package:moxxyv2/ui/service/data.dart'; import 'package:moxxyv2/ui/service/progress.dart'; import 'package:moxxyv2/ui/service/read.dart'; import 'package:moxxyv2/ui/service/sharing.dart'; +import 'package:moxxyv2/ui/theme.dart'; import 'package:page_transition/page_transition.dart'; void setupLogging() { @@ -293,9 +294,15 @@ class MyAppState extends State with WidgetsBindingObserver { title: 'Moxxy', theme: ThemeData( colorScheme: light, + extensions: [ + getMoxxyThemeData(Brightness.light), + ], ), darkTheme: ThemeData( colorScheme: dark, + extensions: [ + getMoxxyThemeData(Brightness.dark), + ], ), navigatorKey: widget.navigationKey, onGenerateRoute: (settings) { diff --git a/lib/ui/pages/conversation/conversation.dart b/lib/ui/pages/conversation/conversation.dart index 22ebf8e7..71b1cc07 100644 --- a/lib/ui/pages/conversation/conversation.dart +++ b/lib/ui/pages/conversation/conversation.dart @@ -367,7 +367,10 @@ class ConversationPageState extends State Widget build(BuildContext context) { final maxWidth = MediaQuery.of(context).size.width * 0.6; return PopScope( - canPop: !_keyboardController.currentData.visible && !_keyboardController.currentData.showWidget && !_conversationController.messagingController.isRecordingNotifier.value, + canPop: !_keyboardController.currentData.visible && + !_keyboardController.currentData.showWidget && + !_conversationController + .messagingController.isRecordingNotifier.value, onPopInvoked: (didPop) { if (_keyboardController.currentData.visible) { // If the keyboard is open, dismiss it. diff --git a/lib/ui/pages/crop.dart b/lib/ui/pages/crop.dart index d77fe2b0..8a08e97a 100644 --- a/lib/ui/pages/crop.dart +++ b/lib/ui/pages/crop.dart @@ -82,7 +82,7 @@ class CropPage extends StatelessWidget { return PopScope( onPopInvoked: (_) { context.read().add(ResetImageEvent()); - }, + }, child: SafeArea( child: state.image != null ? _buildImageBody(context, state) diff --git a/lib/ui/pages/home/accounts.dart b/lib/ui/pages/home/accounts.dart index d49acb8d..efb315c6 100644 --- a/lib/ui/pages/home/accounts.dart +++ b/lib/ui/pages/home/accounts.dart @@ -123,7 +123,9 @@ class AccountsBottomModal extends StatelessWidget { final cubit = context.read(); final accounts = cubit.state.accounts; final extent = clampDouble( - ((accounts.length + 1) * AccountListTile.height + mq.textScaler.scale(20)) / mq.size.height, + ((accounts.length + 1) * AccountListTile.height + + mq.textScaler.scale(20)) / + mq.size.height, 0, 0.9, ); diff --git a/lib/ui/pages/settings/appearance/cropbackground.dart b/lib/ui/pages/settings/appearance/cropbackground.dart index d98c10dd..38bab9c3 100644 --- a/lib/ui/pages/settings/appearance/cropbackground.dart +++ b/lib/ui/pages/settings/appearance/cropbackground.dart @@ -93,7 +93,9 @@ class CropBackgroundPageState extends State { canPop: !state.isWorking, onPopInvoked: (didPop) { if (didPop) { - context.read().add(CropBackgroundResetEvent()); + context + .read() + .add(CropBackgroundResetEvent()); } }, child: SafeArea( diff --git a/lib/ui/theme.dart b/lib/ui/theme.dart index 79a51f7a..4b073581 100644 --- a/lib/ui/theme.dart +++ b/lib/ui/theme.dart @@ -89,6 +89,34 @@ MaterialStateProperty _makeEnabledDisabledProperty( }); } +/// Helper function to construct the ThemeData extension for Moxxy-specific theming. +// TODO(Unknown): Remove once we have an actual design for everything +MoxxyThemeData getMoxxyThemeData(Brightness brightness) { + if (brightness == Brightness.dark) { + return const MoxxyThemeData( + conversationTextFieldColor: conversationTextFieldColorDark, + profileFallbackBackgroundColor: profileFallbackBackgroundColorDark, + profileFallbackTextColor: profileFallbackTextColorDark, + bubbleQuoteInTextFieldColor: bubbleQuoteInTextFieldColorDark, + bubbleQuoteInTextFieldTextColor: bubbleQuoteInTextFieldTextColorDark, + conversationTextFieldHintTextColor: textFieldHintTextColorDark, + conversationTextFieldTextColor: textFieldTextColorDark, + conversationOverlayTextColor: conversationOverlayButtonTextColor, + ); + } else { + return const MoxxyThemeData( + conversationTextFieldColor: conversationTextFieldColorLight, + profileFallbackBackgroundColor: profileFallbackBackgroundColorLight, + profileFallbackTextColor: profileFallbackTextColorLight, + bubbleQuoteInTextFieldColor: bubbleQuoteInTextFieldColorLight, + bubbleQuoteInTextFieldTextColor: bubbleQuoteInTextFieldTextColorLight, + conversationTextFieldHintTextColor: textFieldHintTextColorLight, + conversationTextFieldTextColor: textFieldTextColorLight, + conversationOverlayTextColor: conversationOverlayButtonTextColor, + ); + } +} + // NOTE: Inspired by syphon's code: https://github.com/syphon-org/syphon/blob/dev/lib/global/themes.dart ThemeData getThemeData(BuildContext context, Brightness brightness) { return ThemeData( @@ -143,28 +171,7 @@ ThemeData getThemeData(BuildContext context, Brightness brightness) { ), extensions: [ - if (brightness == Brightness.dark) - const MoxxyThemeData( - conversationTextFieldColor: conversationTextFieldColorDark, - profileFallbackBackgroundColor: profileFallbackBackgroundColorDark, - profileFallbackTextColor: profileFallbackTextColorDark, - bubbleQuoteInTextFieldColor: bubbleQuoteInTextFieldColorDark, - bubbleQuoteInTextFieldTextColor: bubbleQuoteInTextFieldTextColorDark, - conversationTextFieldHintTextColor: textFieldHintTextColorDark, - conversationTextFieldTextColor: textFieldTextColorDark, - conversationOverlayTextColor: conversationOverlayButtonTextColor, - ) - else - const MoxxyThemeData( - conversationTextFieldColor: conversationTextFieldColorLight, - profileFallbackBackgroundColor: profileFallbackBackgroundColorLight, - profileFallbackTextColor: profileFallbackTextColorLight, - bubbleQuoteInTextFieldColor: bubbleQuoteInTextFieldColorLight, - bubbleQuoteInTextFieldTextColor: bubbleQuoteInTextFieldTextColorLight, - conversationTextFieldHintTextColor: textFieldHintTextColorLight, - conversationTextFieldTextColor: textFieldTextColorLight, - conversationOverlayTextColor: conversationOverlayButtonTextColor, - ), + getMoxxyThemeData(brightness), ], ); } diff --git a/lib/ui/widgets/context_menu.dart b/lib/ui/widgets/context_menu.dart index a25b26b0..f0e4f063 100644 --- a/lib/ui/widgets/context_menu.dart +++ b/lib/ui/widgets/context_menu.dart @@ -64,7 +64,9 @@ class ContextMenu extends StatelessWidget { /// Computes the height of the context menu, given the number of items. static double computeHeight(BuildContext context, int numberItems) { - return 2 * pxToLp(24) + numberItems * (pxToLp(48) + MediaQuery.of(context).textScaler.scale(32)); + return 2 * pxToLp(24) + + numberItems * + (pxToLp(48) + MediaQuery.of(context).textScaler.scale(32)); } @override