mirror of
https://github.com/foss42/apidash.git
synced 2025-05-21 08:16:29 +08:00
82 lines
2.0 KiB
Dart
82 lines
2.0 KiB
Dart
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 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,
|
|
);
|
|
}
|
|
}
|
|
}
|