├── .gitignore
├── .vscode
├── launch.json
├── settings.json
└── tasks.json
├── README.md
├── assets
└── images
│ ├── baike.svg
│ ├── baike_active.svg
│ ├── banners.png
│ ├── daibi.svg
│ ├── jinbi.svg
│ ├── jinshu.svg
│ ├── loading.svg
│ ├── logo.png
│ ├── logo_icon.png
│ ├── shandian.svg
│ ├── shandian_active.svg
│ ├── zixun.svg
│ └── zixun_active.svg
├── lib
├── main.dart
├── model
│ ├── arms_class_model.dart
│ ├── arms_details.dart
│ ├── arms_model.dart
│ ├── bootstrap_model.dart
│ ├── commit_model.dart
│ ├── headlines_details_model.dart
│ ├── headlines_model.dart
│ ├── hero_details_model.dart
│ ├── hero_model.dart
│ ├── map_details_model.dart
│ └── shop_details_model.dart
├── pages
│ ├── encyclopedia
│ │ ├── armsDetails
│ │ │ ├── arms_calss.dart
│ │ │ ├── arms_details.dart
│ │ │ └── widgets
│ │ │ │ └── arms_skin.dart
│ │ ├── control.dart
│ │ ├── heroDetails
│ │ │ ├── control.dart
│ │ │ ├── index.dart
│ │ │ └── widgets
│ │ │ │ ├── frame_page.dart
│ │ │ │ └── skin_page.dart
│ │ ├── index.dart
│ │ ├── mapDetails
│ │ │ └── index.dart
│ │ └── widgets
│ │ │ ├── arms_page.dart
│ │ │ ├── legend_page.dart
│ │ │ └── map_page.dart
│ ├── headlines
│ │ ├── control.dart
│ │ ├── headDatails
│ │ │ └── index.dart
│ │ └── index.dart
│ ├── mine
│ │ └── index.dart
│ ├── navigation
│ │ └── bottom_bar_page.dart
│ └── shop
│ │ ├── index.dart
│ │ ├── shop_all.dart
│ │ └── shop_details.dart
├── provider
│ ├── arms_provider.dart
│ ├── hero_provider.dart
│ └── news_provider.dart
├── routes
│ └── router_config.dart
├── utils
│ ├── dio.dart
│ ├── instances.dart
│ ├── relative_dareformat.dart
│ ├── storage.dart
│ └── time_format.dart
└── widgets
│ └── apex_tabbar.dart
├── mpdart
├── mpdart.bat
├── mpflutter
├── mpflutter.bat
├── pubspec.lock
├── pubspec.yaml
├── scripts
├── build_plugins.dart
├── build_swanapp.dart
├── build_weapp.dart
├── build_web.dart
└── help.dart
├── weapp
├── app.js
├── app.json
├── app.wxss
├── kbone
│ ├── miniprogram-element
│ │ ├── base.js
│ │ ├── base.js.map
│ │ ├── custom-component
│ │ │ ├── index.js
│ │ │ ├── index.json
│ │ │ ├── index.wxml
│ │ │ └── index.wxss
│ │ ├── index-vhost.js
│ │ ├── index-vhost.json
│ │ ├── index-vhost.wxml
│ │ ├── index-vhost.wxss
│ │ ├── index.js
│ │ ├── index.json
│ │ ├── index.wxml
│ │ ├── index.wxss
│ │ └── template
│ │ │ ├── inner-component.wxml
│ │ │ ├── subtree-cover.wxml
│ │ │ └── subtree.wxml
│ └── miniprogram-render
│ │ ├── index.js
│ │ └── index.js.map
├── main.dart.js
├── mp-custom-components.js
├── mpdom.min.js
├── package.json
├── pages
│ └── index
│ │ ├── index.js
│ │ ├── index.json
│ │ └── index.wxml
├── plugins.min.js
├── plugins.wxml
├── project.config.json
└── sitemap.json
└── web
├── index.html
└── plugins.min.js
/.gitignore:
--------------------------------------------------------------------------------
1 | build/
2 | .dart_tool/
3 | .packages
4 | .DS_Store
5 | lib/generated_plugin_registrant.dart
6 | .flutter-plugins
7 | .flutter-plugins-dependencies
8 |
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "0.2.0",
3 | "configurations": [
4 |
5 | {
6 | "name": "MPFlutter",
7 | "request": "launch",
8 | "type": "dart",
9 | "program": "lib/main.dart",
10 | "preLaunchTask": "Pre-compile MPFlutter Plugins"
11 | }
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "dart.env": {
3 | "PUB_HOSTED_URL": "https://pub.mpflutter.com"
4 | }
5 | }
--------------------------------------------------------------------------------
/.vscode/tasks.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": "2.0.0",
3 | "tasks": [
4 | {
5 | "label": "Pre-compile MPFlutter Plugins",
6 | "type": "shell",
7 | "command": "dart scripts/build_plugins.dart",
8 | "presentation": {
9 | "echo": false,
10 | "reveal": "silent",
11 | "focus": false,
12 | "panel": "shared",
13 | "showReuseMessage": false,
14 | "clear": true
15 | },
16 | "problemMatcher": []
17 | }
18 | ]
19 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## 环境准备
2 |
3 | 至少需要以下开发环境
4 |
5 | - 操作系统:macOS / Windows / Linux 任一操作系统
6 | - 代码编辑器:VSCode
7 | - VSCode 扩展:Dart 和 Flutter
8 | - Flutter 开发环境
9 | - Chrome 浏览器
10 |
11 | Flutter 开发环境可以在 https://flutter.dev 或 https://flutter-io.cn 下载安装。
12 |
13 | ## 开发
14 |
15 | 1. 使用 Git clone 或直接下载本仓库,使用 VSCode 打开本仓库根目录。
16 | 2. 使用命令行,locate 到本仓库根目录,执行命令 `./mpdart pub get`(*划重点,这里是执行 ./dart 而不是 dart*)。
17 | 2. 按下键盘上的 'F5' 键,开始调试,在 VSCode 的调试控制台上出现如下输出。
18 |
19 | ```
20 | Connecting to VM Service at http://127.0.0.1:61276/OgoUGNgV_fE=/
21 | lib/main.dart: Warning: Interpreting this as package URI, 'package:mpflutter_template/main.dart'.
22 | Hot reloading enabled
23 | Listening for file changes at ./lib
24 | Serve on 0.0.0.0:9898
25 | Use browser open http://0.0.0.0:9898/index.html or use MiniProgram Developer Tools import './dist/weapp' for dev.
26 | ```
27 |
28 | 3. 打开 Chrome 浏览器,输入网址 http://0.0.0.0:9898/index.html ,如无意外,你将看到 Hello, MPFlutter! 提示。
29 | 4. 在 VSCode 中打开 `lib/main.dart`,尝试修改 Hello, MPFlutter! 文本,并保存,看看是否可以实现 Hot-Reload?
30 | 5. 如果没有问题,你可以在 lib 目录下开展业务开发了。
31 |
32 | ### 微信小程序
33 |
34 | 如果需要在微信小程序中实现边开发边调试能力,可以直接将 weapp 目录导入到『微信开发者工具』中。
35 |
36 | 你也可以通过修改 weapp 目录下的文件,实现定制化功能。
37 |
38 | ### iOS
39 |
40 | 如果需要在 iOS 中实现边开发边调试能力,可以使用 XCode 直接打开 iosproj 目录下的 `template.xcworkspace`,使用模拟器运行应用。
41 |
42 | 你也可以通过修改 iosproj 目录下的文件,实现定制化功能。
43 |
44 | ## 构建
45 |
46 | ### H5
47 |
48 | 使用操作系统的命令行工具,locate 到工程根目录,执行以下命令。
49 |
50 | ```sh
51 | dart scripts/build_web.dart
52 | ```
53 |
54 | 执行完成后,H5 产物在 build 目录下,你可以上传到 HTTP 服务器上使用。
55 |
56 | ### 微信小程序
57 |
58 | 使用操作系统的命令行工具,locate 到工程根目录,执行以下命令。
59 |
60 | ```sh
61 | dart scripts/build_weapp.dart
62 | ```
63 |
64 | 执行完成后,微信小程序产物在 build 目录下,你可以打开『微信开发者工具』,导入 build 目录,进一步编译、测试并上传审核。
65 |
66 | ### iOS
67 |
68 | 使用操作系统的命令行工具,locate 到工程根目录,执行以下命令。
69 |
70 | ```sh
71 | dart scripts/build_ios.dart
72 | ```
73 |
74 | 执行完成后,使用 XCode 打开 iosproj/template.xcworkspace,进一步构建 ipa 包,并上传到 AppStore 审核。
75 |
76 | 注意:iOS 工程需要使用 CocoaPods 安装依赖。
--------------------------------------------------------------------------------
/assets/images/baike.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/baike_active.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/banners.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/itMcdull/apex_wechat/17516a3e746271259a3271fd029d9816ab497adb/assets/images/banners.png
--------------------------------------------------------------------------------
/assets/images/daibi.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/jinbi.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/jinshu.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/loading.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/itMcdull/apex_wechat/17516a3e746271259a3271fd029d9816ab497adb/assets/images/logo.png
--------------------------------------------------------------------------------
/assets/images/logo_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/itMcdull/apex_wechat/17516a3e746271259a3271fd029d9816ab497adb/assets/images/logo_icon.png
--------------------------------------------------------------------------------
/assets/images/shandian.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/shandian_active.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/zixun.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/zixun_active.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'package:apex_wechat/pages/navigation/bottom_bar_page.dart';
2 | import 'package:apex_wechat/provider/arms_provider.dart';
3 | import 'package:apex_wechat/provider/hero_provider.dart';
4 | import 'package:apex_wechat/provider/news_provider.dart';
5 | import 'package:apex_wechat/utils/instances.dart';
6 | import 'package:flutter/widgets.dart';
7 | import 'package:get/get.dart';
8 | import 'package:mpcore/mpcore.dart';
9 | import 'package:provider/provider.dart';
10 |
11 | void main() {
12 | // WidgetsFlutterBinding.ensureInitialized();
13 | initStore();
14 | runApp(MultiProvider(
15 | providers: [
16 | ChangeNotifierProvider(
17 | create: (_) => HeroProvider(),
18 | ),
19 | ChangeNotifierProvider(
20 | create: (_) => ArmsProvider(),
21 | ),
22 | ChangeNotifierProvider(
23 | create: (_) => NewsProvider(),
24 | ),
25 | ],
26 | child: MyApp(),
27 | ));
28 | MPCore().connectToHostChannel();
29 | }
30 |
31 | Future initStore() async {}
32 |
33 | class MyApp extends StatelessWidget {
34 | @override
35 | Widget build(BuildContext context) {
36 | return GetMPApp(
37 | title: 'APEX',
38 | color: Colors.blue,
39 | navigatorKey: Instances.navigatorKey,
40 | routes: {
41 | '/': (context) => MainTabViewPage(),
42 | },
43 | navigatorObservers: [MPCore.getNavigationObserver()],
44 | );
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/lib/model/arms_class_model.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'hero_model.dart';
4 |
5 | class ArmsClassModel {
6 | ArmsClassModel({
7 | this.version,
8 | this.reqId,
9 | required this.code,
10 | required this.msg,
11 | required this.data,
12 | });
13 |
14 | factory ArmsClassModel.fromJson(Map jsonRes) =>
15 | ArmsClassModel(
16 | version: asT