瀏覽代碼

重写home/main

x1ongzhu 6 年之前
父節點
當前提交
b2554f604e
共有 47 個文件被更改,包括 298 次插入137 次删除
  1. 42 0
      copyicon.js
  2. 二進制
      images/2x/home_icon_fangjian.png
  3. 二進制
      images/2x/home_icon_kuaisu.png
  4. 二進制
      images/2x/home_icon_shezhi.png
  5. 二進制
      images/2x/home_icon_sousuo.png
  6. 二進制
      images/2x/home_icon_wode.png
  7. 二進制
      images/2x/home_icon_youjian.png
  8. 二進制
      images/2x/home_icon_yuan.png
  9. 二進制
      images/2x/icon_bangding.png
  10. 二進制
      images/2x/icon_inter.png
  11. 二進制
      images/2x/icon_jinbi_da_bai.png
  12. 二進制
      images/2x/icon_qianbao.png
  13. 二進制
      images/2x/icon_zhanji.png
  14. 二進制
      images/3x/home_icon_fangjian.png
  15. 二進制
      images/3x/home_icon_kuaisu.png
  16. 二進制
      images/3x/home_icon_shezhi.png
  17. 二進制
      images/3x/home_icon_sousuo.png
  18. 二進制
      images/3x/home_icon_wode.png
  19. 二進制
      images/3x/home_icon_youjian.png
  20. 二進制
      images/3x/home_icon_yuan.png
  21. 二進制
      images/3x/icon_bangding.png
  22. 二進制
      images/3x/icon_inter.png
  23. 二進制
      images/3x/icon_jinbi_da_bai.png
  24. 二進制
      images/3x/icon_qianbao.png
  25. 二進制
      images/3x/icon_zhanji.png
  26. 二進制
      images/home_icon_fangjian.png
  27. 二進制
      images/home_icon_kuaisu.png
  28. 二進制
      images/home_icon_shezhi.png
  29. 二進制
      images/home_icon_sousuo.png
  30. 二進制
      images/home_icon_wode.png
  31. 二進制
      images/home_icon_youjian.png
  32. 二進制
      images/home_icon_yuan.png
  33. 二進制
      images/icon_bangding.png
  34. 二進制
      images/icon_inter.png
  35. 二進制
      images/icon_jinbi_da_bai.png
  36. 二進制
      images/icon_qianbao.png
  37. 二進制
      images/icon_zhanji.png
  38. 36 20
      lib/main.dart
  39. 26 0
      lib/main1.dart
  40. 0 42
      lib/main2.dart
  41. 1 1
      lib/net/Result.dart
  42. 58 0
      lib/pages/CreateRoom.dart
  43. 27 10
      lib/pages/HomePage.dart
  44. 0 4
      lib/styles/colors.dart
  45. 107 1
      lib/widgets/HomeDrawer.dart
  46. 1 29
      pubspec.yaml
  47. 0 30
      test/widget_test.dart

+ 42 - 0
copyicon.js

@@ -0,0 +1,42 @@
+#!/usr/local/bin/node
+const fs = require('fs')
+const path = require('path')
+let baseDir = path.resolve(process.argv[2])
+var force = process.argv.indexOf('-f') > -1
+console.log("force:", force)
+copyAssets(baseDir)
+console.log('done')
+function copyAssets(srcDir) {
+    fs.readdirSync(srcDir).forEach(function (ele, index) {
+        if (/\(\d\)/.test(ele)) {
+            return
+        }
+        var subPath = path.resolve(srcDir, ele)
+        var info = fs.statSync(subPath)
+        if (!info.isDirectory()) {
+            var src = path.resolve(srcDir, ele)
+            var dstDir = path.resolve(__dirname, 'images')
+            var baseName = path.basename(src)
+            var fileName = baseName.replace(/@\dx/g, '')
+            var execRes = /@(\dx)/.exec(baseName)
+            var subDir = execRes ? execRes[1] : ''
+            if (subDir) {
+                if (!fs.existsSync(path.resolve(dstDir, subDir))) {
+                    fs.mkdirSync(path.resolve(dstDir, subDir), { recursive: true })
+                }
+            }
+            var dst = path.resolve(dstDir, subDir, fileName)
+            if (force) {
+                if (fs.existsSync(dst)) {
+                    fs.unlinkSync(dst)
+                }
+            }
+            try {
+                fs.copyFileSync(src, dst, fs.constants.COPYFILE_EXCL)
+                console.log('\x1B[32m%s\x1B[39m', `${baseName}\t->\timages/${subDir ? (subDir + '/' + fileName) : fileName}`)
+            } catch (e) {
+                console.error('\x1B[90m%s\x1B[39m', `${src}\t->\t${dst}`)
+            }
+        }
+    })
+}

二進制
images/2x/home_icon_fangjian.png


二進制
images/2x/home_icon_kuaisu.png


二進制
images/2x/home_icon_shezhi.png


二進制
images/2x/home_icon_sousuo.png


二進制
images/2x/home_icon_wode.png


二進制
images/2x/home_icon_youjian.png


二進制
images/2x/home_icon_yuan.png


二進制
images/2x/icon_bangding.png


二進制
images/2x/icon_inter.png


二進制
images/2x/icon_jinbi_da_bai.png


二進制
images/2x/icon_qianbao.png


二進制
images/2x/icon_zhanji.png


二進制
images/3x/home_icon_fangjian.png


二進制
images/3x/home_icon_kuaisu.png


二進制
images/3x/home_icon_shezhi.png


二進制
images/3x/home_icon_sousuo.png


二進制
images/3x/home_icon_wode.png


二進制
images/3x/home_icon_youjian.png


二進制
images/3x/home_icon_yuan.png


二進制
images/3x/icon_bangding.png


二進制
images/3x/icon_inter.png


二進制
images/3x/icon_jinbi_da_bai.png


二進制
images/3x/icon_qianbao.png


二進制
images/3x/icon_zhanji.png


二進制
images/home_icon_fangjian.png


二進制
images/home_icon_kuaisu.png


二進制
images/home_icon_shezhi.png


二進制
images/home_icon_sousuo.png


二進制
images/home_icon_wode.png


二進制
images/home_icon_youjian.png


二進制
images/home_icon_yuan.png


二進制
images/icon_bangding.png


二進制
images/icon_inter.png


二進制
images/icon_jinbi_da_bai.png


二進制
images/icon_qianbao.png


二進制
images/icon_zhanji.png


+ 36 - 20
lib/main.dart

@@ -1,26 +1,42 @@
-import 'package:flutter/material.dart';
 import 'package:redux/redux.dart';
-import 'pages/home.dart';
-import 'state.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_redux/flutter_redux.dart';
+import 'package:shared_preferences/shared_preferences.dart';
+import 'redux/AppState.dart';
+import 'pages/HomePage.dart';
+import 'net/HttpManager.dart';
+import 'model/UserInfo.dart';
+import 'net/Result.dart';
+import 'pages/loginFirst.dart';
 
-CountState updateState(CountState state, dynamic value) {
-  print(value);
-  if (value['action'] == Actions.updateToken) {
-    state.usetoken = value['val'];
-    return state;
-  } else if (value['action'] == Actions.updateUser) {
-    state.userInfo = value['val'];
-    return state;
-  } else if (value['action'] == Actions.updateAll) {
-    state.usetoken = value['token'];
-    state.userInfo = value['user'];
-    return state;
+class MobileCyberGamesApp extends StatelessWidget {
+  final Store<AppState> store;
+  MobileCyberGamesApp(this.store);
+  @override
+  Widget build(BuildContext context) {
+    return StoreProvider(
+        store: this.store,
+        child: new MaterialApp(
+          title: '全民电竞',
+          home: store.state.isLogin ? HomePage() : LoginFirst(),
+        ));
   }
-  return state;
 }
 
-void main() {
-  final store =
-      Store<CountState>(updateState, initialState: CountState.initState());
-  runApp(new MyApp(store));
+void main() async {
+  final prefs = await SharedPreferences.getInstance();
+  HttpManager.token = prefs.getString('token') ??
+      "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJkOWU0MDdhNy1iODU2LTQ0ZjAtYmM1Yy0yMGI4NmY4MWM4MTEiLCJpc3MiOiJhZG1pbiIsImlhdCI6MTU1MDczODk4MCwic3ViIjoiODQ2NjQiLCJleHAiOjE1NTA5OTgxODB9.sowgrK2LHLiVAZL4MFC2rgapD9ves8nCyZKlKaWtydY";
+  Result result = await HttpManager.get("userInfo/getUserInfo");
+  AppState state = AppState();
+  if (result.success && result.data != null) {
+    state.isLogin = true;
+    UserInfo userInfo = UserInfo.fromJson(result.data);
+    state.userInfo = userInfo;
+    prefs.setString("token", result.token);
+  } else {
+    state.isLogin = false;
+  }
+  Store<AppState> store = Store<AppState>(appReducer, initialState: state);
+  runApp(new MobileCyberGamesApp(store));
 }

+ 26 - 0
lib/main1.dart

@@ -0,0 +1,26 @@
+import 'package:flutter/material.dart';
+import 'package:redux/redux.dart';
+import 'pages/home.dart';
+import 'state.dart';
+
+CountState updateState(CountState state, dynamic value) {
+  print(value);
+  if (value['action'] == Actions.updateToken) {
+    state.usetoken = value['val'];
+    return state;
+  } else if (value['action'] == Actions.updateUser) {
+    state.userInfo = value['val'];
+    return state;
+  } else if (value['action'] == Actions.updateAll) {
+    state.usetoken = value['token'];
+    state.userInfo = value['user'];
+    return state;
+  }
+  return state;
+}
+
+void main() {
+  final store =
+      Store<CountState>(updateState, initialState: CountState.initState());
+  runApp(new MyApp(store));
+}

+ 0 - 42
lib/main2.dart

@@ -1,42 +0,0 @@
-import 'package:redux/redux.dart';
-import 'package:flutter/material.dart';
-import 'package:flutter_redux/flutter_redux.dart';
-import 'package:shared_preferences/shared_preferences.dart';
-import 'redux/AppState.dart';
-import 'pages/HomePage.dart';
-import 'net/HttpManager.dart';
-import 'model/UserInfo.dart';
-import 'net/Result.dart';
-import 'pages/loginFirst.dart';
-
-class MobileCyberGamesApp extends StatelessWidget {
-  final Store<AppState> store;
-  MobileCyberGamesApp(this.store);
-  @override
-  Widget build(BuildContext context) {
-    return StoreProvider(
-        store: this.store,
-        child: new MaterialApp(
-          title: '全民电竞',
-          home: store.state.isLogin ? HomePage() : LoginFirst(),
-        ));
-  }
-}
-
-void main() async {
-  final prefs = await SharedPreferences.getInstance();
-  HttpManager.token = prefs.getString('token') ??
-      "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJkOWU0MDdhNy1iODU2LTQ0ZjAtYmM1Yy0yMGI4NmY4MWM4MTEiLCJpc3MiOiJhZG1pbiIsImlhdCI6MTU1MDczODk4MCwic3ViIjoiODQ2NjQiLCJleHAiOjE1NTA5OTgxODB9.sowgrK2LHLiVAZL4MFC2rgapD9ves8nCyZKlKaWtydY";
-  Result result = await HttpManager.get("userInfo/getUserInfo");
-  AppState state = AppState();
-  if (result.success && result.data != null) {
-    state.isLogin = true;
-    UserInfo userInfo = UserInfo.fromJson(result.data);
-    state.userInfo = userInfo;
-    prefs.setString("token", result.token);
-  } else {
-    state.isLogin = false;
-  }
-  Store<AppState> store = Store<AppState>(appReducer, initialState: state);
-  runApp(new MobileCyberGamesApp(store));
-}

+ 1 - 1
lib/net/Result.dart

@@ -6,7 +6,7 @@ class Result {
   bool success;
   String error;
   String token;
-  Object data;
+  Object data; // list or map
   Result(this.success, this.error, this.data, this.token);
   Result.empty();
   factory Result.fromJson(Map<String, dynamic> json) => _$ResultFromJson(json);

+ 58 - 0
lib/pages/CreateRoom.dart

@@ -0,0 +1,58 @@
+import 'package:flutter/material.dart';
+
+class CreateRoom extends StatelessWidget {
+  @override
+  Widget build(BuildContext context) {
+    return GestureDetector(
+      onTap: () {
+        Navigator.of(context).pop();
+      },
+      child: Scaffold(
+        backgroundColor: Color(0xCC000000),
+        body: Container(
+          child: SizedBox.expand(
+            child: SizedBox.shrink(
+              child: Column(
+                mainAxisAlignment: MainAxisAlignment.center,
+                children: <Widget>[
+                  _CreateRoomBtn("创建普通房间"),
+                  SizedBox(
+                    height: 36,
+                  ),
+                  _CreateRoomBtn("创建官方房间")
+                ],
+              ),
+            ),
+          ),
+        ),
+      ),
+    );
+  }
+}
+
+class _CreateRoomBtn extends StatelessWidget {
+  final String title;
+  _CreateRoomBtn(this.title);
+  @override
+  Widget build(BuildContext context) {
+    return GestureDetector(
+      onTap: () {},
+      child: Container(
+        width: 250,
+        height: 96,
+        decoration: BoxDecoration(
+            border: Border.all(width: 1, color: Color(0x80000000)),
+            gradient: LinearGradient(
+                colors: [Color(0xFF626C85), Color(0xFF3D3E6C)],
+                begin: Alignment.topCenter,
+                end: Alignment.bottomCenter)),
+        child: Center(
+          child: Text(
+            title,
+            style: TextStyle(color: Colors.white, fontSize: 22),
+          ),
+        ),
+      ),
+    );
+  }
+}

+ 27 - 10
lib/pages/HomePage.dart

@@ -1,7 +1,7 @@
 import 'package:flutter/material.dart';
 import '../widgets/HomeDrawer.dart';
-import '../styles/colors.dart';
-import '../pages/setting.dart';
+import './setting.dart';
+import './CreateRoom.dart';
 
 class HomePage extends StatefulWidget {
   @override
@@ -85,7 +85,7 @@ class _HomePageState extends State<HomePage> {
                                   Text(
                                     "568",
                                     style: TextStyle(
-                                      color: WHITE_COLOR,
+                                      color: Colors.white,
                                       fontSize: 68,
                                       fontFamily: 'DINEngschrift',
                                     ),
@@ -93,7 +93,7 @@ class _HomePageState extends State<HomePage> {
                                   Text(
                                     "K",
                                     style: TextStyle(
-                                      color: WHITE_COLOR,
+                                      color: Colors.white,
                                       fontSize: 36,
                                       fontFamily: 'DINEngschrift',
                                     ),
@@ -110,12 +110,12 @@ class _HomePageState extends State<HomePage> {
                                   Text(
                                     "当前排名",
                                     style: TextStyle(
-                                        color: WHITE_COLOR, fontSize: 13),
+                                        color: Colors.white, fontSize: 13),
                                   ),
                                   Text(
                                     "98686",
                                     style: TextStyle(
-                                        color: WHITE_COLOR, fontSize: 13),
+                                        color: Colors.white, fontSize: 13),
                                   )
                                 ],
                               ),
@@ -134,11 +134,11 @@ class _HomePageState extends State<HomePage> {
                         children: <Widget>[
                           Text(
                             "赛季奖金",
-                            style: TextStyle(color: WHITE_COLOR, fontSize: 14),
+                            style: TextStyle(color: Colors.white, fontSize: 14),
                           ),
                           Text(
                             "刺激战场之大逃杀",
-                            style: TextStyle(color: WHITE_COLOR, fontSize: 14),
+                            style: TextStyle(color: Colors.white, fontSize: 14),
                           )
                         ],
                       ),
@@ -154,7 +154,24 @@ class _HomePageState extends State<HomePage> {
                     HomeMenu(
                       "images/home_icon_fangjian.png",
                       "创建房间",
-                      onTapHomeMenu: () {},
+                      onTapHomeMenu: () {
+                        Navigator.of(context).push(PageRouteBuilder(
+                            opaque: false,
+                            transitionDuration: Duration(milliseconds: 300),
+                            transitionsBuilder: (BuildContext context,
+                                Animation<double> animation,
+                                Animation<double> secondaryAnimation,
+                                Widget child) {
+                              return FadeTransition(
+                                opacity: CurvedAnimation(
+                                    parent: animation, curve: Curves.linear),
+                                child: child,
+                              );
+                            },
+                            pageBuilder: (BuildContext context, _, __) {
+                              return CreateRoom();
+                            }));
+                      },
                     ),
                     HomeMenu(
                       "images/home_icon_kuaisu.png",
@@ -222,7 +239,7 @@ class HomeMenu extends StatelessWidget {
                   ),
                   Text(
                     title,
-                    style: TextStyle(color: WHITE_COLOR, fontSize: 14),
+                    style: TextStyle(color: Colors.white, fontSize: 14),
                     textAlign: TextAlign.center,
                   )
                 ],

+ 0 - 4
lib/styles/colors.dart

@@ -11,7 +11,3 @@ const BG_COLOR = const Color(0xFF2B2B42);
 
 //辅助背景色
 const BG_SUB_COLOR = const Color(0xFF222335);
-
-const WHITE_COLOR = const Color(0xFFFFFFFF);
-
-const BLACK_COLOR = const Color(0xFF000000);

+ 107 - 1
lib/widgets/HomeDrawer.dart

@@ -35,6 +35,43 @@ class HomeDrawer extends StatelessWidget {
                               child: FittedBox(
                                   fit: BoxFit.cover,
                                   child: Image.network(userInfo.icon))),
+                        ),
+                        Container(
+                          margin: EdgeInsets.only(left: 16),
+                          child: Column(
+                            mainAxisAlignment: MainAxisAlignment.center,
+                            crossAxisAlignment: CrossAxisAlignment.start,
+                            children: <Widget>[
+                              Text(
+                                userInfo.nickname,
+                                style: TextStyle(
+                                    fontSize: 27,
+                                    color: Colors.white,
+                                    fontWeight: FontWeight.w700),
+                              ),
+                              Row(
+                                mainAxisAlignment: MainAxisAlignment.center,
+                                children: <Widget>[
+                                  Container(
+                                    margin: EdgeInsets.only(right: 4),
+                                    child: SizedBox(
+                                      width: 20,
+                                      height: 20,
+                                      child: Image.asset(
+                                          "images/icon_jinbi_da_bai.png"),
+                                    ),
+                                  ),
+                                  Text(
+                                    userInfo.moneyCoin.toString(),
+                                    style: TextStyle(
+                                        fontSize: 16,
+                                        color: Colors.white,
+                                        fontWeight: FontWeight.w700),
+                                  )
+                                ],
+                              ),
+                            ],
+                          ),
                         )
                       ],
                     ),
@@ -42,7 +79,25 @@ class HomeDrawer extends StatelessWidget {
                 ),
                 Expanded(
                   flex: 1,
-                  child: Container(),
+                  child: Container(
+                    padding: EdgeInsets.only(top: 10),
+                    child: Column(
+                      children: <Widget>[
+                        DrawerMenu(
+                          "images/icon_qianbao.png",
+                          "我的钱包",
+                          onTap: () {
+                            print("object");
+                            Navigator.of(context).pop();
+                          },
+                        ),
+                        Divder(),
+                        DrawerMenu("images/icon_zhanji.png", "我的战绩"),
+                        Divder(),
+                        DrawerMenu("images/icon_bangding.png", "游戏绑定")
+                      ],
+                    ),
+                  ),
                 )
               ],
             ),
@@ -52,3 +107,54 @@ class HomeDrawer extends StatelessWidget {
     );
   }
 }
+
+typedef void OnDrawerMenuTap();
+
+class Divder extends StatelessWidget {
+  @override
+  Widget build(BuildContext context) {
+    return Container(
+      height: 1,
+      padding: EdgeInsets.fromLTRB(30, 0, 30, 0),
+      child: Container(
+        decoration: BoxDecoration(color: Color(0x2E000000)),
+      ),
+    );
+  }
+}
+
+class DrawerMenu extends StatelessWidget {
+  final String icon;
+  final String title;
+  final OnDrawerMenuTap onTap;
+  DrawerMenu(this.icon, this.title, {this.onTap});
+  @override
+  Widget build(BuildContext context) {
+    return Container(
+      height: 60,
+      padding: EdgeInsets.fromLTRB(30, 0, 28, 0),
+      child: GestureDetector(
+        onTap: onTap,
+        child: Row(
+          children: <Widget>[
+            Image.asset(icon),
+            Expanded(
+              flex: 1,
+              child: Container(
+                margin: EdgeInsets.only(left: 16),
+                child: Text(
+                  title,
+                  style: TextStyle(
+                      color: Colors.white,
+                      fontSize: 15,
+                      fontWeight: FontWeight.w700),
+                ),
+              ),
+            ),
+            Image.asset("images/icon_inter.png")
+          ],
+        ),
+      ),
+    );
+  }
+}

+ 1 - 29
pubspec.yaml

@@ -37,35 +37,7 @@ flutter:
   uses-material-design: true
 
   assets:
-    - images/home_icon_wode.png
-    - images/home_icon_shezhi.png
-    - images/home_icon_yuan.png
-    - images/home_icon_fangjian.png
-    - images/home_icon_kuaisu.png
-    - images/home_icon_sousuo.png
-    - images/home_icon_youjian.png
-    - images/icon_jinbi_da_bai.png
-    - images/icon_qianbao.png
-    - images/icon_bangding.png
-    - images/icon_zhanji.png
-    - images/icon_inter.png
-    - images/img_wodeshouyi.png
-    - images/icon_jinbi_xiao_hong.png
-    - images/dengji_icon_huangjin.png
-    - images/dengji_icon_baiyin.png
-    - images/dengji_icon_qingtong.png
-    - images/icon_renshu.png
-    - images/icon_zhankai_baise.png
-    - images/icon_fenxiang.png
-    - images/icon_jinbi_da_hong.png
-    - images/list_icon_shouji.png
-    - images/list_icon_yanzhengma.png
-    - images/list_icon_del.png
-    - images/icon_paihangbang_01.png
-    - images/icon_paihangbang_02.png
-    - images/icon_paihangbang_03.png
-    - images/icon_paihangbang_04.png
-    - images/icon_shipin.png
+    - images/
   fonts:
     - family: DINEngschrift
       fonts:

+ 0 - 30
test/widget_test.dart

@@ -1,30 +0,0 @@
-// This is a basic Flutter widget test.
-//
-// To perform an interaction with a widget in your test, use the WidgetTester
-// utility that Flutter provides. For example, you can send tap and scroll
-// gestures. You can also use WidgetTester to find child widgets in the widget
-// tree, read text, and verify that the values of widget properties are correct.
-
-import 'package:flutter/material.dart';
-import 'package:flutter_test/flutter_test.dart';
-
-import 'package:electric_contest/main.dart';
-
-void main() {
-  testWidgets('Counter increments smoke test', (WidgetTester tester) async {
-    // Build our app and trigger a frame.
-    await tester.pumpWidget(MyApp());
-
-    // Verify that our counter starts at 0.
-    expect(find.text('0'), findsOneWidget);
-    expect(find.text('1'), findsNothing);
-
-    // Tap the '+' icon and trigger a frame.
-    await tester.tap(find.byIcon(Icons.add));
-    await tester.pump();
-
-    // Verify that our counter has incremented.
-    expect(find.text('0'), findsNothing);
-    expect(find.text('1'), findsOneWidget);
-  });
-}