-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfiguration.dart
More file actions
102 lines (95 loc) · 3.28 KB
/
Copy pathconfiguration.dart
File metadata and controls
102 lines (95 loc) · 3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import 'package:adaptive_scaffold/adaptive_scaffold.dart';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:logger/logger.dart';
import 'package:utilities/utilities.dart';
import 'gen/theme/colors.helpis.dart';
import 'routes.dart';
import 'widgets/destination_icon.dart';
import 'widgets/switch_theme_button.dart';
GoRouterAdaptiveScaffoldConfig configureAdaptiveScaffold({
required final BuildContext context,
required final GoRouterBodyConfig bodyConfig,
final DrawerCallback? onDrawerChanged,
}) =>
GoRouterAdaptiveScaffoldConfig(
useSalomonBar: true,
useInternalAnimations: false,
drawerConfig: AdaptiveDrawerConfig(
onDrawerChanged: onDrawerChanged,
),
navigationRailConfig: configureNavigationRail(context),
appBar: configureAppBar(context),
scrollbarConfig: configureAdaptiveScrollbar(context),
bodyConfig: bodyConfig,
);
AdaptiveAppBar configureAppBar(final BuildContext context) {
final ButtonStyle iconStyle = IconButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(50),
),
fixedSize: const Size.square(54),
iconSize: 36,
);
return AdaptiveAppBar.fromContext(
context: context,
title: H4(
context.currentRoute.title(context),
style: H4.defaultStyle.copyWith(
fontFamily: GoogleFonts.comfortaa().fontFamily,
),
),
gtkSpecificOptions: GTKAppBarSpecificOptions(
backButtonStyle: iconStyle,
trailing: <Widget>[SwitchThemeButton(iconStyle: iconStyle)],
),
);
}
AdaptiveScrollbarConfig configureAdaptiveScrollbar(
final BuildContext context,
) =>
AdaptiveScrollbarConfig(
controller: ScrollController(),
width: 28,
sliderDefaultColor: context.currentTheme.onTertiaryContainer,
sliderActiveColor: context.currentTheme.onSurface,
underColor: context.currentTheme.tertiaryContainer,
sliderSpacing: EdgeInsets.zero,
);
NavigationRailConfig configureNavigationRail(final BuildContext context) =>
NavigationRailConfig(
backgroundColor: context.currentTheme.themeData.scaffoldBackground,
padding: EdgeInsets.zero,
extendedWidth: 300,
elevation: 2,
selectedIndex: context.currentRoute.index,
onDestinationSelected: (final int index, final _, final __) async =>
AppRoute.fromIndex(index)?.navigate<void>(context, RoutingMethod.go),
destinations: <NavigationDestination>[
NavigationDestination(
icon: const DestinationIcon(iconData: Icons.start_rounded),
label: const OpeningRoute().title(context),
),
NavigationDestination(
icon: const DestinationIcon(iconData: Icons.price_check),
label: const ProductListRoute().title(context),
),
NavigationDestination(
icon: const DestinationIcon(iconData: Icons.settings),
label: const SettingsRoute().title(context),
),
],
);
final Logger logger = Logger(
level: Level.warning,
printer: PrefixPrinter(
PrettyPrinter(methodCount: 15, printTime: true),
debug: 'DEBUG',
trace: 'TRACE',
info: 'INFO',
warning: 'WARNING',
error: 'ERROR',
fatal: 'FATAL',
),
);
bool get configureGTK => Platform.isDesktop && !Platform.isWeb;