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升級轉換常見問題盤點
- [提問交流]獨立模型和文件模型有什麼分別?模型
- Homebrew學習及mac下升級php7問題MacPHP
- 駭客型別有哪些?他們有什麼區別?型別
- 升級Windows10後C盤告急怎麼辦?Windows
- mysql浮點型別是什麼MySql型別
- 股票內盤和外盤是什麼意思?股票內盤和外盤有什麼區別?
- 為什麼SAP ECC系統需要升級?升級路徑有哪些?
- 有同學問我:Fetch 和 Ajax 有什麼區別?
- Linux學習教程之什麼是Redis?Redis有什麼特點?LinuxRedis
- 資料庫是什麼意思?有什麼用?有哪些型別?資料庫型別
- Linux有什麼特點呢?Linux學習Linux
- cookie和session有什麼區別?Python學習!CookieSessionPython
- 大資料與深度學習有什麼區別?大資料深度學習
- 程式設計師為什麼要持續學習(升級版)程式設計師
- Angular CLI 升級 6.0 之後遇到的問題Angular
- 日期型別有問題,如何解決?型別
- cookie和session有什麼區別?Python學習分享CookieSessionPython
- Linux學習之CentOS和Ubuntu有什麼區別?LinuxCentOSUbuntu
- 加密演算法是什麼?有哪幾種型別?有什麼用?加密演算法型別
- 常見的爬蟲型別有什麼?爬蟲型別
- 《包你懂系列》類鎖和物件鎖到底有什麼區別,面試重點題型物件面試
- Java學習有什麼好的學習建議麼?Java
- Java中基本資料型別和包裝型別有什麼區別?Java資料型別
- Python開發學習要注意什麼問題?Python
- 為什麼那麼多人要學習go語言?go語言有什麼特點?Go
- 鍵盤軸色不同功能有什麼區別 機械鍵盤的各種軸有什麼區別
- 電視盒子升級與刷機有什麼區別 一張圖看透電視盒子升級與刷機的不同
- 程式和程式有什麼區別?Linux學習入門Linux
- 為什麼要學習Linux?學習Linux有什麼好處?Linux
- 高安全等級網路是什麼意思?有什麼特點?
- 伺服器的頻寬接入有幾種型別,特點是什麼伺服器型別
- [譯] JavaScript 中為什麼會有 Symbol 型別?JavaScriptSymbol型別
- 什麼是DOS?DOS攻擊型別有哪些?型別
- java泛型中<?>和<T>有什麼區別?Java泛型
- 為什麼要前後端分離?有什麼優缺點後端