-
Notifications
You must be signed in to change notification settings - Fork 0
/
dg-components.dart
136 lines (125 loc) · 4.45 KB
/
dg-components.dart
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
import 'dart:io';
import 'package:bitsdojo_window/bitsdojo_window.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:logging/logging.dart';
import 'package:provider/provider.dart';
import 'constants/globals.dart';
import 'constants/languages.dart';
import 'constants/providers.dart';
import 'constants/themes.dart';
import 'system/dg-providers.dart';
import 'system/dg-providers/language_provider.dart';
import 'widget_tools/app_restart.dart';
import 'widget_tools/dg_scroll_behavior.dart';
import 'package:theme_provider/theme_provider.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'routes/router.dart';
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
final _appRouter = AppRouter();
return ThemeProvider(
defaultThemeId: defaultTheme,
saveThemesOnChange: true,
loadThemeOnInit: true,
themes: Themes.get(),
/*onInitCallback: (controller, previouslySavedThemeFuture) async {
String? savedTheme = await previouslySavedThemeFuture;
if (savedTheme != null) {
// If previous theme saved, use saved theme
controller.setTheme(savedTheme);
} else {
// If previous theme not found, use platform default
Brightness platformBrightness =
SchedulerBinding.instance.window.platformBrightness;
if (platformBrightness == Brightness.dark) {
controller.setTheme('dark');
} else {
controller.setTheme('light');
}
// Forget the saved theme(which were saved just now by previous lines)
controller.forgetSavedTheme();
}
},*/
child: ThemeConsumer(child: Builder(builder: (themeContext) {
isDarkTheme = ThemeProvider.themeOf(themeContext).id.contains('dark');
return Consumer<LanguageProvider>(builder: (context, state, child) {
return MaterialApp.router(
builder: (context, child) {
return ScrollConfiguration(
behavior: AppBehavior(), child: child!);
},
locale: state.locale,
supportedLocales: languages,
localizationsDelegates: const [
AppLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
scrollBehavior: DGScrollBehavior(),
theme: ThemeProvider.themeOf(themeContext).data,
// darkTheme: CustomTheme.darkTheme,
// themeMode: currentTheme.currentTheme,
debugShowCheckedModeBanner: true,
routerDelegate: _appRouter.delegate(),
routeInformationParser: _appRouter.defaultRouteParser(),
);
});
})),
);
}
}
class DGComponents extends StatefulWidget {
const DGComponents({Key? key}) : super(key: key);
@override
State<DGComponents> createState() => _DGComponentsState();
}
class _DGComponentsState extends State<DGComponents> {
@override
Widget build(BuildContext context) {
return AppRestart(
child: MultiProvider(
providers: Providers.get(),
child: MultiProvider(
providers: DGProviders.get(), child: const MyApp())));
}
}
class DGComponentsInstall {
static get({required bool setupLogging}) async {
// await DartVLC.initialize(useFlutterNativeView: true);
if (setupLogging) {
Logger.root.level = Level.ALL;
Logger.root.onRecord.listen(
(rec) => {print("${rec.level.name}: ${rec.time} : ${rec.message}")});
}
if (!kIsWeb) {
if (Platform.isWindows) {
doWhenWindowReady(() {
final win = appWindow;
const initialSize = Size(400, 600);
//const initialSize = Size(1000, 600);
win.minSize = initialSize;
win.size = initialSize;
win.alignment = Alignment.center;
// win.title = "Custom window with Flutter";
win.show();
});
}
}
}
}
class AppBehavior extends ScrollBehavior {
@override
Widget buildOverscrollIndicator(
BuildContext context, Widget child, ScrollableDetails details) {
return child;
}
}