-
Notifications
You must be signed in to change notification settings - Fork 534
/
Copy pathmain.dart
81 lines (77 loc) · 2.01 KB
/
main.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
import 'package:apidash_design_system/apidash_design_system.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'models/models.dart';
import 'providers/providers.dart';
import 'services/services.dart';
import 'consts.dart';
import 'app.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
var settingsModel = await getSettingsFromSharedPrefs();
final initStatus = await initApp(
kIsDesktop,
settingsModel: settingsModel,
);
if (kIsDesktop) {
await initWindow(settingsModel: settingsModel);
}
if (!initStatus) {
settingsModel = settingsModel?.copyWithPath(workspaceFolderPath: null);
}
runApp(
ProviderScope(
overrides: [
settingsProvider.overrideWith(
(ref) => ThemeStateNotifier(settingsModel: settingsModel),
)
],
child: const DashApp(),
),
);
}
Future<bool> initApp(
bool initializeUsingPath, {
SettingsModel? settingsModel,
}) async {
GoogleFonts.config.allowRuntimeFetching = false;
try {
debugPrint("initializeUsingPath: $initializeUsingPath");
debugPrint("workspaceFolderPath: ${settingsModel?.workspaceFolderPath}");
final openBoxesStatus = await initHiveBoxes(
initializeUsingPath,
settingsModel?.workspaceFolderPath,
);
debugPrint("openBoxesStatus: $openBoxesStatus");
if (openBoxesStatus) {
await HistoryServiceImpl().autoClearHistory(settingsModel: settingsModel);
}
return openBoxesStatus;
} catch (e) {
debugPrint("initApp failed due to $e");
return false;
}
}
Future<void> initWindow({
Size? sz,
SettingsModel? settingsModel,
}) async {
if (kIsLinux) {
await setupInitialWindow(
sz: sz ?? settingsModel?.size,
);
}
if (kIsMacOS || kIsWindows) {
if (sz != null) {
await setupWindow(
sz: sz,
off: const Offset(100, 100),
);
} else {
await setupWindow(
sz: settingsModel?.size,
off: settingsModel?.offset,
);
}
}
}