Files
winui_n2n/lib/main.dart
2024-07-20 12:45:47 +08:00

78 lines
2.1 KiB
Dart

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:window_manager/window_manager.dart';
import 'package:winui_n2n/application_exit_control.dart';
import 'package:winui_n2n/edge_state.dart';
import 'package:winui_n2n/shared_pref_singleton.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await windowManager.ensureInitialized();
WindowOptions windowOptions = const WindowOptions(
size: Size(630, 420),
center: true,
backgroundColor: Colors.transparent,
skipTaskbar: false,
titleBarStyle: TitleBarStyle.normal,
windowButtonVisibility: false,
);
windowManager.waitUntilReadyToShow(windowOptions, () async {
await windowManager.show();
await windowManager.focus();
});
await initSingleton();
runApp(const MainApp());
}
class MainApp extends StatefulWidget {
const MainApp({super.key});
@override
State<MainApp> createState() => _MainAppState();
static _MainAppState of(BuildContext context) {
return context.findAncestorStateOfType<_MainAppState>()!;
}
}
class _MainAppState extends State<MainApp> {
// false = dark, true = light
ThemeMode _themeMode =
SharedPrefSingleton().appTheme ? ThemeMode.light : ThemeMode.dark;
ThemeMode get getCurrentTheme => _themeMode;
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(),
darkTheme: ThemeData.dark(),
themeMode: _themeMode,
home: const Scaffold(
body: ApplicationExitControl(),
),
);
}
void changeTheme(ThemeMode mode) {
mode == ThemeMode.light
? SharedPrefSingleton().setAppTheme(true).then((onValue) {
setState(() {
_themeMode = mode;
});
})
: SharedPrefSingleton().setAppTheme(false).then((onValue) {
setState(() {
_themeMode = mode;
});
});
}
}
Future<void> initSingleton() async {
EdgeState.instance;
await SharedPrefSingleton().initialize();
}