flutter很強,目前一套代碼可以供Android,iOS, Web 使用,妥妥的一套代碼,多端使用,在跨平臺開發(fā)中,有著巨大的影響。
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供天等企業(yè)網(wǎng)站建設,專注與網(wǎng)站設計制作、成都網(wǎng)站制作、H5響應式網(wǎng)站、小程序制作等業(yè)務。10年已為天等眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進行中。
新建一個Flutter工程,android模塊。
1,只有一個Activity組件,它是Dart層繪制Widget的容器。
2,Application配置FlutterApplication。
應用Application配置io.flutter.app.FlutterApplication類,App首次啟動時,初始化。
調(diào)用FlutterMain.startInitialization()方法。
initConfig方法,從AndroidManfest.xml配置的applicaion節(jié)點獲取meta-data數(shù)據(jù),初始化以下默認值。
這些值都是使用中用到的name,例如,抽取apk中asset資源時,flutter_assets打包目錄,打包產(chǎn)物data名稱。
initResources方法, 初始化資源。
在Flutter打包apk的asset目錄下,包括fluttter_asset目錄/資源項,將資源從apk中抽取,保存在 Context.getDir("flutter", 0) 目錄下。
/data/user/0/包名/app_flutter目錄。
在目錄中創(chuàng)建一個時間戳文件,根據(jù)apk版本和包信息記錄的lastUpdateTime更新時間,第二次啟動時,若apk未更新,不需要再次抽取。
加載so庫,libflutter.so,System.loadLibrary()。
主頁面繼承FlutterActivity,配置啟動模式singleTop。
FlutterActivity類在io.flutter.app包, (區(qū)別io.flutter.embedding.android包), 組件生命周期委托給FlutterActivityDelegate類。
組件啟動,onCreate方法。
FlutterMain.ensureInitializationComplete方法,確保資源成功抽取完成,創(chuàng)建FlutterView視圖(io.flutter.view),繼承SurfaceView類,setContentView方法,設置組件主布局即FlutterView視圖。
最后,根據(jù)Bundle路徑,runBundle()加載運行,
調(diào)用FlutterView的runFromBundle方法,入口點在dart的main方法,
通過FlutterNativeView,調(diào)用FlutterJNI的native方法。
nativeRunBundleAndSnapshotFromLibrary方法。
任重而道遠
國外地址:
國內(nèi)鏡像:
以 flutter_screenutil 為例
路由框架 annotation_route
狀態(tài)管理 provider
UI適配 flutter_screenutil
刷新控件 flutter_easyrefresh
網(wǎng)絡請求 dio
toast控件 fluttertoast
圖表庫 charts_flutter
網(wǎng)絡監(jiān)聽 connectivity
事件總線 event_bus
日歷組件 table_calendar
官方webview webview_flutter
第三方webview flutter_webview_plugin
該篇文章為常用依賴包總結,用來記錄所需要的常用依賴包,后續(xù)會不斷擴充內(nèi)容~
1.動畫原理:在一段時間內(nèi)快速的多次改變UI外觀,由于人眼會產(chǎn)生視覺暫留所以最終看到的就是一個連續(xù)的動畫。
UI的一次改變稱為一個動畫幀,對應一次屏幕刷新。
FPS:幀率,每秒的動畫幀數(shù)。
flutter動畫分為兩類:
常見動畫模式:
是一個抽象類,主要的功能是保存動畫的值和狀態(tài)。常用的一個Animation類是Animation double ,是一個在一段時間內(nèi)依次生成一個區(qū)間之間的值的類,可以是線性或者曲線或者其他。
可以生成除double之外的其他類型值,如:Animation Color 或 Animation Size 。
是一個動畫控制器,控制動畫的播放狀態(tài),在屏幕刷新的每一幀,就會生成一個新的值。
包含動畫的啟動forward()、停止stop() 、反向播放 reverse()等方法,在給定的時間段內(nèi)線性的生成從0.0到1.0(默認區(qū)間)的數(shù)字。
curve:描述動畫的曲線過程。
curvedAnimation:指定動畫的曲線。
常用Curve:
繼承自Animatable T ,表示的就是一個 Animation 對象的取值范圍,只需要設置開始和結束的邊界值(值也支持泛型)。 它唯一的工作就是定義輸入范圍到輸出范圍的映射。
例如,Tween可能會生成從紅到藍之間的色值,或者從0到255。
Tween.animate:返回一個Animation。
映射過程:
1). Tween.animation通過傳入 aniamtionController 獲得一個_AnimatedEvaluation 類型的 animation 對象(基類為 Animation), 并且將 aniamtionController 和 Tween 對象傳入了 _AnimatedEvaluation 對象。
2). animation.value方法即是調(diào)用 _evaluatable.evaluate(parent)方法, 而 _evaluatable 和 parent 分別為 Tween 對象和 AnimationController 對象。
3). 這里的 animation 其實就是前面的 AnimationController 對象, transform 方法里面的 animation.value則就是 AnimationController 線性生成的 0.0~1.0 直接的值。 在 lerp 方法里面我們可以看到這個 0.0~1.0 的值被映射到了 begin 和 end 范圍內(nèi)了。
接收一個TickerProvider類型的對象,它的主要職責是創(chuàng)建Ticker。
防止屏幕外動畫消耗資源。
[圖片上傳失敗...(image-115b94-1636441483468)]
過程:
回調(diào):
不使用addListener()和setState()來給widget添加動畫。
使用AnimatedWidget,將widget分離出來,創(chuàng)建一個可重用動畫的widget,AnimatedWidget中會自動調(diào)用addListener()和setState()
AnimatedModalBarrier、DecoratedBoxTransition、FadeTransition、PositionedTransition、RelativePositionedTransition、RotationTransition、ScaleTransition、SizeTransition、SlideTransition
如何渲染過渡,把渲染過程也抽象出來:
AnimatedBuilder的示例包括: BottomSheet、 PopupMenu、ProgressIndicator、RefreshIndicator、Scaffold、SnackBar、TabBar。
MaterialPageRoute:平臺風格一致的路由切換動畫
CupertinoPageRoute:左右切換風格
自定義:PageRouteBuilder
1.要創(chuàng)建交織動畫,需要使用多個動畫對象(Animation)。
2.一個AnimationController控制所有的動畫對象。
3.給每一個動畫對象指定時間間隔(Interval)
可以同時對其新、舊子元素添加顯示、隱藏動畫.
當AnimatedSwitcher的child發(fā)生變化時(類型或Key不同),舊child會執(zhí)行隱藏動畫,新child會執(zhí)行執(zhí)行顯示動畫。
希望大家支持一下,感謝
flutter
英[?fl?t?(r)] 美[?fl?t?]
vi. 飄動; 鼓翼;
vt. 振翼,拍翅膀; 煩擾,坐立不安; (旗幟) 飄揚;
n. 顫振; 飄揚; 緊張,激動不安; (身體部分的) 病態(tài)陣跳;
[例句]Her chiffon skirt was fluttering in the night breeze.
她的雪紡裙在晚風中飄動著。
[其他] 第三人稱單數(shù):flutters 現(xiàn)在分詞:fluttering 過去式:fluttered 過去分詞:fluttered
網(wǎng)頁標題:Flutter,flutterguan網(wǎng)
分享網(wǎng)址:http://m.newbst.com/article24/dssihce.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供自適應網(wǎng)站、微信公眾號、用戶體驗、小程序開發(fā)、虛擬主機、服務器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)