diff --git a/app/lib/features/geckoview/features/browser/presentation/widgets/browser_modules/browser_view.dart b/app/lib/features/geckoview/features/browser/presentation/widgets/browser_modules/browser_view.dart index ba07711d..9dd0ab57 100644 --- a/app/lib/features/geckoview/features/browser/presentation/widgets/browser_modules/browser_view.dart +++ b/app/lib/features/geckoview/features/browser/presentation/widgets/browser_modules/browser_view.dart @@ -159,13 +159,11 @@ class _BrowserViewState extends ConsumerState data: (androidInfo) { if (androidInfo == null) { // Not Android, always show GeckoView based on route - return topRoute is GoRoute && - topRoute.name == BrowserRoute.name; + return topRoute is GoRoute && topRoute.name == BrowserRoute.name; } // Android: only apply visibility fix on Android 12 and lower (API <= 31) if (androidInfo.sdkInt <= 31) { - return topRoute is GoRoute && - topRoute.name == BrowserRoute.name; + return topRoute is GoRoute && topRoute.name == BrowserRoute.name; } // Android 13+: always show GeckoView return true; diff --git a/app/lib/features/geckoview/features/browser/presentation/widgets/font_size_bottom_sheet.dart b/app/lib/features/geckoview/features/browser/presentation/widgets/font_size_bottom_sheet.dart index dd4ae9c4..60bd7727 100644 --- a/app/lib/features/geckoview/features/browser/presentation/widgets/font_size_bottom_sheet.dart +++ b/app/lib/features/geckoview/features/browser/presentation/widgets/font_size_bottom_sheet.dart @@ -72,9 +72,7 @@ class FontSizeBottomSheet extends ConsumerWidget { Padding( padding: const EdgeInsets.only(bottom: 16), child: Card( - color: Theme.of(context) - .colorScheme - .surfaceContainerHighest, + color: Theme.of(context).colorScheme.surfaceContainerHighest, child: Padding( padding: const EdgeInsets.all(12), child: Row( diff --git a/app/lib/features/geckoview/features/tabs/data/database/daos/tab.dart b/app/lib/features/geckoview/features/tabs/data/database/daos/tab.dart index fb426161..eb00cb42 100644 --- a/app/lib/features/geckoview/features/tabs/data/database/daos/tab.dart +++ b/app/lib/features/geckoview/features/tabs/data/database/daos/tab.dart @@ -101,11 +101,16 @@ class TabDao extends DatabaseAccessor with $TabDaoMixin { ..orderBy([(t) => OrderingTerm.desc(t.timestamp)]); } - Selectable getContainerTabsFifo(String? containerId, {int limit = 25}) { + Selectable getContainerTabsFifo( + String? containerId, { + int limit = 25, + }) { return select(db.tab) - ..where((t) => containerId != null - ? t.containerId.equals(containerId) - : t.containerId.isNull()) + ..where( + (t) => containerId != null + ? t.containerId.equals(containerId) + : t.containerId.isNull(), + ) ..limit(limit) ..orderBy([(t) => OrderingTerm.desc(t.timestamp)]); } diff --git a/app/lib/features/onboarding/domain/entities/onboarding_mode.dart b/app/lib/features/onboarding/domain/entities/onboarding_mode.dart index d5a51e01..9c0ae2cd 100644 --- a/app/lib/features/onboarding/domain/entities/onboarding_mode.dart +++ b/app/lib/features/onboarding/domain/entities/onboarding_mode.dart @@ -18,7 +18,4 @@ * along with this program. If not, see . */ -enum OnboardingMode { - express, - detailed, -} +enum OnboardingMode { express, detailed } diff --git a/app/lib/features/onboarding/presentation/pages/ai_configuration.dart b/app/lib/features/onboarding/presentation/pages/ai_configuration.dart index 4b107a4a..d973448c 100644 --- a/app/lib/features/onboarding/presentation/pages/ai_configuration.dart +++ b/app/lib/features/onboarding/presentation/pages/ai_configuration.dart @@ -82,10 +82,11 @@ class AiConfigurationPage extends HookConsumerWidget { children: [ TextSpan( text: 'Things to keep in mind\n\n', - style: Theme.of(context).textTheme.headlineSmall?.copyWith( - color: Theme.of(context).colorScheme.onError, - fontWeight: FontWeight.w600, - ), + style: Theme.of(context).textTheme.headlineSmall + ?.copyWith( + color: Theme.of(context).colorScheme.onError, + fontWeight: FontWeight.w600, + ), ), const TextSpan(text: '• '), const TextSpan( diff --git a/app/lib/features/onboarding/presentation/pages/default_search.dart b/app/lib/features/onboarding/presentation/pages/default_search.dart index 2ead9a32..faaa44ac 100644 --- a/app/lib/features/onboarding/presentation/pages/default_search.dart +++ b/app/lib/features/onboarding/presentation/pages/default_search.dart @@ -65,115 +65,117 @@ class DefaultSearchPage extends HookConsumerWidget { return BrowserPage( child: BrowserPageContent( child: bangs.when( - skipLoadingOnReload: true, - data: (availableBangs) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const SizedBox(height: 24), - Center( - child: Text('Search', style: theme.textTheme.headlineMedium), - ), - const SizedBox(height: 24), - const ListTile( - title: Text('Default Search Provider'), - leading: Icon(MdiIcons.cloudSearch), - contentPadding: EdgeInsets.zero, - ), - if (activeBang != null) - Align( - alignment: Alignment.centerLeft, - child: FilterChip( - showCheckmark: false, - label: Text(activeBang.websiteName), - avatar: UrlIcon([activeBang.getDefaultUrl()], iconSize: 20), - selected: true, - onSelected: (value) {}, - ), + skipLoadingOnReload: true, + data: (availableBangs) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 24), + Center( + child: Text('Search', style: theme.textTheme.headlineMedium), ), - const Divider(), - Wrap( - spacing: 8.0, - children: [ - ...availableBangs.map( - (bang) => FilterChip( + const SizedBox(height: 24), + const ListTile( + title: Text('Default Search Provider'), + leading: Icon(MdiIcons.cloudSearch), + contentPadding: EdgeInsets.zero, + ), + if (activeBang != null) + Align( + alignment: Alignment.centerLeft, + child: FilterChip( showCheckmark: false, - label: Text(bang.websiteName), - avatar: UrlIcon([bang.getDefaultUrl()], iconSize: 20), - selected: activeBang?.trigger == bang.trigger, - onSelected: (selected) async { - if (selected) { - await updateSearchProvider(bang.toKey()); + label: Text(activeBang.websiteName), + avatar: UrlIcon([ + activeBang.getDefaultUrl(), + ], iconSize: 20), + selected: true, + onSelected: (value) {}, + ), + ), + const Divider(), + Wrap( + spacing: 8.0, + children: [ + ...availableBangs.map( + (bang) => FilterChip( + showCheckmark: false, + label: Text(bang.websiteName), + avatar: UrlIcon([bang.getDefaultUrl()], iconSize: 20), + selected: activeBang?.trigger == bang.trigger, + onSelected: (selected) async { + if (selected) { + await updateSearchProvider(bang.toKey()); + } + }, + ), + ), + ActionChip( + label: const Text('Search more'), + avatar: const Icon(Icons.search), + onPressed: () async { + final trigger = await const BangSearchRoute() + .push(context); + + if (trigger != null) { + await updateSearchProvider(trigger); } }, ), - ), - ActionChip( - label: const Text('Search more'), - avatar: const Icon(Icons.search), - onPressed: () async { - final trigger = await const BangSearchRoute() - .push(context); - - if (trigger != null) { - await updateSearchProvider(trigger); - } - }, - ), - ], - ), - const SizedBox(height: 24), - const ListTile( - title: Text('Default Autocomplete Provider'), - leading: Icon(MdiIcons.weatherCloudyArrowRight), - contentPadding: EdgeInsets.zero, - ), - DropdownMenu( - initialSelection: activeAutosuggest, - inputDecorationTheme: InputDecorationTheme( - prefixIconConstraints: BoxConstraints.tight( - const Size.square(24), - ), + ], ), - width: double.infinity, - leadingIcon: activeAutosuggest.relatedBang.mapNotNull( - (trigger) => BangIcon(trigger: trigger), + const SizedBox(height: 24), + const ListTile( + title: Text('Default Autocomplete Provider'), + leading: Icon(MdiIcons.weatherCloudyArrowRight), + contentPadding: EdgeInsets.zero, ), - dropdownMenuEntries: SearchSuggestionProviders.values.map(( - provider, - ) { - return DropdownMenuEntry( - value: provider, - label: provider.label, - leadingIcon: provider.relatedBang.mapNotNull( - (trigger) => BangIcon(trigger: trigger), + DropdownMenu( + initialSelection: activeAutosuggest, + inputDecorationTheme: InputDecorationTheme( + prefixIconConstraints: BoxConstraints.tight( + const Size.square(24), ), - ); - }).toList(), - onSelected: (value) async { - if (value != null) { - await ref - .read(saveGeneralSettingsControllerProvider.notifier) - .save( - (currentSettings) => currentSettings.copyWith - .defaultSearchSuggestionsProvider(value), - ); - } - }, - ), - ], - ); - }, - error: (error, stackTrace) => Center( - child: FailureWidget( - title: 'Could not load search engines', - exception: error, - onRetry: () => - ref.refresh(bangListProvider(triggers: defaultBangs)), + ), + width: double.infinity, + leadingIcon: activeAutosuggest.relatedBang.mapNotNull( + (trigger) => BangIcon(trigger: trigger), + ), + dropdownMenuEntries: SearchSuggestionProviders.values.map(( + provider, + ) { + return DropdownMenuEntry( + value: provider, + label: provider.label, + leadingIcon: provider.relatedBang.mapNotNull( + (trigger) => BangIcon(trigger: trigger), + ), + ); + }).toList(), + onSelected: (value) async { + if (value != null) { + await ref + .read(saveGeneralSettingsControllerProvider.notifier) + .save( + (currentSettings) => currentSettings.copyWith + .defaultSearchSuggestionsProvider(value), + ); + } + }, + ), + ], + ); + }, + error: (error, stackTrace) => Center( + child: FailureWidget( + title: 'Could not load search engines', + exception: error, + onRetry: () => + ref.refresh(bangListProvider(triggers: defaultBangs)), + ), ), + loading: () => const SizedBox(height: 48, width: double.infinity), ), - loading: () => const SizedBox(height: 48, width: double.infinity), - ), ), ); } diff --git a/app/lib/features/onboarding/presentation/pages/doh_settings.dart b/app/lib/features/onboarding/presentation/pages/doh_settings.dart index e04b8cb4..cbad6721 100644 --- a/app/lib/features/onboarding/presentation/pages/doh_settings.dart +++ b/app/lib/features/onboarding/presentation/pages/doh_settings.dart @@ -32,22 +32,22 @@ class DohSettingsPage extends HookConsumerWidget { return BrowserPage( child: BrowserPageContent( child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const SizedBox(height: 24), - Center( - child: Text( - 'DNS over HTTPS', - style: theme.textTheme.headlineMedium, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 24), + Center( + child: Text( + 'DNS over HTTPS', + style: theme.textTheme.headlineMedium, + ), ), - ), - const SizedBox(height: 24), - const ListTileTheme( - contentPadding: EdgeInsets.zero, - child: DohSettingsContent(), - ), - ], - ), + const SizedBox(height: 24), + const ListTileTheme( + contentPadding: EdgeInsets.zero, + child: DohSettingsContent(), + ), + ], + ), ), ); } diff --git a/app/lib/features/onboarding/presentation/pages/toolbar_layout.dart b/app/lib/features/onboarding/presentation/pages/toolbar_layout.dart index 535e2ca8..65910aed 100644 --- a/app/lib/features/onboarding/presentation/pages/toolbar_layout.dart +++ b/app/lib/features/onboarding/presentation/pages/toolbar_layout.dart @@ -52,7 +52,10 @@ class ToolbarLayoutPage extends HookConsumerWidget { settings: settings, backgroundColor: Colors.transparent, compact: true, - padding: const EdgeInsets.symmetric(horizontal: 12.0, vertical: 8.0), + padding: const EdgeInsets.symmetric( + horizontal: 12.0, + vertical: 8.0, + ), ), ), SliverPadding( diff --git a/app/lib/features/onboarding/presentation/pages/ublock_opt_in.dart b/app/lib/features/onboarding/presentation/pages/ublock_opt_in.dart index 5ff20668..d0ce0043 100644 --- a/app/lib/features/onboarding/presentation/pages/ublock_opt_in.dart +++ b/app/lib/features/onboarding/presentation/pages/ublock_opt_in.dart @@ -47,7 +47,10 @@ class UBlockOptInPage extends HookConsumerWidget implements IFormPage { SvgPicture.asset('assets/images/ublock.svg'), const SizedBox(height: 8), Center( - child: Text('uBlock Origin', style: theme.textTheme.headlineMedium), + child: Text( + 'uBlock Origin', + style: theme.textTheme.headlineMedium, + ), ), const SizedBox(height: 24), const MarkdownBody( diff --git a/app/lib/features/small_web/data/models/kagi_category.dart b/app/lib/features/small_web/data/models/kagi_category.dart index a9682c0b..171d45ce 100644 --- a/app/lib/features/small_web/data/models/kagi_category.dart +++ b/app/lib/features/small_web/data/models/kagi_category.dart @@ -59,19 +59,12 @@ class KagiCategories { final rawGroups = json['groups'] as Map; final groups = rawGroups.map( - (name, slugs) => MapEntry( - name, - (slugs as List).cast(), - ), + (name, slugs) => MapEntry(name, (slugs as List).cast()), ); final rawRemap = json['remap'] as Map; final remap = rawRemap.cast(); - return KagiCategories( - categories: categories, - groups: groups, - remap: remap, - ); + return KagiCategories(categories: categories, groups: groups, remap: remap); } } diff --git a/app/lib/presentation/widgets/browser_page.dart b/app/lib/presentation/widgets/browser_page.dart index 2d0fbb57..89b358aa 100644 --- a/app/lib/presentation/widgets/browser_page.dart +++ b/app/lib/presentation/widgets/browser_page.dart @@ -10,7 +10,11 @@ class BrowserPage extends ConsumerWidget { final double bottomViewportInset; final Widget child; - const BrowserPage({super.key, this.bottomViewportInset = 0, required this.child}); + const BrowserPage({ + super.key, + this.bottomViewportInset = 0, + required this.child, + }); @override Widget build(BuildContext context, WidgetRef ref) { @@ -45,12 +49,20 @@ class BrowserPage extends ConsumerWidget { Positioned( top: -70, left: -120, - child: _BackdropOrb(width: 400, height: 400, color: appColors.auraPurple), + child: _BackdropOrb( + width: 400, + height: 400, + color: appColors.auraPurple, + ), ), Positioned( top: 220, right: -150, - child: _BackdropOrb(width: 340, height: 340, color: appColors.auraGold), + child: _BackdropOrb( + width: 340, + height: 340, + color: appColors.auraGold, + ), ), Positioned( bottom: 18, @@ -66,7 +78,9 @@ class BrowserPage extends ConsumerWidget { child: ClipRect( child: BackdropFilter( filter: ImageFilter.blur(sigmaX: 72, sigmaY: 72), - child: ColoredBox(color: appColors.auraTint.withValues(alpha: 0.12)), + child: ColoredBox( + color: appColors.auraTint.withValues(alpha: 0.12), + ), ), ), ), @@ -94,12 +108,7 @@ class BrowserPageContent extends StatelessWidget { builder: (context, constraints) { return SingleChildScrollView( physics: const AlwaysScrollableScrollPhysics(), - padding: EdgeInsets.fromLTRB( - 24, - 32, - 24, - 32 + bottomViewportInset, - ), + padding: EdgeInsets.fromLTRB(24, 32, 24, 32 + bottomViewportInset), child: ConstrainedBox( constraints: BoxConstraints( minHeight: math.max(