# 外盘 **Repository Path**: masterlh/outer-disc ## Basic Information - **Project Name**: 外盘 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-14 - **Last Updated**: 2025-03-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 开发环境的安装与配置 ### 1. SDK 安装 点击[下载地址](https://flutter.cn/docs/get-started/install) ### 2. 编辑工具设定 推荐使用 VS Code 1. 打开 VS Code。 2. 打开 `View` > `Command Palette`…。 3. 输入「install」,然后选择 Extensions: Install Extensions。 4. 在扩展搜索输入框中输入「flutter」,然后在列表中选择 Flutter 并单击 Install。此过程中会自动安装必需的 Dart 插件。 5. 点击 `Reload to Activate` 以重新启动 VS Code。 ### 3. 通过 Flutter Doctor 命令验证是否安装成功 1. 打开 View > Command Palette…。 2. 输入 “doctor”,选择 Flutter: Run Flutter Doctor。 3. 打开 OUTPUT 面板查看是否有错误,确保在不同的输出选项 (Output Options) 的下拉列表中选择了 Flutter。 ### 3. 运行工程 1. 找到目录下的 `pubspec.yaml` 文件 2. 下载三方库,在命令行运行 ``` flutter pub get ``` 3. 或者点击位于 `pubspec.yaml` 文件顶部操作功能区右侧的 `Get Packages` 当出现以下信息时,说明安装成功 ``` Got dependencies! exit code 0 ``` 4. debug 工程 找到`main.dart` 文件,点击 `Run` 按钮,或者点击 `Run` 按钮旁边的下拉列表,选择 `Run Debug`。 # 未完成 1、主题定制 --- 完成 2、数据依赖 --- 完成 3、网络请求;--- 由于需要 完整的 数据提示,需要添加 JSON 转 model 的 方法 4、如何调用手机硬件设备; 5、布局相关的常用组件了解;(滚动列表的细节,盒模型约束) # getx 的 状态管理的注意事项; - 你不需要在 List 中使用".value",神奇的 dart api 允许我们删除它。 不幸的是,像 String 和 int 这样的原始类型不能被扩展,使得.value 的使用是强制性的,但是如果你使用 get 和 setter 来处理这些类型(最好:在所有能加 value 的 地方都加上) - 约定开发模式,全在 route 页面的 binding 中 统一 加入需要的 多个 controller; - 在页面 做依赖的时候,可以 通过 getView 的 方式 ,隐式引入 一个 controller,如果想引入 多个的话;用 final Controller c = Get.find(); ```dart class HomePage extends GetView { const HomePage({super.key}); // HomePage({super.key}); @override Widget build(BuildContext context) { final HomeSecondContrl c = Get.find(); LogUtils.d(Theme.of(context)); LogUtils.d(controller); LogUtils.d(c); return WillPopWidget( child: Scaffold( floatingActionButton: FloatingActionButton( child: const Icon(Icons.add), onPressed: () { controller.increment(); // c.changeStr(); c.str = 'test11111111111'; }, ), // Use Obx(()=> to update Text() whenever count is changed. appBar: AppBar( title: Text('hello'.tr), // backgroundColor: Theme.of(context).primaryColor, ), // Replace the 8 lines Navigator.push by a simple Get.to(). You don't need context body: Center( child: Column( children: [ SizedBox(child: Obx(() => Text(c.str.value))), // SizedBox(child: Text("${c.str}")), SizedBox(child: Obx(() => Text('${controller.count}'))), ], )), ), ); } } ``` - 测试 当一个 controller 在 多个 路由页面之间 使用,状态能否 共享还是 新创建; 目前测试 只要 put 进去的, find 找到的 都是 共享的 数据 - 同时 相 对于 controller 使用 两个实例,相当于不相互影响 ```dart 最重要是:这里的泛型 可以用于 逻辑的 运算,不同于 ts; S put( S dependency, { String? tag, bool permanent = false, @deprecated InstanceBuilderCallback? builder, }) find({String? tag}) String _getKey(Type type, String? name) { return name == null ? type.toString() : type.toString() + name; } ``` # 20221029 - 添加 请求之前对于 数据的 JSON to Dart,用于智能提示 1. 安装依赖 ```yaml dependencies: json_annotation: ^4.7.0 dev_dependencies: build_runner: ^2.3.2 json_serializable: ^6.5.4 ``` 2. 用一个 [网站](https://caijinglong.github.io/json2dart/index_ch.html) 将 json 转换为 dart 类的方式输出;所有的 JSON 放到 assets 中 作为保留,赋值到网站中;[目的是:不用自己编写相关类] - 注意: 这里在网站中 使用 v1.x.x 的 输出 3. 在 app/json_serializable_model 中 创建文件将上面的 dart 复制过来;[注意:1、页面一定要有@JsonSerializable();2、part 部分也一定要有] 4. 一定要在项目根目录下执行 ```shell # 1、一次性生成 flutter packages pub run build_runner build --delete-conflicting-outputs # 2. 试试监听变化 flutter packages pub run build_runner watch --delete-conflicting-outputs ``` # 账号密码 C01222028 8BO-^fwd C01222029 OqTW^@C3 C01222030 i56S@*PF C01222031 w+7wV=t8 C01222032 6/\_TlG6u C01222033 #5LNH_ic C01222034 E11h3-4& C01222035 A*8V^=x\_ C01222036 Bb111111 C01602004 Asd888888 可用 # 20230106 在 release 环境下 和 在 debug 模式下对于 android 上的 权限不一致;需要配置 网络权限; ```xml ``` 安卓打包: flutter build apk --split-per-abi 会生成三个 APK 文件 flutter build apk 使用 eventbus 要千万注意 监听的移除操作 在增加新监听的同时没移除旧监听 就存在隐形 bug # 生成 splash dart run flutter_native_splash:create --flavors main,fushi,mock 修改安卓的 launch_background.xml 富士实盘包名:com.zibang.app.fushi 富士金融 模拟盘包名:com.zibang.app.demo ZBTrade Demo # APP_BROKER 指定券商版本 # android 打包命令 模拟盘 flutter build apk --flavor mock --dart-define=APP_BROKER=mock 富士实盘 flutter build apk --flavor fushi --dart-define=APP_BROKER=fushi 中辉实盘 flutter build apk --flavor zhonghui --dart-define=APP_BROKER=zhonghui 大粤实盘 flutter build apk --flavor dayue --dart-define=APP_BROKER=dayue 多期货公司 模拟盘 flutter build apk --flavor mock --dart-define=APP_BROKER=multiple_mock 多期货公司 flutter build apk --flavor fushi --dart-define=APP_BROKER=multiple # ios 打包命令 模拟盘 flutter build ipa --release --flavor mock --dart-define=APP_BROKER=mock 富士实盘 flutter build ipa --release --flavor fushi --dart-define=APP_BROKER=fushi 中辉实盘 flutter build ipa --release --flavor zhonghui --dart-define=APP_BROKER=zhonghui 大粤实盘 flutter build ipa --release --flavor dayue --dart-define=APP_BROKER=dayue 多期货公司 模拟盘 flutter build ipa --release --flavor mock --dart-define=APP_BROKER=multiple_mock 多期货公司 flutter build ipa --release --flavor fushi --dart-define=APP_BROKER=multiple