jianboy 1 year ago
parent
commit
541c9eea65

+ 2 - 2
lib/components/board.dart

@@ -1,7 +1,7 @@
 import 'package:flutter/material.dart';
 
 import '../models/game_manager.dart';
-import '../widgets/game_wrapper.dart';
+import '../pages/home_page.dart';
 
 /// 棋盘
 class Board extends StatefulWidget {
@@ -15,7 +15,7 @@ class BoardState extends State<Board> {
   @override
   Widget build(BuildContext context) {
     GameManager gamer =
-        context.findAncestorStateOfType<GameWrapperState>()!.gamer;
+        context.findAncestorStateOfType<HomePageState>()!.gamer;
     return SizedBox(
       width: gamer.skin.width,
       height: gamer.skin.height,

+ 3 - 3
lib/components/chess.dart

@@ -15,7 +15,7 @@ import '../models/game_event.dart';
 import '../models/sound.dart';
 import '../models/game_manager.dart';
 import '../driver/player_driver.dart';
-import '../widgets/game_wrapper.dart';
+import '../pages/home_page.dart';
 
 class Chess extends StatefulWidget {
   final String skin;
@@ -55,8 +55,8 @@ class ChessState extends State<Chess> {
   void initGamer() {
     if (isInit) return;
     isInit = true;
-    GameWrapperState? gameWrapper =
-        context.findAncestorStateOfType<GameWrapperState>();
+    HomePageState? gameWrapper =
+        context.findAncestorStateOfType<HomePageState>();
     if (gameWrapper == null) return;
     gamer = gameWrapper.gamer;
 

+ 2 - 3
lib/components/chess_box.dart

@@ -5,7 +5,7 @@ import 'edit_fen.dart';
 import 'piece.dart';
 import '../global.dart';
 import '../models/game_manager.dart';
-import '../widgets/game_wrapper.dart';
+import '../pages/home_page.dart';
 
 /// 棋子盒 双方
 class ChessBox extends StatefulWidget {
@@ -112,8 +112,7 @@ class ItemWidget extends StatelessWidget {
 
   @override
   Widget build(BuildContext context) {
-    GameWrapperState wrapper =
-        context.findAncestorStateOfType<GameWrapperState>()!;
+    HomePageState wrapper = context.findAncestorStateOfType<HomePageState>()!;
     GameManager manager = wrapper.gamer;
     _ChessBoxState parent = context.findAncestorStateOfType<_ChessBoxState>()!;
     return GestureDetector(

+ 4 - 5
lib/components/chess_single_box.dart

@@ -5,7 +5,7 @@ import 'edit_fen.dart';
 import 'piece.dart';
 import '../global.dart';
 import '../models/game_manager.dart';
-import '../widgets/game_wrapper.dart';
+import '../pages/home_page.dart';
 
 /// 棋子盒 单方
 class ChessSingleBox extends StatefulWidget {
@@ -55,8 +55,8 @@ class _ChessBoxState extends State<ChessSingleBox> {
   @override
   Widget build(BuildContext context) {
     if (gamer == null) {
-      GameWrapperState gameWrapper =
-          context.findAncestorStateOfType<GameWrapperState>()!;
+      HomePageState gameWrapper =
+          context.findAncestorStateOfType<HomePageState>()!;
       gamer = gameWrapper.gamer;
     }
     return SizedBox(
@@ -108,8 +108,7 @@ class ItemWidget extends StatelessWidget {
 
   @override
   Widget build(BuildContext context) {
-    GameWrapperState wrapper =
-        context.findAncestorStateOfType<GameWrapperState>()!;
+    HomePageState wrapper = context.findAncestorStateOfType<HomePageState>()!;
     GameManager manager = wrapper.gamer;
     _ChessBoxState parent = context.findAncestorStateOfType<_ChessBoxState>()!;
     return GestureDetector(

+ 3 - 3
lib/components/edit_fen.dart

@@ -6,7 +6,7 @@ import 'chess_pieces.dart';
 import 'chess_single_box.dart';
 import 'board.dart';
 import '../global.dart';
-import '../widgets/game_wrapper.dart';
+import '../pages/home_page.dart';
 import '../models/game_manager.dart';
 
 /// 编辑局面
@@ -146,8 +146,8 @@ class EditFenState extends State<EditFen> {
   @override
   Widget build(BuildContext context) {
     if (gamer == null) {
-      GameWrapperState gameWrapper =
-          context.findAncestorStateOfType<GameWrapperState>()!;
+      HomePageState gameWrapper =
+          context.findAncestorStateOfType<HomePageState>()!;
       gamer = gameWrapper.gamer;
     }
 

+ 2 - 2
lib/components/piece.dart

@@ -2,7 +2,7 @@ import 'package:cchess/cchess.dart';
 import 'package:flutter/material.dart';
 
 import '../models/game_manager.dart';
-import '../widgets/game_wrapper.dart';
+import '../pages/home_page.dart';
 
 /// 棋子
 class Piece extends StatelessWidget {
@@ -32,7 +32,7 @@ class Piece extends StatelessWidget {
   @override
   Widget build(BuildContext context) {
     GameManager gamer =
-        context.findAncestorStateOfType<GameWrapperState>()!.gamer;
+        context.findAncestorStateOfType<HomePageState>()!.gamer;
     String team = item.team == 0 ? 'r' : 'b';
 
     return item.isBlank

+ 3 - 3
lib/components/play_player.dart

@@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
 import '../global.dart';
 import '../driver/player_driver.dart';
 import '../models/game_event.dart';
-import '../widgets/game_wrapper.dart';
+import '../pages/home_page.dart';
 import '../models/game_manager.dart';
 import '../widgets/tab_card.dart';
 
@@ -22,8 +22,8 @@ class PlayPlayerState extends State<PlayPlayer> {
   @override
   void initState() {
     super.initState();
-    GameWrapperState gameWrapper =
-        context.findAncestorStateOfType<GameWrapperState>()!;
+    HomePageState gameWrapper =
+        context.findAncestorStateOfType<HomePageState>()!;
     gamer = gameWrapper.gamer;
     gamer.on<GamePlayerEvent>(onChangePlayer);
     gamer.on<GameLoadEvent>(onReloadGame);

+ 3 - 3
lib/game_board.dart

@@ -10,10 +10,10 @@ import 'package:flutter/services.dart';
 import 'package:universal_html/html.dart' as html;
 
 import 'global.dart';
-import 'setting.dart';
+import 'pages/setting_page.dart';
 import 'components/game_bottom_bar.dart';
 import 'models/play_mode.dart';
-import 'widgets/game_wrapper.dart';
+import 'pages/home_page.dart';
 import 'models/game_manager.dart';
 import 'components/play.dart';
 import 'components/edit_fen.dart';
@@ -278,7 +278,7 @@ class _GameBoardState extends State<GameBoard> {
     Navigator.of(context).push<String>(
       MaterialPageRoute(
         builder: (BuildContext context) {
-          return GameWrapper(child: EditFen(fen: gamer.fenStr));
+          return HomePage(child: EditFen(fen: gamer.fenStr));
         },
       ),
     ).then((fenStr) {

+ 6 - 6
lib/main.dart

@@ -9,7 +9,7 @@ import 'package:window_manager/window_manager.dart';
 
 import 'global.dart';
 import 'l10n/generated/app_localizations.dart';
-import 'widgets/game_wrapper.dart';
+import 'pages/home_page.dart';
 import 'game_board.dart';
 
 void main() async {
@@ -33,7 +33,7 @@ void main() async {
   }
   final gamer = GameManager();
   await gamer.init();
-  runApp(const MainApp());
+  runApp(const MyApp());
 }
 
 class MainWindowListener extends WindowListener {
@@ -43,13 +43,13 @@ class MainWindowListener extends WindowListener {
   }
 }
 
-class MainApp extends StatelessWidget {
-  const MainApp({Key? key}) : super(key: key);
+class MyApp extends StatelessWidget {
+  const MyApp({Key? key}) : super(key: key);
 
   @override
   Widget build(BuildContext context) {
     return MaterialApp(
-      title: '',
+      title: '中国象棋',
       onGenerateTitle: (BuildContext context) {
         if (!kIsWeb &&
             (Platform.isWindows || Platform.isLinux || Platform.isMacOS)) {
@@ -76,7 +76,7 @@ class MainApp extends StatelessWidget {
         isDark: true,
         isHighContrast: true,
       ),
-      home: const GameWrapper(
+      home: const HomePage(
         isMain: true,
         child: GameBoard(),
       ),

+ 87 - 50
lib/pages/home_page.dart

@@ -1,50 +1,87 @@
-import 'package:flutter/material.dart';
-import 'package:flutter_chinese_chees/game_board.dart';
-import 'package:flutter_chinese_chees/models/game_manager.dart';
-
-/// Description: 游戏界面
-/// Time       : 04/28/2023 Friday
-/// Author     : liuyuqi.gov@msn.cn
-class HomePage extends StatefulWidget {
-  const HomePage({super.key});
-
-  @override
-  State<HomePage> createState() => _HomePageState();
-}
-
-class _HomePageState extends State<HomePage> {
-  final GameManager gamer = GameManager();
-
-  @override
-  Widget build(BuildContext context) {
-    return Scaffold(
-      appBar: AppBar(
-          title: Text("context.l10n.appTitle"),
-          leading: Builder(builder: (context) {
-            return IconButton(
-              icon: Icon(Icons.menu),
-              onPressed: () {
-                Scaffold.of(context).openDrawer();
-              },
-            );
-          }),
-          actions: [
-            IconButton(
-              icon: Icon(Icons.logout),
-              onPressed: () {},
-            )
-          ]),
-      drawer: Drawer(
-          child: ListView(children: [
-        UserAccountsDrawerHeader(
-            accountName: Text("张三"), accountEmail: Text(""))
-      ])),
-      body: GameBoard(),
-    );
-  }
-
-  @override
-  void dispose() {
-    super.dispose();
-  }
-}
+import 'dart:async';
+import 'dart:io';
+import 'package:flutter/foundation.dart';
+import 'package:shirne_dialog/shirne_dialog.dart';
+import 'package:flutter/material.dart';
+import 'package:window_manager/window_manager.dart';
+
+import '../global.dart';
+import '../models/game_manager.dart';
+
+class HomePage extends StatefulWidget {
+  final Widget child;
+  final bool isMain;
+
+  const HomePage({Key? key, required this.child, this.isMain = false})
+      : super(key: key);
+
+  static HomePageState of(BuildContext context) {
+    return context.findAncestorStateOfType<HomePageState>()!;
+  }
+
+  @override
+  State<HomePage> createState() => HomePageState();
+}
+
+class HomePageState extends State<HomePage> with WindowListener {
+  final GameManager gamer = GameManager();
+
+  @override
+  void initState() {
+    super.initState();
+    if (widget.isMain) {
+      if (!kIsWeb &&
+          (Platform.isWindows || Platform.isMacOS || Platform.isLinux)) {
+        windowManager.addListener(this);
+      }
+    }
+  }
+
+  @override
+  void dispose() {
+    if (widget.isMain) {
+      gamer.dispose();
+    }
+    super.dispose();
+  }
+
+  @override
+  void onWindowClose() {
+    logger.info('gamer destroy');
+    windowManager.removeListener(this);
+    gamer.dispose();
+    GameManager.instance.engine?.dispose();
+  }
+
+  Future<bool> _willPop() async {
+    logger.info('onwillpop');
+    final sure = await MyDialog.confirm(
+      context.l10n.exitNow,
+      buttonText: context.l10n.yesExit,
+      cancelText: context.l10n.dontExit,
+    );
+
+    if (sure ?? false) {
+      logger.info('gamer destroy');
+      gamer.dispose();
+      //gamer = null;
+      await Future.delayed(const Duration(milliseconds: 200));
+      return true;
+    }
+    return false;
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    Size size = MediaQuery.of(context).size;
+    if (size.width < 541) {
+      gamer.scale = (size.width - 20) / 521;
+    } else {
+      gamer.scale = 1;
+    }
+    return WillPopScope(
+      onWillPop: widget.isMain ? _willPop : null,
+      child: widget.child,
+    );
+  }
+}

+ 4 - 4
lib/setting.dart → lib/pages/setting_page.dart

@@ -2,10 +2,10 @@ import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 import 'package:shirne_dialog/shirne_dialog.dart';
 
-import 'global.dart';
-import 'models/engine_type.dart';
-import 'models/engine_level.dart';
-import 'models/game_setting.dart';
+import '../global.dart';
+import '../models/engine_type.dart';
+import '../models/engine_level.dart';
+import '../models/game_setting.dart';
 
 /// 设置页
 class SettingPage extends StatefulWidget {

+ 2 - 2
lib/routes.dart

@@ -15,8 +15,8 @@ class Routes {
 
   static Route onGenerateRoute(RouteSettings settings) {
     switch (settings.name) {
-      case home:
-        return MaterialPageRoute(builder: (_) => const HomePage());
+      // case home:
+      //   return MaterialPageRoute(builder: (_) => HomePage());
       case login:
         return MaterialPageRoute(builder: (_) => const LoginPage());
       case register:

+ 0 - 87
lib/widgets/game_wrapper.dart

@@ -1,87 +0,0 @@
-import 'dart:async';
-import 'dart:io';
-import 'package:flutter/foundation.dart';
-import 'package:shirne_dialog/shirne_dialog.dart';
-import 'package:flutter/material.dart';
-import 'package:window_manager/window_manager.dart';
-
-import '../global.dart';
-import '../models/game_manager.dart';
-
-class GameWrapper extends StatefulWidget {
-  final Widget child;
-  final bool isMain;
-
-  const GameWrapper({Key? key, required this.child, this.isMain = false})
-      : super(key: key);
-
-  static GameWrapperState of(BuildContext context) {
-    return context.findAncestorStateOfType<GameWrapperState>()!;
-  }
-
-  @override
-  State<GameWrapper> createState() => GameWrapperState();
-}
-
-class GameWrapperState extends State<GameWrapper> with WindowListener {
-  final GameManager gamer = GameManager();
-
-  @override
-  void initState() {
-    super.initState();
-    if (widget.isMain) {
-      if (!kIsWeb &&
-          (Platform.isWindows || Platform.isMacOS || Platform.isLinux)) {
-        windowManager.addListener(this);
-      }
-    }
-  }
-
-  @override
-  void dispose() {
-    if (widget.isMain) {
-      gamer.dispose();
-    }
-    super.dispose();
-  }
-
-  @override
-  void onWindowClose() {
-    logger.info('gamer destroy');
-    windowManager.removeListener(this);
-    gamer.dispose();
-    GameManager.instance.engine?.dispose();
-  }
-
-  Future<bool> _willPop() async {
-    logger.info('onwillpop');
-    final sure = await MyDialog.confirm(
-      context.l10n.exitNow,
-      buttonText: context.l10n.yesExit,
-      cancelText: context.l10n.dontExit,
-    );
-
-    if (sure ?? false) {
-      logger.info('gamer destroy');
-      gamer.dispose();
-      //gamer = null;
-      await Future.delayed(const Duration(milliseconds: 200));
-      return true;
-    }
-    return false;
-  }
-
-  @override
-  Widget build(BuildContext context) {
-    Size size = MediaQuery.of(context).size;
-    if (size.width < 541) {
-      gamer.scale = (size.width - 20) / 521;
-    } else {
-      gamer.scale = 1;
-    }
-    return WillPopScope(
-      onWillPop: widget.isMain ? _willPop : null,
-      child: widget.child,
-    );
-  }
-}