prevent conflict between drawer drag gesture and Android navigation gestures

This commit is contained in:
Thibault Deckers 2023-01-23 15:59:53 +01:00
parent 584e5cae6c
commit 8ce8eb8c71
41 changed files with 128 additions and 45 deletions

View file

@ -5,6 +5,7 @@ import 'package:aves/widgets/about/credits.dart';
import 'package:aves/widgets/about/licenses.dart'; import 'package:aves/widgets/about/licenses.dart';
import 'package:aves/widgets/about/translators.dart'; import 'package:aves/widgets/about/translators.dart';
import 'package:aves/widgets/common/basic/insets.dart'; import 'package:aves/widgets/common/basic/insets.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/basic/tv_edge_focus.dart'; import 'package:aves/widgets/common/basic/tv_edge_focus.dart';
import 'package:aves/widgets/common/behaviour/pop/scope.dart'; import 'package:aves/widgets/common/behaviour/pop/scope.dart';
import 'package:aves/widgets/common/behaviour/pop/tv_navigation.dart'; import 'package:aves/widgets/common/behaviour/pop/tv_navigation.dart';
@ -50,7 +51,7 @@ class AboutPage extends StatelessWidget {
); );
if (useTvLayout) { if (useTvLayout) {
return Scaffold( return AvesScaffold(
body: AvesPopScope( body: AvesPopScope(
handlers: const [TvNavigationPopHandler.pop], handlers: const [TvNavigationPopHandler.pop],
child: Row( child: Row(
@ -69,7 +70,7 @@ class AboutPage extends StatelessWidget {
), ),
); );
} else { } else {
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
title: appBarTitle, title: appBarTitle,
), ),

View file

@ -1,5 +1,6 @@
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/widgets/common/basic/markdown_container.dart'; import 'package:aves/widgets/common/basic/markdown_container.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
@ -28,7 +29,7 @@ class _PolicyPageState extends State<PolicyPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
automaticallyImplyLeading: !settings.useTvLayout, automaticallyImplyLeading: !settings.useTvLayout,
title: Text(context.l10n.policyPageTitle), title: Text(context.l10n.policyPageTitle),

View file

@ -29,6 +29,7 @@ import 'package:aves/utils/constants.dart';
import 'package:aves/utils/debouncer.dart'; import 'package:aves/utils/debouncer.dart';
import 'package:aves/widgets/collection/collection_grid.dart'; import 'package:aves/widgets/collection/collection_grid.dart';
import 'package:aves/widgets/collection/collection_page.dart'; import 'package:aves/widgets/collection/collection_page.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/behaviour/route_tracker.dart'; import 'package:aves/widgets/common/behaviour/route_tracker.dart';
import 'package:aves/widgets/common/behaviour/routes.dart'; import 'package:aves/widgets/common/behaviour/routes.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
@ -210,7 +211,7 @@ class _AvesAppState extends State<AvesApp> with WidgetsBindingObserver {
} }
final home = initialized final home = initialized
? _getFirstPage() ? _getFirstPage()
: Scaffold( : AvesScaffold(
body: snapshot.hasError ? _buildError(snapshot.error!) : const SizedBox(), body: snapshot.hasError ? _buildError(snapshot.error!) : const SizedBox(),
); );
return Selector<Settings, Tuple3<Locale?, AvesThemeBrightness, bool>>( return Selector<Settings, Tuple3<Locale?, AvesThemeBrightness, bool>>(

View file

@ -16,6 +16,7 @@ import 'package:aves/theme/durations.dart';
import 'package:aves/widgets/collection/collection_grid.dart'; import 'package:aves/widgets/collection/collection_grid.dart';
import 'package:aves/widgets/common/basic/draggable_scrollbar.dart'; import 'package:aves/widgets/common/basic/draggable_scrollbar.dart';
import 'package:aves/widgets/common/basic/insets.dart'; import 'package:aves/widgets/common/basic/insets.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/behaviour/pop/double_back.dart'; import 'package:aves/widgets/common/behaviour/pop/double_back.dart';
import 'package:aves/widgets/common/behaviour/pop/scope.dart'; import 'package:aves/widgets/common/behaviour/pop/scope.dart';
import 'package:aves/widgets/common/behaviour/pop/tv_navigation.dart'; import 'package:aves/widgets/common/behaviour/pop/tv_navigation.dart';
@ -125,7 +126,7 @@ class _CollectionPageState extends State<CollectionPage> {
Widget page; Widget page;
if (useTvLayout) { if (useTvLayout) {
page = Scaffold( page = AvesScaffold(
body: Row( body: Row(
children: [ children: [
TvRail( TvRail(
@ -150,7 +151,7 @@ class _CollectionPageState extends State<CollectionPage> {
_draggableScrollBarEventStreamController.add(notification.event); _draggableScrollBarEventStreamController.add(notification.event);
return false; return false;
}, },
child: Scaffold( child: AvesScaffold(
body: body, body: body,
floatingActionButton: _buildFab(context, hasSelection), floatingActionButton: _buildFab(context, hasSelection),
drawer: canNavigate ? AppDrawer(currentCollection: _collection) : null, drawer: canNavigate ? AppDrawer(currentCollection: _collection) : null,

View file

@ -0,0 +1,43 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class AvesScaffold extends StatelessWidget {
final PreferredSizeWidget? appBar;
final Widget? body;
final Widget? floatingActionButton;
final Widget? drawer;
final Widget? bottomNavigationBar;
final Color? backgroundColor;
final bool? resizeToAvoidBottomInset;
final bool extendBody;
const AvesScaffold({
super.key,
this.appBar,
this.body,
this.floatingActionButton,
this.drawer,
this.bottomNavigationBar,
this.backgroundColor,
this.resizeToAvoidBottomInset,
this.extendBody = false,
});
@override
Widget build(BuildContext context) {
// prevent conflict between drawer drag gesture and Android navigation gestures
final drawerEnableOpenDragGesture = context.select<MediaQueryData, bool>((mq) => mq.systemGestureInsets.horizontal == 0);
return Scaffold(
appBar: appBar,
body: body,
floatingActionButton: floatingActionButton,
drawer: drawer,
bottomNavigationBar: bottomNavigationBar,
backgroundColor: backgroundColor,
resizeToAvoidBottomInset: resizeToAvoidBottomInset,
extendBody: extendBody,
drawerEnableOpenDragGesture: drawerEnableOpenDragGesture,
);
}
}

View file

@ -2,6 +2,7 @@ import 'dart:ui';
import 'package:aves/theme/durations.dart'; import 'package:aves/theme/durations.dart';
import 'package:aves/utils/debouncer.dart'; import 'package:aves/utils/debouncer.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/behaviour/pop/double_back.dart'; import 'package:aves/widgets/common/behaviour/pop/double_back.dart';
import 'package:aves/widgets/common/behaviour/pop/scope.dart'; import 'package:aves/widgets/common/behaviour/pop/scope.dart';
import 'package:aves/widgets/common/behaviour/pop/tv_navigation.dart'; import 'package:aves/widgets/common/behaviour/pop/tv_navigation.dart';
@ -123,7 +124,7 @@ class _SearchPageState extends State<SearchPage> {
case null: case null:
break; break;
} }
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
leading: Hero( leading: Hero(
tag: AvesAppBar.leadingHeroTag, tag: AvesAppBar.leadingHeroTag,

View file

@ -9,6 +9,7 @@ import 'package:aves/services/analysis_service.dart';
import 'package:aves/theme/durations.dart'; import 'package:aves/theme/durations.dart';
import 'package:aves/utils/android_file_utils.dart'; import 'package:aves/utils/android_file_utils.dart';
import 'package:aves/widgets/common/basic/menu.dart'; import 'package:aves/widgets/common/basic/menu.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/behaviour/pop/scope.dart'; import 'package:aves/widgets/common/behaviour/pop/scope.dart';
import 'package:aves/widgets/common/behaviour/pop/tv_navigation.dart'; import 'package:aves/widgets/common/behaviour/pop/tv_navigation.dart';
import 'package:aves/widgets/common/identity/aves_expansion_tile.dart'; import 'package:aves/widgets/common/identity/aves_expansion_tile.dart';
@ -44,7 +45,7 @@ class _AppDebugPageState extends State<AppDebugPage> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Directionality( return Directionality(
textDirection: TextDirection.ltr, textDirection: TextDirection.ltr,
child: Scaffold( child: AvesScaffold(
appBar: AppBar( appBar: AppBar(
title: const Text('Debug'), title: const Text('Debug'),
actions: [ actions: [

View file

@ -8,6 +8,7 @@ import 'package:aves/theme/icons.dart';
import 'package:aves/utils/constants.dart'; import 'package:aves/utils/constants.dart';
import 'package:aves/widgets/collection/collection_grid.dart'; import 'package:aves/widgets/collection/collection_grid.dart';
import 'package:aves/widgets/common/basic/menu.dart'; import 'package:aves/widgets/common/basic/menu.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/grid/theme.dart'; import 'package:aves/widgets/common/grid/theme.dart';
import 'package:aves/widgets/common/identity/buttons/outlined_button.dart'; import 'package:aves/widgets/common/identity/buttons/outlined_button.dart';
@ -58,7 +59,7 @@ class _RenameEntrySetPageState extends State<RenameEntrySetPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final l10n = context.l10n; final l10n = context.l10n;
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
title: Text(l10n.renameEntrySetPageTitle), title: Text(l10n.renameEntrySetPageTitle),
), ),

View file

@ -6,6 +6,7 @@ import 'package:aves/model/settings/settings.dart';
import 'package:aves/model/source/collection_source.dart'; import 'package:aves/model/source/collection_source.dart';
import 'package:aves/theme/durations.dart'; import 'package:aves/theme/durations.dart';
import 'package:aves/theme/icons.dart'; import 'package:aves/theme/icons.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/expandable_filter_row.dart'; import 'package:aves/widgets/common/expandable_filter_row.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/identity/aves_filter_chip.dart'; import 'package:aves/widgets/common/identity/aves_filter_chip.dart';
@ -61,7 +62,7 @@ class _TagEditorPageState extends State<TagEditorPage> {
}); });
List<MapEntry<CollectionFilter, int>> sortedTags = _sortCurrentTags(entryCountByTag); List<MapEntry<CollectionFilter, int>> sortedTags = _sortCurrentTags(entryCountByTag);
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
title: Text(l10n.tagEditorPageTitle), title: Text(l10n.tagEditorPageTitle),
actions: [ actions: [

View file

@ -4,6 +4,7 @@ import 'package:aves/services/common/services.dart';
import 'package:aves/utils/android_file_utils.dart'; import 'package:aves/utils/android_file_utils.dart';
import 'package:aves/widgets/common/basic/query_bar.dart'; import 'package:aves/widgets/common/basic/query_bar.dart';
import 'package:aves/widgets/common/basic/reselectable_radio_list_tile.dart'; import 'package:aves/widgets/common/basic/reselectable_radio_list_tile.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -39,7 +40,7 @@ class _AppPickPageState extends State<AppPickPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final useTvLayout = settings.useTvLayout; final useTvLayout = settings.useTvLayout;
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
automaticallyImplyLeading: !useTvLayout, automaticallyImplyLeading: !useTvLayout,
title: Text(context.l10n.appPickDialogTitle), title: Text(context.l10n.appPickDialogTitle),

View file

@ -5,6 +5,7 @@ import 'package:aves/model/source/collection_lens.dart';
import 'package:aves/widgets/collection/collection_grid.dart'; import 'package:aves/widgets/collection/collection_grid.dart';
import 'package:aves/widgets/collection/collection_page.dart'; import 'package:aves/widgets/collection/collection_page.dart';
import 'package:aves/widgets/common/basic/insets.dart'; import 'package:aves/widgets/common/basic/insets.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/providers/query_provider.dart'; import 'package:aves/widgets/common/providers/query_provider.dart';
import 'package:aves/widgets/common/providers/selection_provider.dart'; import 'package:aves/widgets/common/providers/selection_provider.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
@ -39,7 +40,7 @@ class _ItemPickPageState extends State<ItemPickPage> {
final liveFilter = collection.filters.firstWhereOrNull((v) => v is QueryFilter && v.live) as QueryFilter?; final liveFilter = collection.filters.firstWhereOrNull((v) => v is QueryFilter && v.live) as QueryFilter?;
return ListenableProvider<ValueNotifier<AppMode>>.value( return ListenableProvider<ValueNotifier<AppMode>>.value(
value: ValueNotifier(AppMode.pickMediaInternal), value: ValueNotifier(AppMode.pickMediaInternal),
child: Scaffold( child: AvesScaffold(
body: SelectionProvider<AvesEntry>( body: SelectionProvider<AvesEntry>(
child: QueryProvider( child: QueryProvider(
initialQuery: liveFilter?.query, initialQuery: liveFilter?.query,

View file

@ -10,6 +10,7 @@ import 'package:aves/theme/durations.dart';
import 'package:aves/theme/icons.dart'; import 'package:aves/theme/icons.dart';
import 'package:aves/utils/constants.dart'; import 'package:aves/utils/constants.dart';
import 'package:aves/utils/debouncer.dart'; import 'package:aves/utils/debouncer.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/identity/buttons/outlined_button.dart'; import 'package:aves/widgets/common/identity/buttons/outlined_button.dart';
import 'package:aves/widgets/common/map/geo_map.dart'; import 'package:aves/widgets/common/map/geo_map.dart';
@ -34,7 +35,7 @@ class LocationPickPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return AvesScaffold(
body: SafeArea( body: SafeArea(
left: false, left: false,
top: false, top: false,

View file

@ -13,6 +13,7 @@ import 'package:aves/theme/colors.dart';
import 'package:aves/theme/durations.dart'; import 'package:aves/theme/durations.dart';
import 'package:aves/widgets/common/basic/draggable_scrollbar.dart'; import 'package:aves/widgets/common/basic/draggable_scrollbar.dart';
import 'package:aves/widgets/common/basic/insets.dart'; import 'package:aves/widgets/common/basic/insets.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/behaviour/pop/double_back.dart'; import 'package:aves/widgets/common/behaviour/pop/double_back.dart';
import 'package:aves/widgets/common/behaviour/pop/scope.dart'; import 'package:aves/widgets/common/behaviour/pop/scope.dart';
import 'package:aves/widgets/common/behaviour/pop/tv_navigation.dart'; import 'package:aves/widgets/common/behaviour/pop/tv_navigation.dart';
@ -117,7 +118,7 @@ class FilterGridPage<T extends CollectionFilter> extends StatelessWidget {
if (useTvLayout) { if (useTvLayout) {
final canNavigate = context.select<ValueNotifier<AppMode>, bool>((v) => v.value.canNavigate); final canNavigate = context.select<ValueNotifier<AppMode>, bool>((v) => v.value.canNavigate);
return Scaffold( return AvesScaffold(
body: canNavigate body: canNavigate
? Row( ? Row(
children: [ children: [
@ -148,7 +149,7 @@ class FilterGridPage<T extends CollectionFilter> extends StatelessWidget {
_draggableScrollBarEventStreamController.add(notification.event); _draggableScrollBarEventStreamController.add(notification.event);
return false; return false;
}, },
child: Scaffold( child: AvesScaffold(
body: body, body: body,
drawer: canNavigate ? const AppDrawer() : null, drawer: canNavigate ? const AppDrawer() : null,
bottomNavigationBar: showBottomNavigationBar bottomNavigationBar: showBottomNavigationBar

View file

@ -18,6 +18,7 @@ import 'package:aves/services/widget_service.dart';
import 'package:aves/utils/android_file_utils.dart'; import 'package:aves/utils/android_file_utils.dart';
import 'package:aves/utils/constants.dart'; import 'package:aves/utils/constants.dart';
import 'package:aves/widgets/collection/collection_page.dart'; import 'package:aves/widgets/collection/collection_page.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/behaviour/routes.dart'; import 'package:aves/widgets/common/behaviour/routes.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/search/page.dart'; import 'package:aves/widgets/common/search/page.dart';
@ -88,7 +89,7 @@ class _HomePageState extends State<HomePage> {
} }
@override @override
Widget build(BuildContext context) => const Scaffold(); Widget build(BuildContext context) => const AvesScaffold();
Future<void> _setup() async { Future<void> _setup() async {
final stopwatch = Stopwatch()..start(); final stopwatch = Stopwatch()..start();

View file

@ -19,6 +19,7 @@ import 'package:aves/widgets/collection/collection_page.dart';
import 'package:aves/widgets/collection/entry_set_action_delegate.dart'; import 'package:aves/widgets/collection/entry_set_action_delegate.dart';
import 'package:aves/widgets/common/basic/insets.dart'; import 'package:aves/widgets/common/basic/insets.dart';
import 'package:aves/widgets/common/basic/menu.dart'; import 'package:aves/widgets/common/basic/menu.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/behaviour/routes.dart'; import 'package:aves/widgets/common/behaviour/routes.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/identity/buttons/captioned_button.dart'; import 'package:aves/widgets/common/identity/buttons/captioned_button.dart';
@ -59,7 +60,7 @@ class MapPage extends StatelessWidget {
// as the map can be stacked on top of other pages // as the map can be stacked on top of other pages
// that catch highlight events and will not let it bubble up // that catch highlight events and will not let it bubble up
return HighlightInfoProvider( return HighlightInfoProvider(
child: Scaffold( child: AvesScaffold(
body: SafeArea( body: SafeArea(
left: false, left: false,
top: false, top: false,

View file

@ -4,6 +4,7 @@ import 'package:aves/theme/durations.dart';
import 'package:aves/theme/icons.dart'; import 'package:aves/theme/icons.dart';
import 'package:aves/utils/change_notifier.dart'; import 'package:aves/utils/change_notifier.dart';
import 'package:aves/utils/constants.dart'; import 'package:aves/utils/constants.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/identity/buttons/captioned_button.dart'; import 'package:aves/widgets/common/identity/buttons/captioned_button.dart';
import 'package:aves/widgets/common/identity/buttons/overlay_button.dart'; import 'package:aves/widgets/common/identity/buttons/overlay_button.dart';
@ -37,7 +38,7 @@ class QuickActionEditorPage<T extends Object> extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
title: Text(title), title: Text(title),
), ),

View file

@ -8,6 +8,7 @@ import 'package:aves/services/widget_service.dart';
import 'package:aves/theme/durations.dart'; import 'package:aves/theme/durations.dart';
import 'package:aves/theme/icons.dart'; import 'package:aves/theme/icons.dart';
import 'package:aves/utils/constants.dart'; import 'package:aves/utils/constants.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/fx/borders.dart'; import 'package:aves/widgets/common/fx/borders.dart';
import 'package:aves/widgets/common/identity/buttons/outlined_button.dart'; import 'package:aves/widgets/common/identity/buttons/outlined_button.dart';
@ -67,7 +68,7 @@ class _HomeWidgetSettingsPageState extends State<HomeWidgetSettingsPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final l10n = context.l10n; final l10n = context.l10n;
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
title: Text(l10n.settingsWidgetPageTitle), title: Text(l10n.settingsWidgetPageTitle),
), ),

View file

@ -4,6 +4,7 @@ import 'package:aves/model/settings/settings.dart';
import 'package:aves/widgets/aves_app.dart'; import 'package:aves/widgets/aves_app.dart';
import 'package:aves/widgets/common/basic/query_bar.dart'; import 'package:aves/widgets/common/basic/query_bar.dart';
import 'package:aves/widgets/common/basic/reselectable_radio_list_tile.dart'; import 'package:aves/widgets/common/basic/reselectable_radio_list_tile.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/settings/language/locale_tile.dart'; import 'package:aves/widgets/settings/language/locale_tile.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
@ -31,7 +32,7 @@ class _LocaleSelectionPageState extends State<LocaleSelectionPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final useTvLayout = settings.useTvLayout; final useTvLayout = settings.useTvLayout;
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
automaticallyImplyLeading: !useTvLayout, automaticallyImplyLeading: !useTvLayout,
title: Text(context.l10n.settingsLanguagePageTitle), title: Text(context.l10n.settingsLanguagePageTitle),

View file

@ -1,4 +1,5 @@
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/settings/common/tiles.dart'; import 'package:aves/widgets/settings/common/tiles.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -11,7 +12,7 @@ class ConfirmationDialogPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final l10n = context.l10n; final l10n = context.l10n;
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
title: Text(l10n.settingsConfirmationDialogTitle), title: Text(l10n.settingsConfirmationDialogTitle),
), ),

View file

@ -1,6 +1,7 @@
import 'package:aves/model/filters/filters.dart'; import 'package:aves/model/filters/filters.dart';
import 'package:aves/model/filters/recent.dart'; import 'package:aves/model/filters/recent.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/search/page.dart'; import 'package:aves/widgets/common/search/page.dart';
import 'package:aves/widgets/filter_grids/albums_page.dart'; import 'package:aves/widgets/filter_grids/albums_page.dart';
@ -91,7 +92,7 @@ class _NavigationDrawerEditorPageState extends State<NavigationDrawerEditorPage>
return DefaultTabController( return DefaultTabController(
length: tabs.length, length: tabs.length,
child: Scaffold( child: AvesScaffold(
appBar: AppBar( appBar: AppBar(
automaticallyImplyLeading: !settings.useTvLayout, automaticallyImplyLeading: !settings.useTvLayout,
title: Text(l10n.settingsNavigationDrawerEditorPageTitle), title: Text(l10n.settingsNavigationDrawerEditorPageTitle),

View file

@ -1,5 +1,6 @@
import 'package:aves/services/common/services.dart'; import 'package:aves/services/common/services.dart';
import 'package:aves/theme/icons.dart'; import 'package:aves/theme/icons.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/identity/empty.dart'; import 'package:aves/widgets/common/identity/empty.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -27,7 +28,7 @@ class _StorageAccessPageState extends State<StorageAccessPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
title: Text(context.l10n.settingsStorageAccessPageTitle), title: Text(context.l10n.settingsStorageAccessPageTitle),
), ),

View file

@ -7,6 +7,7 @@ import 'package:aves/theme/icons.dart';
import 'package:aves/utils/android_file_utils.dart'; import 'package:aves/utils/android_file_utils.dart';
import 'package:aves/utils/constants.dart'; import 'package:aves/utils/constants.dart';
import 'package:aves/widgets/common/basic/menu.dart'; import 'package:aves/widgets/common/basic/menu.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/identity/buttons/outlined_button.dart'; import 'package:aves/widgets/common/identity/buttons/outlined_button.dart';
import 'package:aves/widgets/common/identity/empty.dart'; import 'package:aves/widgets/common/identity/empty.dart';
@ -64,7 +65,7 @@ class _FilePickerPageState extends State<FilePickerPage> {
setState(() {}); setState(() {});
return SynchronousFuture(false); return SynchronousFuture(false);
}, },
child: Scaffold( child: AvesScaffold(
appBar: AppBar( appBar: AppBar(
title: Text(_getTitle(context)), title: Text(_getTitle(context)),
actions: [ actions: [

View file

@ -3,6 +3,7 @@ import 'package:aves/model/filters/path.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/theme/durations.dart'; import 'package:aves/theme/durations.dart';
import 'package:aves/theme/icons.dart'; import 'package:aves/theme/icons.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/identity/aves_filter_chip.dart'; import 'package:aves/widgets/common/identity/aves_filter_chip.dart';
import 'package:aves/widgets/common/identity/buttons/outlined_button.dart'; import 'package:aves/widgets/common/identity/buttons/outlined_button.dart';
@ -34,7 +35,7 @@ class HiddenItemsPage extends StatelessWidget {
return DefaultTabController( return DefaultTabController(
length: tabs.length, length: tabs.length,
child: Scaffold( child: AvesScaffold(
appBar: AppBar( appBar: AppBar(
automaticallyImplyLeading: !settings.useTvLayout, automaticallyImplyLeading: !settings.useTvLayout,
title: Text(l10n.settingsHiddenItemsPageTitle), title: Text(l10n.settingsHiddenItemsPageTitle),

View file

@ -3,6 +3,7 @@ import 'package:aves/model/settings/enums/enums.dart';
import 'package:aves/model/settings/enums/slideshow_video_playback.dart'; import 'package:aves/model/settings/enums/slideshow_video_playback.dart';
import 'package:aves/model/settings/enums/viewer_transition.dart'; import 'package:aves/model/settings/enums/viewer_transition.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/settings/common/collection_tile.dart'; import 'package:aves/widgets/settings/common/collection_tile.dart';
import 'package:aves/widgets/settings/common/tiles.dart'; import 'package:aves/widgets/settings/common/tiles.dart';
@ -17,7 +18,7 @@ class ScreenSaverSettingsPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final l10n = context.l10n; final l10n = context.l10n;
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
title: Text(l10n.settingsScreenSaverPageTitle), title: Text(l10n.settingsScreenSaverPageTitle),
), ),

View file

@ -13,6 +13,7 @@ import 'package:aves/widgets/common/action_mixins/feedback.dart';
import 'package:aves/widgets/common/app_bar/app_bar_title.dart'; import 'package:aves/widgets/common/app_bar/app_bar_title.dart';
import 'package:aves/widgets/common/basic/insets.dart'; import 'package:aves/widgets/common/basic/insets.dart';
import 'package:aves/widgets/common/basic/menu.dart'; import 'package:aves/widgets/common/basic/menu.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/behaviour/pop/scope.dart'; import 'package:aves/widgets/common/behaviour/pop/scope.dart';
import 'package:aves/widgets/common/behaviour/pop/tv_navigation.dart'; import 'package:aves/widgets/common/behaviour/pop/tv_navigation.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
@ -74,7 +75,7 @@ class _SettingsPageState extends State<SettingsPage> with FeedbackMixin {
final appBarTitle = Text(context.l10n.settingsPageTitle); final appBarTitle = Text(context.l10n.settingsPageTitle);
if (settings.useTvLayout) { if (settings.useTvLayout) {
return Scaffold( return AvesScaffold(
body: AvesPopScope( body: AvesPopScope(
handlers: const [TvNavigationPopHandler.pop], handlers: const [TvNavigationPopHandler.pop],
child: Row( child: Row(
@ -148,7 +149,7 @@ class _SettingsPageState extends State<SettingsPage> with FeedbackMixin {
), ),
); );
} else { } else {
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
title: InteractiveAppBarTitle( title: InteractiveAppBarTitle(
onTap: () => _goToSearch(context), onTap: () => _goToSearch(context),

View file

@ -1,5 +1,6 @@
import 'package:aves/model/actions/entry_set_actions.dart'; import 'package:aves/model/actions/entry_set_actions.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/settings/common/quick_actions/editor_page.dart'; import 'package:aves/widgets/settings/common/quick_actions/editor_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -43,7 +44,7 @@ class CollectionActionEditorPage extends StatelessWidget {
return DefaultTabController( return DefaultTabController(
length: tabs.length, length: tabs.length,
child: Scaffold( child: AvesScaffold(
appBar: AppBar( appBar: AppBar(
title: Text(context.l10n.settingsCollectionQuickActionEditorPageTitle), title: Text(context.l10n.settingsCollectionQuickActionEditorPageTitle),
bottom: TabBar( bottom: TabBar(

View file

@ -5,6 +5,7 @@ import 'package:aves/model/settings/settings.dart';
import 'package:aves/theme/colors.dart'; import 'package:aves/theme/colors.dart';
import 'package:aves/theme/durations.dart'; import 'package:aves/theme/durations.dart';
import 'package:aves/theme/icons.dart'; import 'package:aves/theme/icons.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/identity/aves_icons.dart'; import 'package:aves/widgets/common/identity/aves_icons.dart';
import 'package:aves/widgets/settings/common/tiles.dart'; import 'package:aves/widgets/settings/common/tiles.dart';
@ -22,7 +23,7 @@ class ThumbnailOverlayPage extends StatelessWidget {
final iconSize = _getIconSize(context); final iconSize = _getIconSize(context);
final iconColor = _getIconColor(context); final iconColor = _getIconColor(context);
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
automaticallyImplyLeading: !settings.useTvLayout, automaticallyImplyLeading: !settings.useTvLayout,
title: Text(context.l10n.settingsThumbnailOverlayPageTitle), title: Text(context.l10n.settingsThumbnailOverlayPageTitle),

View file

@ -1,6 +1,7 @@
import 'package:aves/model/settings/enums/enums.dart'; import 'package:aves/model/settings/enums/enums.dart';
import 'package:aves/model/settings/enums/video_controls.dart'; import 'package:aves/model/settings/enums/video_controls.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/settings/common/tiles.dart'; import 'package:aves/widgets/settings/common/tiles.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -12,7 +13,7 @@ class VideoControlsPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
title: Text(context.l10n.settingsVideoControlsPageTitle), title: Text(context.l10n.settingsVideoControlsPageTitle),
), ),

View file

@ -2,6 +2,7 @@ import 'package:aves/model/settings/enums/enums.dart';
import 'package:aves/model/settings/enums/subtitle_position.dart'; import 'package:aves/model/settings/enums/subtitle_position.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/widgets/common/basic/color_list_tile.dart'; import 'package:aves/widgets/common/basic/color_list_tile.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/basic/slider_list_tile.dart'; import 'package:aves/widgets/common/basic/slider_list_tile.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/settings/common/tiles.dart'; import 'package:aves/widgets/settings/common/tiles.dart';
@ -16,7 +17,7 @@ class SubtitleThemePage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
automaticallyImplyLeading: !settings.useTvLayout, automaticallyImplyLeading: !settings.useTvLayout,
title: Text(context.l10n.settingsSubtitleThemePageTitle), title: Text(context.l10n.settingsSubtitleThemePageTitle),

View file

@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/settings/settings_definition.dart'; import 'package:aves/widgets/settings/settings_definition.dart';
import 'package:aves/widgets/settings/video/video.dart'; import 'package:aves/widgets/settings/video/video.dart';
@ -19,7 +20,7 @@ class _VideoSettingsPageState extends State<VideoSettingsPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final theme = Theme.of(context); final theme = Theme.of(context);
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
automaticallyImplyLeading: !settings.useTvLayout, automaticallyImplyLeading: !settings.useTvLayout,
title: Text(context.l10n.settingsVideoPageTitle), title: Text(context.l10n.settingsVideoPageTitle),

View file

@ -1,4 +1,5 @@
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/settings/common/tiles.dart'; import 'package:aves/widgets/settings/common/tiles.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -13,7 +14,7 @@ class ViewerOverlayPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final useTvLayout = settings.useTvLayout; final useTvLayout = settings.useTvLayout;
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
automaticallyImplyLeading: !useTvLayout, automaticallyImplyLeading: !useTvLayout,
title: Text(context.l10n.settingsViewerOverlayPageTitle), title: Text(context.l10n.settingsViewerOverlayPageTitle),

View file

@ -2,6 +2,7 @@ import 'package:aves/model/settings/enums/enums.dart';
import 'package:aves/model/settings/enums/slideshow_video_playback.dart'; import 'package:aves/model/settings/enums/slideshow_video_playback.dart';
import 'package:aves/model/settings/enums/viewer_transition.dart'; import 'package:aves/model/settings/enums/viewer_transition.dart';
import 'package:aves/model/settings/settings.dart'; import 'package:aves/model/settings/settings.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/settings/common/tiles.dart'; import 'package:aves/widgets/settings/common/tiles.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -14,7 +15,7 @@ class ViewerSlideshowPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final l10n = context.l10n; final l10n = context.l10n;
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
automaticallyImplyLeading: !settings.useTvLayout, automaticallyImplyLeading: !settings.useTvLayout,
title: Text(l10n.settingsViewerSlideshowPageTitle), title: Text(l10n.settingsViewerSlideshowPageTitle),

View file

@ -15,6 +15,7 @@ import 'package:aves/theme/icons.dart';
import 'package:aves/utils/constants.dart'; import 'package:aves/utils/constants.dart';
import 'package:aves/widgets/collection/collection_page.dart'; import 'package:aves/widgets/collection/collection_page.dart';
import 'package:aves/widgets/common/basic/insets.dart'; import 'package:aves/widgets/common/basic/insets.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/basic/tv_edge_focus.dart'; import 'package:aves/widgets/common/basic/tv_edge_focus.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/extensions/media_query.dart'; import 'package:aves/widgets/common/extensions/media_query.dart';
@ -219,7 +220,7 @@ class _StatsPageState extends State<StatsPage> {
} }
} }
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
automaticallyImplyLeading: !useTvLayout, automaticallyImplyLeading: !useTvLayout,
title: Text(l10n.statsPageTitle), title: Text(l10n.statsPageTitle),
@ -366,7 +367,7 @@ class StatsTopPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
automaticallyImplyLeading: !settings.useTvLayout, automaticallyImplyLeading: !settings.useTvLayout,
title: Text(title), title: Text(title),

View file

@ -1,5 +1,6 @@
import 'package:aves/model/entry.dart'; import 'package:aves/model/entry.dart';
import 'package:aves/model/source/collection_lens.dart'; import 'package:aves/model/source/collection_lens.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/viewer/controller.dart'; import 'package:aves/widgets/viewer/controller.dart';
import 'package:aves/widgets/viewer/entry_viewer_stack.dart'; import 'package:aves/widgets/viewer/entry_viewer_stack.dart';
import 'package:aves/widgets/viewer/multipage/conductor.dart'; import 'package:aves/widgets/viewer/multipage/conductor.dart';
@ -40,7 +41,7 @@ class _EntryViewerPageState extends State<EntryViewerPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return AvesScaffold(
body: ViewStateConductorProvider( body: ViewStateConductorProvider(
child: VideoConductorProvider( child: VideoConductorProvider(
child: MultiPageConductorProvider( child: MultiPageConductorProvider(

View file

@ -7,6 +7,7 @@ import 'package:aves/model/filters/filters.dart';
import 'package:aves/model/source/collection_lens.dart'; import 'package:aves/model/source/collection_lens.dart';
import 'package:aves/theme/durations.dart'; import 'package:aves/theme/durations.dart';
import 'package:aves/widgets/common/basic/insets.dart'; import 'package:aves/widgets/common/basic/insets.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/basic/tv_edge_focus.dart'; import 'package:aves/widgets/common/basic/tv_edge_focus.dart';
import 'package:aves/widgets/filter_grids/common/action_delegates/chip.dart'; import 'package:aves/widgets/filter_grids/common/action_delegates/chip.dart';
import 'package:aves/widgets/viewer/action/entry_info_action_delegate.dart'; import 'package:aves/widgets/viewer/action/entry_info_action_delegate.dart';
@ -85,7 +86,7 @@ class _InfoPageState extends State<InfoPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return AvesScaffold(
body: GestureAreaProtectorStack( body: GestureAreaProtectorStack(
child: SafeArea( child: SafeArea(
bottom: false, bottom: false,

View file

@ -7,6 +7,7 @@ import 'package:aves/model/settings/settings.dart';
import 'package:aves/theme/icons.dart'; import 'package:aves/theme/icons.dart';
import 'package:aves/widgets/aves_app.dart'; import 'package:aves/widgets/aves_app.dart';
import 'package:aves/widgets/common/basic/insets.dart'; import 'package:aves/widgets/common/basic/insets.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/extensions/media_query.dart'; import 'package:aves/widgets/common/extensions/media_query.dart';
import 'package:aves/widgets/common/identity/buttons/overlay_button.dart'; import 'package:aves/widgets/common/identity/buttons/overlay_button.dart';
@ -60,7 +61,7 @@ class _PanoramaPageState extends State<PanoramaPage> {
_onLeave(); _onLeave();
return SynchronousFuture(true); return SynchronousFuture(true);
}, },
child: Scaffold( child: AvesScaffold(
body: Stack( body: Stack(
children: [ children: [
ValueListenableBuilder<SensorControl>( ValueListenableBuilder<SensorControl>(

View file

@ -4,6 +4,7 @@ import 'package:aves/model/settings/settings.dart';
import 'package:aves/model/source/collection_lens.dart'; import 'package:aves/model/source/collection_lens.dart';
import 'package:aves/model/source/collection_source.dart'; import 'package:aves/model/source/collection_source.dart';
import 'package:aves/theme/icons.dart'; import 'package:aves/theme/icons.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/identity/empty.dart'; import 'package:aves/widgets/common/identity/empty.dart';
import 'package:aves/widgets/viewer/controller.dart'; import 'package:aves/widgets/viewer/controller.dart';
@ -93,7 +94,7 @@ class _ScreenSaverPageState extends State<ScreenSaverPage> with WidgetsBindingOb
} }
} }
return Scaffold( return AvesScaffold(
body: child, body: child,
); );
} }

View file

@ -7,6 +7,7 @@ import 'package:aves/model/settings/settings.dart';
import 'package:aves/model/source/collection_lens.dart'; import 'package:aves/model/source/collection_lens.dart';
import 'package:aves/theme/icons.dart'; import 'package:aves/theme/icons.dart';
import 'package:aves/widgets/collection/collection_page.dart'; import 'package:aves/widgets/collection/collection_page.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/identity/empty.dart'; import 'package:aves/widgets/common/identity/empty.dart';
import 'package:aves/widgets/viewer/controller.dart'; import 'package:aves/widgets/viewer/controller.dart';
@ -59,7 +60,7 @@ class _SlideshowPageState extends State<SlideshowPage> {
final entries = _slideshowCollection.sortedEntries; final entries = _slideshowCollection.sortedEntries;
return ListenableProvider<ValueNotifier<AppMode>>.value( return ListenableProvider<ValueNotifier<AppMode>>.value(
value: ValueNotifier(AppMode.slideshow), value: ValueNotifier(AppMode.slideshow),
child: Scaffold( child: AvesScaffold(
body: entries.isEmpty body: entries.isEmpty
? EmptyContent( ? EmptyContent(
icon: AIcons.image, icon: AIcons.image,

View file

@ -1,4 +1,5 @@
import 'package:aves/widgets/common/aves_highlight.dart'; import 'package:aves/widgets/common/aves_highlight.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_highlight/themes/darcula.dart'; import 'package:flutter_highlight/themes/darcula.dart';
@ -30,7 +31,7 @@ class _SourceViewerPageState extends State<SourceViewerPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return AvesScaffold(
appBar: AppBar( appBar: AppBar(
title: Text(context.l10n.sourceViewerPageTitle), title: Text(context.l10n.sourceViewerPageTitle),
), ),

View file

@ -5,6 +5,7 @@ import 'package:aves/services/common/services.dart';
import 'package:aves/theme/durations.dart'; import 'package:aves/theme/durations.dart';
import 'package:aves/widgets/aves_app.dart'; import 'package:aves/widgets/aves_app.dart';
import 'package:aves/widgets/common/basic/insets.dart'; import 'package:aves/widgets/common/basic/insets.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/viewer/controller.dart'; import 'package:aves/widgets/viewer/controller.dart';
import 'package:aves/widgets/viewer/entry_horizontal_pager.dart'; import 'package:aves/widgets/viewer/entry_horizontal_pager.dart';
import 'package:aves/widgets/viewer/entry_viewer_page.dart'; import 'package:aves/widgets/viewer/entry_viewer_page.dart';
@ -34,7 +35,7 @@ class WallpaperPage extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return AvesScaffold(
body: entry != null body: entry != null
? ViewStateConductorProvider( ? ViewStateConductorProvider(
child: VideoConductorProvider( child: VideoConductorProvider(

View file

@ -7,6 +7,7 @@ import 'package:aves/utils/constants.dart';
import 'package:aves/widgets/about/policy_page.dart'; import 'package:aves/widgets/about/policy_page.dart';
import 'package:aves/widgets/common/basic/link_chip.dart'; import 'package:aves/widgets/common/basic/link_chip.dart';
import 'package:aves/widgets/common/basic/markdown_container.dart'; import 'package:aves/widgets/common/basic/markdown_container.dart';
import 'package:aves/widgets/common/basic/scaffold.dart';
import 'package:aves/widgets/common/extensions/build_context.dart'; import 'package:aves/widgets/common/extensions/build_context.dart';
import 'package:aves/widgets/common/identity/aves_logo.dart'; import 'package:aves/widgets/common/identity/aves_logo.dart';
import 'package:aves/widgets/common/identity/buttons/outlined_button.dart'; import 'package:aves/widgets/common/identity/buttons/outlined_button.dart';
@ -49,7 +50,7 @@ class _WelcomePageState extends State<WelcomePage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return AvesScaffold(
body: SafeArea( body: SafeArea(
child: Center( child: Center(
child: FutureBuilder<String>( child: FutureBuilder<String>(