UI fixes 221223 (#652)

* Add foreground service media playback

Required for android 14 (audio library)

* Change serif font

* Update serif font family

* Update serif font

* Update stat tiles style

* Change shortcuts size

* Fix quote layout

* Fix header layout

* Update home layout
This commit is contained in:
romain 2023-12-22 13:27:47 +01:00 committed by GitHub
parent 8cb79663b2
commit 8f1c41ab68
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 73 additions and 59 deletions

View File

@ -6,6 +6,7 @@
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK"/>
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" /> <uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
final String DmMono = 'DM Mono'; final String DmMono = 'DM Mono';
final String DmSans = 'DM Sans'; final String DmSans = 'DM Sans';
const String DmSerif = 'DM Serif'; const String SourceSerif = 'Source Serif';
const String materialIcons = 'MaterialIcons'; const String materialIcons = 'MaterialIcons';
const padding12 = 12.0; const padding12 = 12.0;
const padding16 = 16.0; const padding16 = 16.0;

View File

@ -85,7 +85,7 @@ class _JoinEmailViewState extends ConsumerState<JoinEmailView> {
StringConstants.whatsYourEmail, StringConstants.whatsYourEmail,
style: textTheme.headlineMedium?.copyWith( style: textTheme.headlineMedium?.copyWith(
color: ColorConstants.walterWhite, color: ColorConstants.walterWhite,
fontFamily: DmSerif, fontFamily: SourceSerif,
height: 1.2, height: 1.2,
fontSize: 24, fontSize: 24,
), ),

View File

@ -50,7 +50,7 @@ class JoinIntroView extends ConsumerWidget {
StringConstants.joinTheMeditoFamily, StringConstants.joinTheMeditoFamily,
style: textTheme.headlineMedium?.copyWith( style: textTheme.headlineMedium?.copyWith(
color: ColorConstants.walterWhite, color: ColorConstants.walterWhite,
fontFamily: DmSerif, fontFamily: SourceSerif,
height: 1.2, height: 1.2,
fontSize: 24, fontSize: 24,
), ),

View File

@ -85,7 +85,7 @@ class _JoinVerifyOTPViewState extends ConsumerState<JoinVerifyOTPView> {
StringConstants.verifyYourAccount, StringConstants.verifyYourAccount,
style: textTheme.headlineMedium?.copyWith( style: textTheme.headlineMedium?.copyWith(
color: ColorConstants.walterWhite, color: ColorConstants.walterWhite,
fontFamily: DmSerif, fontFamily: SourceSerif,
height: 1.2, height: 1.2,
fontSize: 24, fontSize: 24,
), ),
@ -123,7 +123,7 @@ class _JoinVerifyOTPViewState extends ConsumerState<JoinVerifyOTPView> {
), ),
textStyle: textTheme.displayMedium?.copyWith( textStyle: textTheme.displayMedium?.copyWith(
color: ColorConstants.walterWhite, color: ColorConstants.walterWhite,
fontFamily: DmSerif, fontFamily: SourceSerif,
fontSize: 24, fontSize: 24,
), ),
enableActiveFill: true, enableActiveFill: true,

View File

@ -49,7 +49,7 @@ class JoinWelcomeView extends ConsumerWidget {
StringConstants.thanksForJoining, StringConstants.thanksForJoining,
style: textTheme.headlineMedium?.copyWith( style: textTheme.headlineMedium?.copyWith(
color: ColorConstants.walterWhite, color: ColorConstants.walterWhite,
fontFamily: DmSerif, fontFamily: SourceSerif,
height: 1.2, height: 1.2,
fontSize: 24, fontSize: 24,
), ),

View File

@ -27,7 +27,7 @@ class DonationWidget extends ConsumerWidget {
children: [ children: [
Text( Text(
donationModel.title ?? '', donationModel.title ?? '',
style: bodyLarge?.copyWith(fontFamily: DmSerif, fontSize: 22), style: bodyLarge?.copyWith(fontFamily: SourceSerif, fontSize: 22),
textAlign: TextAlign.center, textAlign: TextAlign.center,
), ),
height8, height8,

View File

@ -61,7 +61,7 @@ class _FeedbackWidgetState extends ConsumerState<FeedbackWidget> {
children: [ children: [
Text( Text(
widget.feedbackModel.title ?? '', widget.feedbackModel.title ?? '',
style: bodyLarge?.copyWith(fontFamily: DmSerif, fontSize: 22), style: bodyLarge?.copyWith(fontFamily: SourceSerif, fontSize: 22),
textAlign: TextAlign.center, textAlign: TextAlign.center,
), ),
height8, height8,

View File

@ -60,13 +60,13 @@ class _HomeViewState extends ConsumerState<HomeView>
child: Column( child: Column(
children: [ children: [
HeaderAndAnnouncementWidget(), HeaderAndAnnouncementWidget(),
height16, height20,
ShortcutsWidget(), ShortcutsWidget(),
height24, height20,
EditorialWidget(), EditorialWidget(),
height24, height20,
QuoteWidget(), QuoteWidget(),
height24, height20,
TilesWidget(), TilesWidget(),
SizedBox( SizedBox(
height: 140, height: 140,
@ -91,7 +91,7 @@ class _HomeViewState extends ConsumerState<HomeView>
FloatingActionButton _buildFloatingButton(BuildContext context) { FloatingActionButton _buildFloatingButton(BuildContext context) {
return FloatingActionButton.extended( return FloatingActionButton.extended(
backgroundColor: ColorConstants.onyx, backgroundColor: ColorConstants.lightPurple,
onPressed: () { onPressed: () {
context.push(RouteConstants.searchPath); context.push(RouteConstants.searchPath);
}, },
@ -100,8 +100,10 @@ class _HomeViewState extends ConsumerState<HomeView>
StringConstants.explore, StringConstants.explore,
style: TextStyle( style: TextStyle(
color: ColorConstants.walterWhite, color: ColorConstants.walterWhite,
fontFamily: DmSerif, fontFamily: SourceSerif,
fontSize: 20, fontSize: 20,
fontWeight: FontWeight.w700,
), ),
), ),
); );

View File

@ -33,7 +33,7 @@ class EditorialWidget extends ConsumerWidget {
Padding _buildMain(BuildContext context, EditorialModel data) { Padding _buildMain(BuildContext context, EditorialModel data) {
var titleStyle = Theme.of(context).textTheme.headlineSmall?.copyWith( var titleStyle = Theme.of(context).textTheme.headlineSmall?.copyWith(
fontFamily: DmSerif, fontFamily: SourceSerif,
color: ColorConstants.walterWhite, color: ColorConstants.walterWhite,
fontSize: 24, fontSize: 24,
); );

View File

@ -18,14 +18,18 @@ class HomeHeaderWidget extends ConsumerWidget implements PreferredSizeWidget {
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
return SizedBox( return SizedBox(
height: 56, height: 72,
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
_welcomeWidget(context), _welcomeWidget(context),
Row( Row(
children: [ children: [
_menuWidget(context), Padding(
padding: EdgeInsets.only(top: 34), // Add top padding
child: _menuWidget(context),
),
], ],
), ),
], ],
@ -60,7 +64,8 @@ class HomeHeaderWidget extends ConsumerWidget implements PreferredSizeWidget {
color: ColorConstants.walterWhite, color: ColorConstants.walterWhite,
height: 0, height: 0,
fontSize: 28, fontSize: 28,
fontFamily: DmSerif, fontWeight: FontWeight.w700,
fontFamily: SourceSerif,
), ),
), ),
), ),
@ -100,5 +105,5 @@ class HomeHeaderWidget extends ConsumerWidget implements PreferredSizeWidget {
} }
@override @override
Size get preferredSize => Size.fromHeight(56.0); Size get preferredSize => Size.fromHeight(72.0);
} }

View File

@ -12,7 +12,10 @@ class QuoteWidget extends ConsumerWidget {
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
var response = ref.watch(fetchQuoteProvider); var response = ref.watch(fetchQuoteProvider);
var fontStyle = Theme.of(context).textTheme.bodyMedium?.copyWith( var fontStyle = Theme.of(context).textTheme.bodyMedium?.copyWith(
fontFamily: DmSerif, fontFamily: SourceSerif,
fontWeight: FontWeight.w500,
fontSize: fontSize16,
height: 1.4,
color: ColorConstants.walterWhite, color: ColorConstants.walterWhite,
); );
@ -21,6 +24,7 @@ class QuoteWidget extends ConsumerWidget {
skipLoadingOnReload: true, skipLoadingOnReload: true,
data: (data) { data: (data) {
return Container( return Container(
width: double.infinity,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(14), borderRadius: BorderRadius.circular(14),
color: ColorConstants.onyx, color: ColorConstants.onyx,
@ -34,6 +38,7 @@ class QuoteWidget extends ConsumerWidget {
style: fontStyle, style: fontStyle,
textAlign: TextAlign.center, textAlign: TextAlign.center,
), ),
height4,
Text( Text(
'${data.author}', '${data.author}',
style: fontStyle, style: fontStyle,

View File

@ -75,8 +75,8 @@ class _ShortcutsItemsWidgetState extends ConsumerState<ShortcutsItemsWidget> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return ReorderableWrap( return ReorderableWrap(
spacing: 8.0, spacing: 10.0,
runSpacing: 8.0, runSpacing: 10.0,
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
maxMainAxisCount: 2, maxMainAxisCount: 2,
minMainAxisCount: 2, minMainAxisCount: 2,
@ -87,7 +87,7 @@ class _ShortcutsItemsWidgetState extends ConsumerState<ShortcutsItemsWidget> {
List<Widget> _getShortcutsItemWidgetList() { List<Widget> _getShortcutsItemWidgetList() {
var size = MediaQuery.of(context).size; var size = MediaQuery.of(context).size;
final containerHeight = 48.0; final containerHeight = 56.0;
final containerWidth = (size.width / 2) - (padding20 + 2); final containerWidth = (size.width / 2) - (padding20 + 2);
return data.shortcuts return data.shortcuts

View File

@ -35,7 +35,8 @@ class TilesWidget extends ConsumerWidget {
return Padding( return Padding(
padding: const EdgeInsets.only(left: 4, right: padding20), padding: const EdgeInsets.only(left: 4, right: padding20),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: data.map((e) { children: data.map((e) {
var isFirstItem = data[0] == e; var isFirstItem = data[0] == e;
@ -46,12 +47,21 @@ class TilesWidget extends ConsumerWidget {
), ),
child: LayoutBuilder( child: LayoutBuilder(
builder: (context, constraints) { builder: (context, constraints) {
var fontSize = _getFontSize(constraints);
var fontStyle = var titleFontStyle =
Theme.of(context).textTheme.bodyMedium?.copyWith( Theme.of(context).textTheme.bodyMedium?.copyWith(
fontFamily: DmSerif, fontFamily: DmMono,
color: ColorConstants.walterWhite, color: ColorConstants.walterWhite,
fontSize: fontSize, fontSize: 18,
fontWeight: FontWeight.w600,
);
var subtitleFontStyle =
Theme.of(context).textTheme.bodyMedium?.copyWith(
fontFamily: DmSans,
color: ColorConstants.walterWhite,
fontSize: 14,
fontWeight: FontWeight.w500,
); );
return InkWell( return InkWell(
@ -77,12 +87,12 @@ class TilesWidget extends ConsumerWidget {
height8, height8,
Text( Text(
e.title, e.title,
style: fontStyle, style: titleFontStyle,
), ),
height4, height4,
Text( Text(
e.subtitle, e.subtitle,
style: fontStyle, style: subtitleFontStyle,
), ),
], ],
), ),
@ -97,16 +107,6 @@ class TilesWidget extends ConsumerWidget {
); );
} }
double _getFontSize(BoxConstraints constraints) {
final width = constraints.maxWidth;
var fontSize = fontSize16;
if (width <= smallScreenWidth) {
fontSize = fontSize14;
}
return fontSize;
}
void _onTapTile(BuildContext context, WidgetRef ref) { void _onTapTile(BuildContext context, WidgetRef ref) {
ref.invalidate(remoteStatsProvider); ref.invalidate(remoteStatsProvider);
ref.read(remoteStatsProvider); ref.read(remoteStatsProvider);

View File

@ -118,7 +118,7 @@ class _NotificationPermissionViewState
StringConstants.allowNotificationsTitle, StringConstants.allowNotificationsTitle,
style: textTheme.headlineMedium?.copyWith( style: textTheme.headlineMedium?.copyWith(
color: ColorConstants.walterWhite, color: ColorConstants.walterWhite,
fontFamily: DmSerif, fontFamily: SourceSerif,
height: 1.2, height: 1.2,
fontSize: 24, fontSize: 24,
), ),

View File

@ -42,7 +42,7 @@ class ArtistTitleWidget extends ConsumerWidget {
child: Marquee( child: Marquee(
text: trackTitle, text: trackTitle,
style: Theme.of(context).primaryTextTheme.headlineMedium?.copyWith( style: Theme.of(context).primaryTextTheme.headlineMedium?.copyWith(
fontFamily: DmSerif, fontFamily: SourceSerif,
color: ColorConstants.walterWhite, color: ColorConstants.walterWhite,
fontSize: trackTitleFontSize, fontSize: trackTitleFontSize,
letterSpacing: 0.2, letterSpacing: 0.2,

View File

@ -312,7 +312,7 @@ class _TrackViewState extends ConsumerState<TrackView>
return Text( return Text(
title, title,
style: Theme.of(context).primaryTextTheme.titleLarge?.copyWith( style: Theme.of(context).primaryTextTheme.titleLarge?.copyWith(
fontFamily: DmSerif, fontFamily: SourceSerif,
color: ColorConstants.walterWhite, color: ColorConstants.walterWhite,
letterSpacing: 0.2, letterSpacing: 0.2,
fontSize: 24, fontSize: 24,

View File

@ -26,7 +26,7 @@ class MeditoErrorWidget extends StatelessWidget {
var textStyle = Theme.of(context).textTheme.headlineSmall?.copyWith( var textStyle = Theme.of(context).textTheme.headlineSmall?.copyWith(
fontSize: 16, fontSize: 16,
color: ColorConstants.walterWhite, color: ColorConstants.walterWhite,
fontFamily: DmSerif, fontFamily: SourceSerif,
); );
if (isScaffold) { if (isScaffold) {
return Scaffold( return Scaffold(

View File

@ -70,7 +70,8 @@ class _MeditoAppBarLargeState extends State<MeditoAppBarLarge> {
return Text( return Text(
title, title,
style: Theme.of(context).primaryTextTheme.titleLarge?.copyWith( style: Theme.of(context).primaryTextTheme.titleLarge?.copyWith(
fontFamily: DmSerif, fontFamily: SourceSerif,
fontWeight: FontWeight.w700,
color: ColorConstants.walterWhite, color: ColorConstants.walterWhite,
), ),
); );

View File

@ -59,7 +59,7 @@ class PackCardWidget extends StatelessWidget {
return Text( return Text(
'$title', '$title',
style: textTheme.displayLarge?.copyWith( style: textTheme.displayLarge?.copyWith(
fontFamily: DmSerif, fontFamily: SourceSerif,
height: 0, height: 0,
), ),
); );

View File

@ -87,16 +87,16 @@ flutter:
- .staging.env - .staging.env
- assets/images/ - assets/images/
fonts: fonts:
- family: Source Serif
- family: DM Serif
fonts: fonts:
- asset: assets/fonts/dm-serif/DMSerifDisplay-Regular.ttf - asset: assets/fonts/source-serif/SourceSerif4-Regular.ttf
- asset: assets/fonts/source-serif/SourceSerif4-Medium.ttf
- asset: assets/fonts/source-serif/SourceSerif4-SemiBold.ttf
- asset: assets/fonts/source-serif/SourceSerif4-Bold.ttf
- family: DM Mono - family: DM Mono
fonts: fonts:
- asset: assets/fonts/dm-mono/DMMono-Medium.ttf - asset: assets/fonts/dm-mono/DMMono-Medium.ttf
- asset: assets/fonts/dm-mono/DMMono-Regular.ttf - asset: assets/fonts/dm-mono/DMMono-Regular.ttf
- family: DM Sans - family: DM Sans
fonts: fonts:
- asset: assets/fonts/dm-sans/DMSans-Bold.ttf - asset: assets/fonts/dm-sans/DMSans-Bold.ttf