高德地圖flutter sdk制作標記點的maker,對于移動端不支持size和顏色變更,顧采用傳遞自制的uint8list來實現(xiàn)。
目前創(chuàng)新互聯(lián)建站已為上1000+的企業(yè)提供了網(wǎng)站建設、域名、虛擬主機、網(wǎng)站托管、服務器托管、企業(yè)網(wǎng)站設計、臨洮網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
近來閑暇時間一直在做Flutter,閃屏頁是一個比較常見的需求,網(wǎng)上的閃屏頁教程大部分是那種類似于廣告頁,而非iOS中的 LaunchScreen 性質的閃屏頁.按照原來的方案我們要配置閃屏頁的話,我們需要同時配置兩端的閃屏頁,那么有沒有比較簡單的方案來配置閃屏頁呢? 毋庸置疑,當然是有了,那就是Flutter的插件 - flutter_native_splash . 接下來我們就來看一下具體應該怎么使用這個插件.
首先把 flutter_native_splash 導入到工程的 pubspec.yaml 中.這里需要注意的是需要放在 dev_dependencies 下,而不是 dependencies .具體如下所示.
接下來我們就來配置 flutter_native_splash ,在配置之前我們看一下 flutter_native_splash 的可配置項.
例如,我現(xiàn)在只有一個logo圖片,那么我想生成iOS和android兩端的閃屏頁,這時候我只需在 pubspec.yaml 如下設置即可.
當然了,如果你有其他配置可以自行進行添加.
配置完成了,我們該如何生成呢?這時候需要我們打開終端 cd 到我們的工程目錄下.如果是Android Studio 或者 VSCode 默認就是在當前工程目錄下.
然后我們需要執(zhí)行下面的三個命令來生成閃屏頁
每一次都敲三個命令實屬麻煩,我們把上訴的三個命令整合成一個命令,如下所示.
那么,我們不想使用該插件生成的閃屏頁該怎么辦呢?我們只需要執(zhí)行下面命令即可.
注:每一次更換圖片都是需要重新執(zhí)行命令重新生成.
OK,上面就是關于 flutter_native_splash 的使用全部內容,其實比較簡單,如果需要定制化的,建議還是各自平臺配置各自的閃屏頁.如果有任何問題歡迎在評論區(qū)批評指導,感謝大家了.
圖片加載過程是由ImageProvider觸發(fā)的。而ImageProvider表示異步獲取圖片數(shù)據(jù)的操作,可以從資源,網(wǎng)絡,文件等不同的渠道獲取。
首先,ImageProvider根據(jù)_ImageState中傳遞的圖片配置生成對應的圖片緩存key,然后去ImageCache中查找是否由對應的圖片緩存,如果有,通知刷新對應的UI;如果沒有通過ImageStream異步加載,加載完成后更新緩存,然后通知_ImageState刷新UI。
ImageCache采用的是LRU(Least Recently Used)
1.動畫原理:在一段時間內快速的多次改變UI外觀,由于人眼會產生視覺暫留所以最終看到的就是一個連續(xù)的動畫。
UI的一次改變稱為一個動畫幀,對應一次屏幕刷新。
FPS:幀率,每秒的動畫幀數(shù)。
flutter動畫分為兩類:
常見動畫模式:
是一個抽象類,主要的功能是保存動畫的值和狀態(tài)。常用的一個Animation類是Animation double ,是一個在一段時間內依次生成一個區(qū)間之間的值的類,可以是線性或者曲線或者其他。
可以生成除double之外的其他類型值,如:Animation Color 或 Animation Size 。
是一個動畫控制器,控制動畫的播放狀態(tài),在屏幕刷新的每一幀,就會生成一個新的值。
包含動畫的啟動forward()、停止stop() 、反向播放 reverse()等方法,在給定的時間段內線性的生成從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方法即是調用 _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 范圍內了。
接收一個TickerProvider類型的對象,它的主要職責是創(chuàng)建Ticker。
防止屏幕外動畫消耗資源。
[圖片上傳失敗...(image-115b94-1636441483468)]
過程:
回調:
不使用addListener()和setState()來給widget添加動畫。
使用AnimatedWidget,將widget分離出來,創(chuàng)建一個可重用動畫的widget,AnimatedWidget中會自動調用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í)行顯示動畫。
希望大家支持一下,感謝