深入小程式系列之二、Flutter 和小程式混編
背景
本文我們將開一下腦洞,在 Flutter 工程基礎上下整合及執行小程式方案。
先看一下效果如下:
新建 Flutter 樣例工程
Flutter 的安裝
Flutter 的安裝可參考具體上主要執行以下三步即可。本文將使用 Flutter1.12.hotfix8 穩定版作為開發環境。
- 下載 FlutterSDK
- 配置 PATH 環境路徑
- flutter doctor 檢查環境
新建 Flutter 工程
flutter create --template=app --org=com.finogeeks.flutter --project-name=mini_flutter -i objc -a java ./mini_flutte
執行以上命令後,正常將會提示以下資訊
All done![✓] Flutter: is fully installed. (Channel stable, v1.12.13+hotfix.8, on Mac OS X 10.15.3 19D76, locale zh-Hans-CN)[✓] Android toolchain - develop for Android devices: is fully installed. (Android SDK version 29.0.3)[✓] Xcode - develop for iOS and macOS: is fully installed. (Xcode 11.3.1)[✓] Android Studio: is fully installed. (version 3.6)[!] IntelliJ IDEA Ultimate Edition: is partially installed; more components are available. (version 2019.3.3)[✓] VS Code: is fully installed. (version 1.42.1)[!] Proxy Configuration: is partially installed; more components are available.[✓] Connected device: is fully installed. (1 available)Run "flutter doctor" for information about installing additional components.In order to run your application, type: $ cd mini_flutte $ flutter run Your application code is in mini_flutter/lib/main.dart.
注意!flutter 需要依賴本地安裝對應的 iOS,Android 開發工具,即需要安裝 Xcode 和 AndroidStudio。具體安裝使用方法這裡不贅述。
這裡我們用 VSCode+Xcode 作為開發組合環境,如果要正常除錯需要確保以下三個檢查專案是正常的。
[✓] Xcode - develop for iOS and macOS: is fully installed. (Xcode 11.3.1)
Flutter: is fully installed. (Channel stable, v1.12.13+hotfix.8, on Mac OS X 10.15.3 19D76, locale zh-Hans-CN)
VS Code: is fully installed. (version 1.42.1)
[!] Proxy Configuration: is partially installed; more components are available.
整合小程式解析引擎
這裡我們採用凡泰免費社群版的小程式解析引擎,只需要 10 行程式碼量不到即可完成小程式整合。
- 引入小程式引擎外掛。在 pubspec.yaml 檔案中引入小程式 Flutter 外掛
mop: ^0.2.0
2.在 main.dart 檔案中增加以下小程式引擎初始化方法。 Mop.instance.initialize這裡需要用到 sdkkey 和 secret。可以直接在 免費註冊獲取。註冊使用方法可以參考 接入指引
// Platform messages are asynchronous, so we initialize in an async method. Future<void> init() async { if (Platform.isIOS) { final res = await Mop.instance.initialize( '22LyZEib0gLTQdU3MUauAYEY1h9s9YXzmGuSgQrin7UA', '9e05fa0015d7dbfa', apiServer: '); print(res); } else if (Platform.isAndroid) { final res = await Mop.instance.initialize( '22LyZEib0gLTQdU3MUauAYEY1h9s9YXzmGuSgQrin7UA', '9e05fa0015d7dbfa', apiServer: '); print(res); } if (!mounted) return; }
3、在主介面上增加三個按鈕來開啟小程式
Center( child: Container( padding: EdgeInsets.only( top: 20, ), child: Column( children: <Widget>[ Container( width: 140, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(5)), gradient: LinearGradient( colors: const [Color(0xFF12767e), Color(0xFF0dabb8)], stops: const [0.0, 1.0], begin: Alignment.topCenter, end: Alignment.bottomCenter, ), ), child: FlatButton( onPressed: () { Mop.instance.openApplet('5e3c147a188211000141e9b1', path: 'pages/index/index', query: ''); }, child: Text( '開啟畫圖小程式', style: TextStyle(color: Colors.white), ), ), ), SizedBox(height: 30), Container( width: 140, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(5)), gradient: LinearGradient( colors: const [Color(0xFF12767e), Color(0xFF0dabb8)], stops: const [0.0, 1.0], begin: Alignment.topCenter, end: Alignment.bottomCenter, ), ), child: FlatButton( onPressed: () { Mop.instance.openApplet('5e4d123647edd60001055df1'); }, child: Text( '開啟官方小程式', style: TextStyle(color: Colors.white), ), ), ), SizedBox(height: 30), Container( width: 140, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(5)), gradient: LinearGradient( colors: const [Color(0xFF12767e), Color(0xFF0dabb8)], stops: const [0.0, 1.0], begin: Alignment.topCenter, end: Alignment.bottomCenter, ), ), child: FlatButton( onPressed: () { Mop.instance.openApplet('5e637a18cbfae4000170fa7a'); }, child: Text( '我的對賬單', style: TextStyle(color: Colors.white), ), ), ), ], ), ), )
4、執行 Flutter 程式
- 在程式碼根目錄執行 flutter devices 檢視本機安裝的模擬器。
- 執行 flutter run --debug 執行示例,執行效果之如本文最前面所展示的圖示。
文件中心: Document
本文示例程式碼:
相關文章: 凡泰極客私有云小程式技術
關於凡泰極客:幫助金融機構乃至任何希望擁有類似技術的其他行業機構,建立“碎片”的集散地、降低管理成本、提高研發效能,形成自己的數字化生態、與客戶和夥伴建立真正的數字化連線。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69971226/viewspace-2686632/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 深入小程式系列(三) ReactNative和小程式混編React
- 深入小程式系列之一:小程式核心原理及模擬
- 小程式點睛之二:小程式使用 Iconfont 的正確姿勢
- 微信小程式教程系列微信小程式
- 實現微信小程式編譯和執行環境系列(初始篇)微信小程式編譯
- [混編] iOS原生專案- iOS/flutter 程式碼互動iOSFlutter
- 小程式開發總結一:mpvue框架及與小程式原生的混搭開發Vue框架
- 深入解讀-微信小程式SDK微信小程式
- 深入wepy小程式元件化框架元件化框架
- 小程式踩坑系列一
- 小程式反編譯教程編譯
- 實現微信小程式編譯和執行環境系列(核心篇一)微信小程式編譯
- 實現微信小程式編譯和執行環境系列(進階篇)微信小程式編譯
- 小程式開發,小程式代理,小程式加盟,小程式創業創業
- Objective-C 和 Swift 混編專案的小 Tips(一)ObjectSwift
- 微信小程式開發深入解讀微信小程式
- 小程式3:ATM小程式
- 微信小程式開發系列二:微信小程式的檢視設計微信小程式
- 微信小程式開發系列教程三:微信小程式的除錯方法微信小程式除錯
- 微信小程式開發系列七:微信小程式的頁面跳轉微信小程式
- 微信小程式之小白教程系列 第二篇 微信小程式 -- 入口微信小程式
- 微信小程式 | 49,小程式入門集錦系列文章20篇微信小程式
- 如何反編譯微信小程式?編譯微信小程式
- 小程式系列之網路請求
- 【LiteApp系列】何為愛奇藝小程式?APP
- 使用Python編寫猜拳小程式Python
- 微信小程式之小白教程系列 第一篇 微信小程式 — Hello World微信小程式
- 微信小程式之小白教程系列 第一篇 微信小程式 -- Hello World微信小程式
- ThinkPHP小程式導航,小程式商店,小程式推薦平臺PHP
- 微信小程式小技巧微信小程式
- 小程式
- 微信小程式:小程式碼、小程式二維碼、普通二維碼微信小程式
- 微信小程式開發系列 (四) :微信小程式的頁面跳轉路由設計微信小程式路由
- 【小程式踩坑系列5】小程式內多重呼叫原生promise,無返回,無報錯,程式碼卡住Promise
- 微信小程式入門教程之二:頁面樣式微信小程式
- 微信小程式開發–視訊教程系列微信小程式
- 微信小程式從註冊到上線系列微信小程式
- 微信小程式掃碼解析小程式碼微信小程式