diff --git a/lib/widgets/about/licenses.dart b/lib/widgets/about/licenses.dart index 752aecce5..d317996d9 100644 --- a/lib/widgets/about/licenses.dart +++ b/lib/widgets/about/licenses.dart @@ -128,7 +128,7 @@ class LicenseRow extends StatelessWidget { @override Widget build(BuildContext context) { final textTheme = Theme.of(context).textTheme; - final bodyTextStyle = textTheme.bodyText2!; + final bodyTextStyle = textTheme.bodyMedium!; final subColor = bodyTextStyle.color!.withOpacity(.6); return Padding( diff --git a/lib/widgets/collection/grid/list_details_theme.dart b/lib/widgets/collection/grid/list_details_theme.dart index e6bd16e8c..adbdcb2a1 100644 --- a/lib/widgets/collection/grid/list_details_theme.dart +++ b/lib/widgets/collection/grid/list_details_theme.dart @@ -29,8 +29,8 @@ class EntryListDetailsTheme extends StatelessWidget { final textScaleFactor = mq.textScaleFactor; final textTheme = Theme.of(context).textTheme; - final titleStyle = textTheme.bodyText2!; - final captionStyle = textTheme.caption!; + final titleStyle = textTheme.bodyMedium!; + final captionStyle = textTheme.bodySmall!; final titleLineHeight = (RenderParagraph( TextSpan(text: 'Fake Title', style: titleStyle), diff --git a/lib/widgets/common/action_mixins/feedback.dart b/lib/widgets/common/action_mixins/feedback.dart index a0694c98b..eff79b795 100644 --- a/lib/widgets/common/action_mixins/feedback.dart +++ b/lib/widgets/common/action_mixins/feedback.dart @@ -8,6 +8,7 @@ import 'package:aves/services/accessibility_service.dart'; import 'package:aves/theme/durations.dart'; import 'package:aves/theme/icons.dart'; import 'package:aves/widgets/common/action_mixins/overlay_snack_bar.dart'; +import 'package:aves/widgets/common/basic/animated_text.dart'; import 'package:aves/widgets/common/basic/circle.dart'; import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/viewer/entry_viewer_page.dart'; @@ -343,7 +344,8 @@ class _FeedbackMessageState extends State<_FeedbackMessage> with SingleTickerPro Widget build(BuildContext context) { final text = Text(widget.message); final theme = Theme.of(context); - final contentTextStyle = theme.snackBarTheme.contentTextStyle ?? ThemeData(brightness: theme.brightness).textTheme.subtitle1; + final contentTextStyle = theme.snackBarTheme.contentTextStyle ?? ThemeData(brightness: theme.brightness).textTheme.titleMedium!; + final timerChangeShadowColor = theme.colorScheme.primary; return _remainingDurationMillis == null ? text : Row( @@ -362,9 +364,25 @@ class _FeedbackMessageState extends State<_FeedbackMessage> with SingleTickerPro // progress color is provided by the caller, // because we cannot use the app context theme here foreground: widget.progressColor, - center: Text( + center: AnimatedText( '${(remainingDurationMillis / 1000).ceil()}', - style: contentTextStyle, + style: contentTextStyle.copyWith( + shadows: [ + Shadow( + color: timerChangeShadowColor.withOpacity(0), + blurRadius: 0, + ) + ], + ), + changedStyle: contentTextStyle.copyWith( + shadows: [ + Shadow( + color: timerChangeShadowColor, + blurRadius: 5, + ) + ], + ), + duration: context.read().formTextStyleTransition, ), ); }, diff --git a/lib/widgets/common/app_bar/app_bar_subtitle.dart b/lib/widgets/common/app_bar/app_bar_subtitle.dart index 2e09fe94c..a021b149c 100644 --- a/lib/widgets/common/app_bar/app_bar_subtitle.dart +++ b/lib/widgets/common/app_bar/app_bar_subtitle.dart @@ -66,7 +66,7 @@ class SourceStateSubtitle extends StatelessWidget { final theme = Theme.of(context); return DefaultTextStyle.merge( - style: theme.textTheme.caption!.copyWith(fontFeatures: const [FontFeature.disable('smcp')]), + style: theme.textTheme.bodySmall!.copyWith(fontFeatures: const [FontFeature.disable('smcp')]), child: ValueListenableBuilder( valueListenable: source.progressNotifier, builder: (context, progress, snapshot) { diff --git a/lib/widgets/common/basic/menu.dart b/lib/widgets/common/basic/menu.dart index ff589e4e6..d9b95d2a3 100644 --- a/lib/widgets/common/basic/menu.dart +++ b/lib/widgets/common/basic/menu.dart @@ -82,7 +82,7 @@ class _PopupMenuItemExpansionPanelState extends State { ); return DefaultTextStyle( - style: Theme.of(context).textTheme.bodyText2!, + style: Theme.of(context).textTheme.bodyMedium!, child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/widgets/common/basic/slider_list_tile.dart b/lib/widgets/common/basic/slider_list_tile.dart index 8997b687a..337e24e63 100644 --- a/lib/widgets/common/basic/slider_list_tile.dart +++ b/lib/widgets/common/basic/slider_list_tile.dart @@ -29,7 +29,7 @@ class SliderListTile extends StatelessWidget { ), ), child: DefaultTextStyle( - style: Theme.of(context).textTheme.subtitle1!, + style: Theme.of(context).textTheme.titleMedium!, child: Padding( padding: const EdgeInsets.only(top: 16, bottom: 8), child: Column( diff --git a/lib/widgets/common/identity/aves_caption.dart b/lib/widgets/common/identity/aves_caption.dart index ce40356bd..470357ab7 100644 --- a/lib/widgets/common/identity/aves_caption.dart +++ b/lib/widgets/common/identity/aves_caption.dart @@ -14,7 +14,7 @@ class AvesCaption extends StatelessWidget { @override Widget build(BuildContext context) { final theme = Theme.of(context); - final subtitleStyle = theme.textTheme.caption!; + final subtitleStyle = theme.textTheme.bodySmall!; final subtitleChangeShadowColor = theme.colorScheme.onPrimary; return AnimatedText( // provide key to refresh on theme brightness change diff --git a/lib/widgets/common/map/attribution.dart b/lib/widgets/common/map/attribution.dart index 57aaab097..2b50b7199 100644 --- a/lib/widgets/common/map/attribution.dart +++ b/lib/widgets/common/map/attribution.dart @@ -35,7 +35,7 @@ class Attribution extends StatelessWidget { selectable: true, styleSheet: MarkdownStyleSheet( a: TextStyle(color: theme.colorScheme.secondary), - p: theme.textTheme.caption!.merge(const TextStyle(fontSize: InfoRowGroup.fontSize)), + p: theme.textTheme.bodySmall!.merge(const TextStyle(fontSize: InfoRowGroup.fontSize)), ), onTapLink: (text, href, title) async { if (href != null) { diff --git a/lib/widgets/dialogs/entry_editors/rename_entry_set_dialog.dart b/lib/widgets/dialogs/entry_editors/rename_entry_set_dialog.dart index 14f8745be..01a99a31c 100644 --- a/lib/widgets/dialogs/entry_editors/rename_entry_set_dialog.dart +++ b/lib/widgets/dialogs/entry_editors/rename_entry_set_dialog.dart @@ -148,7 +148,7 @@ class _RenameEntrySetPageState extends State { children: [ Text( sourceName, - style: TextStyle(color: Theme.of(context).textTheme.caption!.color), + style: TextStyle(color: Theme.of(context).textTheme.bodySmall!.color), softWrap: false, overflow: TextOverflow.fade, maxLines: 1, diff --git a/lib/widgets/dialogs/filter_editors/cover_selection_dialog.dart b/lib/widgets/dialogs/filter_editors/cover_selection_dialog.dart index fd4e72cc3..281aac356 100644 --- a/lib/widgets/dialogs/filter_editors/cover_selection_dialog.dart +++ b/lib/widgets/dialogs/filter_editors/cover_selection_dialog.dart @@ -449,7 +449,7 @@ class _CoverSelectionDialogState extends State { }.fold('', (previousValue, element) => '$previousValue\n$element'); final para = RenderParagraph( - TextSpan(text: _optionLines, style: Theme.of(context).textTheme.subtitle1!), + TextSpan(text: _optionLines, style: Theme.of(context).textTheme.titleMedium!), textDirection: TextDirection.ltr, textScaleFactor: MediaQuery.textScaleFactorOf(context), )..layout(const BoxConstraints(), parentUsesSize: true); diff --git a/lib/widgets/dialogs/location_pick_dialog.dart b/lib/widgets/dialogs/location_pick_dialog.dart index 6879d8603..480f3d060 100644 --- a/lib/widgets/dialogs/location_pick_dialog.dart +++ b/lib/widgets/dialogs/location_pick_dialog.dart @@ -265,7 +265,7 @@ class _AddressRowState extends State<_AddressRow> { // addresses can include non-latin scripts with inconsistent line height, // which is especially an issue for relayout/painting of heavy Google map, // so we give extra height to give breathing room to the text and stabilize layout - height: Theme.of(context).textTheme.bodyText2!.fontSize! * context.select((mq) => mq.textScaleFactor) * 2, + height: Theme.of(context).textTheme.bodyMedium!.fontSize! * context.select((mq) => mq.textScaleFactor) * 2, child: ValueListenableBuilder( valueListenable: _addressLineNotifier, builder: (context, addressLine, child) { diff --git a/lib/widgets/filter_grids/common/covered_filter_chip.dart b/lib/widgets/filter_grids/common/covered_filter_chip.dart index a7d9d2d26..6436cb98a 100644 --- a/lib/widgets/filter_grids/common/covered_filter_chip.dart +++ b/lib/widgets/filter_grids/common/covered_filter_chip.dart @@ -167,7 +167,7 @@ class CoveredFilterChip extends StatelessWidget { ); } - Color _detailColor(BuildContext context) => Theme.of(context).textTheme.caption!.color!; + Color _detailColor(BuildContext context) => Theme.of(context).textTheme.bodySmall!.color!; Widget _buildDetails(BuildContext context, CollectionSource source, T filter) { final locale = context.l10n.localeName; diff --git a/lib/widgets/filter_grids/common/list_details_theme.dart b/lib/widgets/filter_grids/common/list_details_theme.dart index 1c0218661..774faff0f 100644 --- a/lib/widgets/filter_grids/common/list_details_theme.dart +++ b/lib/widgets/filter_grids/common/list_details_theme.dart @@ -33,9 +33,9 @@ class FilterListDetailsTheme extends StatelessWidget { final textScaleFactor = mq.textScaleFactor; final textTheme = Theme.of(context).textTheme; - final titleStyleBase = textTheme.bodyText2!; + final titleStyleBase = textTheme.bodyMedium!; final titleStyle = titleStyleBase.copyWith(fontSize: titleStyleBase.fontSize! * textScaleFactor); - final captionStyle = textTheme.caption!; + final captionStyle = textTheme.bodySmall!; final titleIconSize = AvesFilterChip.iconSize * textScaleFactor; final titleLineHeight = (RenderParagraph( diff --git a/lib/widgets/map/map_info_row.dart b/lib/widgets/map/map_info_row.dart index 2ae6b55ce..1bef21f85 100644 --- a/lib/widgets/map/map_info_row.dart +++ b/lib/widgets/map/map_info_row.dart @@ -110,7 +110,7 @@ class _AddressRowState extends State<_AddressRow> { // addresses can include non-latin scripts with inconsistent line height, // which is especially an issue for relayout/painting of heavy Google map, // so we give extra height to give breathing room to the text and stabilize layout - height: Theme.of(context).textTheme.bodyText2!.fontSize! * context.select((mq) => mq.textScaleFactor) * 2, + height: Theme.of(context).textTheme.bodyMedium!.fontSize! * context.select((mq) => mq.textScaleFactor) * 2, child: ValueListenableBuilder( valueListenable: _addressLineNotifier, builder: (context, addressLine, child) { diff --git a/lib/widgets/settings/common/collection_tile.dart b/lib/widgets/settings/common/collection_tile.dart index ef68ab0e1..abbe133c8 100644 --- a/lib/widgets/settings/common/collection_tile.dart +++ b/lib/widgets/settings/common/collection_tile.dart @@ -39,12 +39,12 @@ class SettingsCollectionTile extends StatelessWidget { children: [ Text( l10n.settingsCollectionTile, - style: textTheme.subtitle1!, + style: textTheme.titleMedium!, ), if (hasSubtitle) Text( l10n.drawerCollectionAll, - style: textTheme.bodyText2!.copyWith(color: textTheme.caption!.color), + style: textTheme.bodyMedium!.copyWith(color: textTheme.bodySmall!.color), ), ], ), diff --git a/lib/widgets/settings/common/quick_actions/action_button.dart b/lib/widgets/settings/common/quick_actions/action_button.dart index 2d6731f20..2d0b2d92d 100644 --- a/lib/widgets/settings/common/quick_actions/action_button.dart +++ b/lib/widgets/settings/common/quick_actions/action_button.dart @@ -49,7 +49,7 @@ class ActionButton extends StatelessWidget { ); } - static TextStyle _textStyle(BuildContext context) => Theme.of(context).textTheme.caption!; + static TextStyle _textStyle(BuildContext context) => Theme.of(context).textTheme.bodySmall!; static double _width(BuildContext context) => OverlayButton.getSize(context) + padding * 2; diff --git a/lib/widgets/settings/common/quick_actions/editor_page.dart b/lib/widgets/settings/common/quick_actions/editor_page.dart index c24cfcfdc..58645446e 100644 --- a/lib/widgets/settings/common/quick_actions/editor_page.dart +++ b/lib/widgets/settings/common/quick_actions/editor_page.dart @@ -227,7 +227,7 @@ class _QuickActionEditorBodyState extends State { directory.getVolumeDescription(context), ...pContext.split(directory.relativeDir), ]; - final crumbStyle = Theme.of(context).textTheme.bodyText2; + final crumbStyle = Theme.of(context).textTheme.bodyMedium; final crumbColor = crumbStyle!.color!.withOpacity(.4); return DefaultTextStyle( style: crumbStyle.copyWith( diff --git a/lib/widgets/settings/settings_page.dart b/lib/widgets/settings/settings_page.dart index 2f7a3e685..52e17402f 100644 --- a/lib/widgets/settings/settings_page.dart +++ b/lib/widgets/settings/settings_page.dart @@ -105,7 +105,7 @@ class _SettingsPageState extends State with FeedbackMixin { data: theme.copyWith( textTheme: theme.textTheme.copyWith( // dense style font for tile subtitles, without modifying title font - bodyText2: const TextStyle(fontSize: 12), + bodyMedium: const TextStyle(fontSize: 12), ), ), child: AnimationLimiter( diff --git a/lib/widgets/settings/video/video_settings_page.dart b/lib/widgets/settings/video/video_settings_page.dart index 4567144ec..edacc22d4 100644 --- a/lib/widgets/settings/video/video_settings_page.dart +++ b/lib/widgets/settings/video/video_settings_page.dart @@ -28,7 +28,7 @@ class _VideoSettingsPageState extends State { data: theme.copyWith( textTheme: theme.textTheme.copyWith( // dense style font for tile subtitles, without modifying title font - bodyText2: const TextStyle(fontSize: 12), + bodyMedium: const TextStyle(fontSize: 12), ), ), child: SafeArea( diff --git a/lib/widgets/stats/date/histogram.dart b/lib/widgets/stats/date/histogram.dart index 032822536..80a73f0b4 100644 --- a/lib/widgets/stats/date/histogram.dart +++ b/lib/widgets/stats/date/histogram.dart @@ -330,7 +330,7 @@ class _HistogramState extends State with AutomaticKeepAliveClientMixi Text( numberFormat.format(count), style: TextStyle( - color: Theme.of(context).textTheme.caption!.color, + color: Theme.of(context).textTheme.bodySmall!.color, ), textAlign: TextAlign.end, ), diff --git a/lib/widgets/stats/filter_table.dart b/lib/widgets/stats/filter_table.dart index 62159b672..d94020345 100644 --- a/lib/widgets/stats/filter_table.dart +++ b/lib/widgets/stats/filter_table.dart @@ -104,7 +104,7 @@ class FilterTable extends StatelessWidget { Text( numberFormat.format(count), style: TextStyle( - color: theme.textTheme.caption!.color, + color: theme.textTheme.bodySmall!.color, ), textAlign: TextAlign.end, ), diff --git a/lib/widgets/stats/mime_donut.dart b/lib/widgets/stats/mime_donut.dart index 249d15f5b..76c633256 100644 --- a/lib/widgets/stats/mime_donut.dart +++ b/lib/widgets/stats/mime_donut.dart @@ -136,7 +136,7 @@ class _MimeDonutState extends State with AutomaticKeepAliveClientMixi Text( numberFormat.format(d.entryCount), style: TextStyle( - color: Theme.of(context).textTheme.caption!.color, + color: Theme.of(context).textTheme.bodySmall!.color, ), ), ], diff --git a/lib/widgets/viewer/info/common.dart b/lib/widgets/viewer/info/common.dart index 134dda62b..578a3439d 100644 --- a/lib/widgets/viewer/info/common.dart +++ b/lib/widgets/viewer/info/common.dart @@ -50,7 +50,7 @@ class InfoRowGroup extends StatefulWidget { static const valueStyle = TextStyle(fontSize: fontSize); static final _keyStyle = valueStyle.copyWith(height: 2.0); - static TextStyle keyStyle(BuildContext context) => Theme.of(context).textTheme.caption!.merge(_keyStyle); + static TextStyle keyStyle(BuildContext context) => Theme.of(context).textTheme.bodySmall!.merge(_keyStyle); const InfoRowGroup({ super.key, diff --git a/lib/widgets/viewer/overlay/details.dart b/lib/widgets/viewer/overlay/details.dart index 53a8adc74..fb4e69f8c 100644 --- a/lib/widgets/viewer/overlay/details.dart +++ b/lib/widgets/viewer/overlay/details.dart @@ -145,7 +145,7 @@ class ViewerDetailOverlayContent extends StatelessWidget { builder: (context, child) { final positionTitle = _PositionTitleRow(entry: pageEntry, collectionPosition: position, multiPageController: multiPageController); return DefaultTextStyle( - style: Theme.of(context).textTheme.bodyText2!.copyWith( + style: Theme.of(context).textTheme.bodyMedium!.copyWith( shadows: _shadows(context), ), softWrap: false,