🚀 Flutter 移动端跨平台实战指南
作为 Smart BLE Toolkit+ 的主力载体,Flutter 以其“一套代码跑通 Android / iOS 流畅原生帧率”的霸气傲视群雄。
如果您正在参与 apps/flutter/ 目录的二次开发,本手册是您的护航宝典。
一、 环境依赖与编译构建
- 依赖拉取:在终端进入
apps/flutter/目录,执行flutter pub get。 - 连接设备:插入您的安卓或苹果测试机(切记不可使用电脑的网页端模拟器,因为浏览器引擎不含蓝牙底层芯片驱动)。
- 跑起来:点击 VS Code 右下角的 Device 选择器,或者直接执行
flutter run。
二、 [深渊巨坑] 动态权限索取体系
如果您是一个纯前端 / Web 开发转过来的全栈,在开发原生产物时,最大的噩梦莫过于蓝牙的“连环授权”。
在本项目中,我们已经全部做好了防坑填埋(代码位于 apps/flutter/lib/core/ble/ota_manager.dart 等入口文件)。您在二开时必须知道其运作机制:
对于 Android 12 以上 (API 31+):
Google 从底层剥离了传统的定位权限,您必须在 AndroidManifest.xml 中保留:
BLUETOOTH_SCANBLUETOOTH_CONNECT而且在 Flutter 用户点击“连接”前,务必调用permission_handler要求用户明确点击授权,否则flutter_blue_plus直接静默返回 0 个设备!
对于 iOS 端:
苹果的要求更加霸道:绝对不允许应用在没有任何文案解释的情况下弹出“应用正在请求使用蓝牙”的白框! 我们已经在 ios/Runner/Info.plist 里写好了 NSBluetoothAlwaysUsageDescription,如果您要商用上架 AppStore,记得去把提示语改得更加符合您产品的商业包装,否则会被被苹果机器审核秒拒。
三、 对抗与修改 SSOT 产物
Flutter 不使用 CSS!所以绝对不要去 apps/flutter/lib/ui/... 下面硬编码十六进制颜色! 如果您想对按钮进行 UI 大改造:
- 请退回到项目最根目录下的
core/assets-generator/meta/colors.json。 - 更改颜色。
- 运行根部
generate_assets.py。 脚本会自动重铸 Flutter 端所需的.dart类,这才是多端大一统的高手玩法。