Flutter1.12 升級後有什麼問題?型別盤點(附學習文件)
相信看過官方更新日誌的小夥伴都知道新版本的
flutter
和
Android
原生互動有一些改變,主要在以下部分
1.自定義的Plugin類需要實現
FlutterPlugin
的介面,並實現以下兩個方法
@Override public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) { //註冊,等同於原來的registerWith final MethodChannel channel = new MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "flutter_wx"); channel.setMethodCallHandler(new FlutterWxPlugin()); } @Override public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) { }
2.獲取
Flutter
傳遞過來的資料(方法名)需要實現
MethodCallHandler
(和之前版本的一樣)
@Override public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) { Log.d(TAG, "onMethodCall:" + activity); Toast.makeText(activity, "TestActivity", Toast.LENGTH_SHORT).show(); if (call.method.equals("getPlatformVersion")) { result.success("Android " + android.os.Build.VERSION.RELEASE); } else { result.notImplemented(); } }
3.現在有一個需求就是需要在
onMethodCall
方法中獲取activity物件,新版本給我們提供了新的介面讓我更好的來處理
Plugin
和
Activity
的一些互動,所以我們實現
ActivityAware
這個介面,重寫下面的方法,在
onAttachedToActivity
中我們可以透過
binding.getActivity()
獲取當前的
activity
物件,然後賦給我們定義的全域性變數,這個時候問題來了,我們在
onMethodCall
方法中得到的
activity
的值始終為
null
@Override public void onAttachedToActivity(ActivityPluginBinding binding) { Log.d(TAG, "onAttachedToActivity"); this.activity = binding.getActivity(); } @Override public void onDetachedFromActivityForConfigChanges() { } @Override public void onReattachedToActivityForConfigChanges(ActivityPluginBinding binding) { } @Override public void onDetachedFromActivity() { }
4.解決方法,修改
onAttachedToEngine
方法中的
channel.setMethodCallHandler(new FlutterWxPlugin())
為
channel.setMethodCallHandler(this)
;
@Override public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBinding) { //註冊,等同於原來的registerWith final MethodChannel channel = new MethodChannel(flutterPluginBinding.getFlutterEngine().getDartExecutor(), "flutter_wx"); channel.setMethodCallHandler(this);//修改此處為this }
5.總結,具體問題的原因還沒有細研究,當
Plugin
初始化的時候複寫的方法會執行兩次。期待官方的解決辦法。
flutter作為跨平臺的救星,很多朋友想要開始卻不知道從哪裡開始,這裡給大家分享一套從入門到進階的學習影片以及整理好的學習文件。
想要學習影片的朋友可以
點選我 詳細瞭解哦
一共有19個PDF文件可供學習,需要的朋友私信我【flutter】或者評論留言即可免費領取
01在Windows上搭建Flutter開發環境
02配置編輯器
03 Flutter 從我們的模板建立一個新的Flutter應用程式
04編寫您的第一個 Flutter App
05 Flutter中構建佈局
06 Flutter Widget框架
07 設計基礎之主題共享顏色和字型樣式
08 顯示網上的圖片
09 List集合
10 List處理點選和手勢
11 例項程式之AppBar
12 示例程式之選項卡式的AppBar
13 如何學習 Flutter 編譯Android專案
14 Flutter之資源載入
15 使用Flutter IDE
16 Flutter之使用熱過載
17 Flutter之除錯 Flutter App
18 Flutter 之釋出Android版APP
19 Flutter之釋出的IOS版APP
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952849/viewspace-2678527/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 除了效能縮水還有啥問題?盤點iOS升級的大坑iOS
- 雲端計算部署型別有什麼?Linux基礎學習型別Linux
- 技術分享:IPv6升級轉換常見問題盤點
- 搜尋和其他機器學習問題有什麼不同?機器學習
- [提問交流]獨立模型和文件模型有什麼分別?模型
- Linux有什麼特點呢?Linux學習Linux
- 有同學問我:Fetch 和 Ajax 有什麼區別?
- mysql浮點型別是什麼MySql型別
- Angular CLI 升級 6.0 之後遇到的問題Angular
- cookie和session有什麼區別?Python學習!CookieSessionPython
- 日期型別有問題,如何解決?型別
- Linux學習教程之什麼是Redis?Redis有什麼特點?LinuxRedis
- 為什麼SAP ECC系統需要升級?升級路徑有哪些?
- 駭客型別有哪些?他們有什麼區別?型別
- 股票內盤和外盤是什麼意思?股票內盤和外盤有什麼區別?
- 資料庫是什麼意思?有什麼用?有哪些型別?資料庫型別
- VIN碼識別:助力汽車後市場轉型升級
- Linux學習之CentOS和Ubuntu有什麼區別?LinuxCentOSUbuntu
- cookie和session有什麼區別?Python學習分享CookieSessionPython
- Python開發學習要注意什麼問題?Python
- 程式設計師為什麼要持續學習(升級版)程式設計師
- 年中盤點 | 2022年,PaaS 再升級
- ArchLinux/Manjaro升級到6.9核心後的問題解決LinuxJAR
- MacOS升級到Monterey後python SSL握手失敗問題MacPython
- Python學習教程_Python語言中=和==有什麼區別?Python
- 程式和程式有什麼區別?Linux學習入門Linux
- Tomcat與Nginx有什麼區別?linux學習路線TomcatNginxLinux
- Linux與Windows有什麼區別?linux系統學習LinuxWindows
- 前端學習(2577):Nuxt解決了什麼問題前端UX
- Python是什麼型別語言?為何Python這麼多人學習?Python型別
- 統計學和機器學習到底有什麼區別?機器學習
- 學習python需要多久?自學和培訓有什麼差別?Python
- 常見的爬蟲型別有什麼?爬蟲型別
- Java中基本資料型別和包裝型別有什麼區別?Java資料型別
- 為什麼要學習Linux?學習Linux有什麼好處?Linux
- 加密演算法是什麼?有哪幾種型別?有什麼用?加密演算法型別
- Python運算子有哪些型別?Python學習Python型別
- ReactNative升級0.56.0注意問題React