main.dart 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import 'dart:io';
  2. import 'package:flutter/foundation.dart';
  3. import 'package:flutter/material.dart';
  4. import 'package:flutter/services.dart';
  5. import 'package:flutter_chinese_chees/routes.dart';
  6. import 'package:flutter_chinese_chees/utils/game_manager.dart';
  7. import 'package:window_manager/window_manager.dart';
  8. /// Description: enter point
  9. /// Time : 04/28/2023 Friday
  10. /// Author : liuyuqi.gov@msn.cn
  11. void main() async {
  12. WidgetsFlutterBinding.ensureInitialized();
  13. if (!kIsWeb && (Platform.isMacOS || Platform.isWindows || Platform.isLinux)) {
  14. await windowManager.ensureInitialized();
  15. }
  16. const windowOptions = WindowOptions(
  17. size: Size(1024, 720),
  18. center: true,
  19. backgroundColor: Colors.transparent,
  20. skipTaskbar: false,
  21. titleBarStyle: TitleBarStyle.normal);
  22. windowManager.waitUntilReadyToShow(windowOptions, () async {
  23. await windowManager.show();
  24. await windowManager.focus();
  25. });
  26. windowManager.addListener(MainWindowListener());
  27. runApp(const MyApp());
  28. if (Platform.isAndroid) {
  29. SystemUiOverlayStyle systemUiOverlayStyle =
  30. const SystemUiOverlayStyle(statusBarColor: Colors.transparent);
  31. SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
  32. }
  33. }
  34. class MainWindowListener extends WindowListener {
  35. @override
  36. void onWindowClose() {
  37. super.onWindowClose();
  38. GameManager.instance.engine?.dispose();
  39. }
  40. }
  41. class MyApp extends StatelessWidget {
  42. const MyApp({super.key});
  43. // This widget is the root of your application.
  44. @override
  45. Widget build(BuildContext context) {
  46. return MaterialApp(
  47. title: '中国象棋',
  48. debugShowCheckedModeBanner: false,
  49. theme: ThemeData(
  50. primarySwatch: Colors.blue,
  51. ),
  52. onGenerateRoute: Routes.onGenerateRoute,
  53. initialRoute: Routes.home,
  54. );
  55. }
  56. }