From 5bf4579a49550e299b3d3621fbd04a9f407c9c9f Mon Sep 17 00:00:00 2001 From: PartyDonut <42371342+PartyDonut@users.noreply.github.com> Date: Sun, 6 Apr 2025 14:40:58 +0200 Subject: [PATCH] fix: Small bugfixes (#303) Co-authored-by: PartyDonut --- lib/screens/dashboard/dashboard_screen.dart | 2 +- .../library_search/library_search_screen.dart | 5 +- .../client_settings_visual.dart | 8 +-- .../settings/client_settings_page.dart | 2 +- lib/screens/settings/settings_list_tile.dart | 69 +++++++++---------- .../navigation_scaffold.dart | 1 + lib/widgets/shared/enum_selection.dart | 6 +- lib/widgets/shared/modal_bottom_sheet.dart | 6 +- 8 files changed, 48 insertions(+), 51 deletions(-) diff --git a/lib/screens/dashboard/dashboard_screen.dart b/lib/screens/dashboard/dashboard_screen.dart index 99d3d9a..02320a5 100644 --- a/lib/screens/dashboard/dashboard_screen.dart +++ b/lib/screens/dashboard/dashboard_screen.dart @@ -94,6 +94,7 @@ class _DashboardScreenState extends ConsumerState { controller: AdaptiveLayout.scrollOf(context), physics: const AlwaysScrollableScrollPhysics(), slivers: [ + const DefaultSliverTopBadding(), if (AdaptiveLayout.viewSizeOf(context) == ViewSize.phone) NestedSliverAppBar( route: LibrarySearchRoute(), @@ -107,7 +108,6 @@ class _DashboardScreenState extends ConsumerState { ), ), }, - const DefaultSliverTopBadding(), if (AdaptiveLayout.of(context).isDesktop) const SliverToBoxAdapter( child: Row( diff --git a/lib/screens/library_search/library_search_screen.dart b/lib/screens/library_search/library_search_screen.dart index a099a39..2f3dcbe 100644 --- a/lib/screens/library_search/library_search_screen.dart +++ b/lib/screens/library_search/library_search_screen.dart @@ -3,8 +3,8 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:auto_route/auto_route.dart'; -import 'package:iconsax_plus/iconsax_plus.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:iconsax_plus/iconsax_plus.dart'; import 'package:fladder/models/boxset_model.dart'; import 'package:fladder/models/item_base_model.dart'; @@ -685,10 +685,11 @@ class _LibrarySearchBottomBar extends ConsumerWidget { child: Container( decoration: BoxDecoration( color: Theme.of(context).colorScheme.primaryContainer, + borderRadius: BorderRadius.circular(8), ), padding: const EdgeInsets.all(6), child: Icon( - IconsaxPlusLinear.arrow_up_3, + IconsaxPlusLinear.arrow_up, color: Theme.of(context).colorScheme.onPrimaryContainer, ), ), diff --git a/lib/screens/settings/client_sections/client_settings_visual.dart b/lib/screens/settings/client_sections/client_settings_visual.dart index bf59541..b5578df 100644 --- a/lib/screens/settings/client_sections/client_settings_visual.dart +++ b/lib/screens/settings/client_sections/client_settings_visual.dart @@ -28,9 +28,7 @@ List buildClientSettingsVisual( label: Text(context.localized.displayLanguage), trailing: Localizations.override( context: context, - locale: ref.watch( - clientSettingsProvider.select((value) => (value.selectedLocale ?? currentLocale)), - ), + locale: ref.watch(clientSettingsProvider.select((value) => (value.selectedLocale ?? currentLocale))), child: Builder(builder: (context) { String language = "Unknown"; try { @@ -49,9 +47,7 @@ List buildClientSettingsVisual( context: context, locale: entry, child: Builder(builder: (context) { - return Text( - context.localized.nativeName, - ); + return Text("${context.localized.nativeName} (${entry.languageCode.toUpperCase()})"); }), ), onTap: () => ref diff --git a/lib/screens/settings/client_settings_page.dart b/lib/screens/settings/client_settings_page.dart index 07e1563..e594717 100644 --- a/lib/screens/settings/client_settings_page.dart +++ b/lib/screens/settings/client_settings_page.dart @@ -83,8 +83,8 @@ class _ClientSettingsPageState extends ConsumerState { .update((current) => current.copyWith(mouseDragSupport: !clientSettings.mouseDragSupport)), ), ), + const Divider(), ], - const Divider(), ...buildClientSettingsAdvanced(context, ref), if (kDebugMode) ...[ const SizedBox(height: 64), diff --git a/lib/screens/settings/settings_list_tile.dart b/lib/screens/settings/settings_list_tile.dart index 92f112c..73dd1cd 100644 --- a/lib/screens/settings/settings_list_tile.dart +++ b/lib/screens/settings/settings_list_tile.dart @@ -31,44 +31,41 @@ class SettingsListTile extends StatelessWidget { shape: const RoundedRectangleBorder( borderRadius: BorderRadius.only(topLeft: Radius.circular(8), bottomLeft: Radius.circular(8))), margin: EdgeInsets.zero, - child: MediaQuery( - data: const MediaQueryData(padding: EdgeInsets.zero), - child: ListTile( - minVerticalPadding: 12, - minLeadingWidth: 16, - minTileHeight: 75, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), - horizontalTitleGap: 0, - titleAlignment: ListTileTitleAlignment.center, - contentPadding: const EdgeInsets.only(right: 12, left: 2), - leading: (suffix ?? iconWidget) != null - ? Padding( - padding: const EdgeInsets.only(left: 8.0, right: 16.0), - child: AnimatedContainer( - duration: const Duration(milliseconds: 125), - decoration: BoxDecoration( - color: Theme.of(context).colorScheme.primaryContainer.withValues(alpha: selected ? 1 : 0), - borderRadius: BorderRadius.circular(selected ? 5 : 20), - ), - child: Padding( - padding: const EdgeInsets.symmetric(horizontal: 12.0, vertical: 12), - child: (suffix ?? iconWidget), - ), + child: ListTile( + minVerticalPadding: 12, + minLeadingWidth: 16, + minTileHeight: 75, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(16)), + horizontalTitleGap: 0, + titleAlignment: ListTileTitleAlignment.center, + contentPadding: const EdgeInsets.only(right: 12, left: 2), + leading: (suffix ?? iconWidget) != null + ? Padding( + padding: const EdgeInsets.only(left: 8.0, right: 16.0), + child: AnimatedContainer( + duration: const Duration(milliseconds: 125), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.primaryContainer.withValues(alpha: selected ? 1 : 0), + borderRadius: BorderRadius.circular(selected ? 5 : 20), ), - ) - : suffix ?? const SizedBox(), - title: label, - titleTextStyle: Theme.of(context).textTheme.titleLarge, - trailing: Padding( - padding: const EdgeInsets.only(left: 16), - child: trailing, - ), - selected: selected, - textColor: contentColor, - iconColor: contentColor, - subtitle: subLabel, - onTap: onTap, + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 12.0, vertical: 12), + child: (suffix ?? iconWidget), + ), + ), + ) + : suffix ?? const SizedBox(), + title: label, + titleTextStyle: Theme.of(context).textTheme.titleLarge, + trailing: Padding( + padding: const EdgeInsets.only(left: 16), + child: trailing, ), + selected: selected, + textColor: contentColor, + iconColor: contentColor, + subtitle: subLabel, + onTap: onTap, ), ); } diff --git a/lib/widgets/navigation_scaffold/navigation_scaffold.dart b/lib/widgets/navigation_scaffold/navigation_scaffold.dart index ddfc38f..648a1ed 100644 --- a/lib/widgets/navigation_scaffold/navigation_scaffold.dart +++ b/lib/widgets/navigation_scaffold/navigation_scaffold.dart @@ -67,6 +67,7 @@ class _NavigationScaffoldState extends ConsumerState { key: _key, appBar: const FladderAppBar(), extendBodyBehindAppBar: true, + resizeToAvoidBottomInset: false, extendBody: true, floatingActionButtonAnimator: playerState == VideoPlayerState.minimized ? FloatingActionButtonAnimator.noAnimation : null, diff --git a/lib/widgets/shared/enum_selection.dart b/lib/widgets/shared/enum_selection.dart index b37f2f7..cb72ef8 100644 --- a/lib/widgets/shared/enum_selection.dart +++ b/lib/widgets/shared/enum_selection.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:fladder/models/settings/home_settings_model.dart'; import 'package:fladder/screens/shared/flat_button.dart'; import 'package:fladder/util/adaptive_layout.dart'; +import 'package:fladder/widgets/shared/modal_bottom_sheet.dart'; class EnumBox extends StatelessWidget { final String current; @@ -52,10 +53,11 @@ class EnumBox extends StatelessWidget { child: useBottomSheet ? FlatButton( child: labelWidget, - onTap: () => showModalBottomSheet( + onTap: () => showBottomSheetPill( context: context, - builder: (context) => ListView( + content: (context, scrollController) => ListView( shrinkWrap: true, + controller: scrollController, children: [ const SizedBox(height: 6), ...itemBuilder(context), diff --git a/lib/widgets/shared/modal_bottom_sheet.dart b/lib/widgets/shared/modal_bottom_sheet.dart index a855643..3a06205 100644 --- a/lib/widgets/shared/modal_bottom_sheet.dart +++ b/lib/widgets/shared/modal_bottom_sheet.dart @@ -18,6 +18,7 @@ Future showBottomSheetPill({ ScrollController scrollController, ) content, }) async { + final screenSize = MediaQuery.sizeOf(context); await showModalBottomSheet( isScrollControlled: true, useRootNavigator: true, @@ -25,9 +26,8 @@ Future showBottomSheetPill({ enableDrag: true, context: context, constraints: AdaptiveLayout.viewSizeOf(context) == ViewSize.phone - ? BoxConstraints(maxHeight: MediaQuery.of(context).size.height * 0.9) - : BoxConstraints( - maxWidth: MediaQuery.of(context).size.width * 0.75, maxHeight: MediaQuery.of(context).size.height * 0.85), + ? BoxConstraints(maxHeight: screenSize.height * 0.9) + : BoxConstraints(maxWidth: screenSize.width * 0.75, maxHeight: screenSize.height * 0.85), builder: (context) { final controller = ScrollController(); return ListView(