Flutter 的圖標(biāo)類,它有幾個衍生的組件:ImageIcon、IconButton 等。
創(chuàng)新互聯(lián)是一家專注于做網(wǎng)站、成都網(wǎng)站制作與策劃設(shè)計,大同網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:大同等地區(qū)。大同做網(wǎng)站價格咨詢:18982081108
Icon還可以架加載iconfont(字體圖標(biāo)),這種方式 和圖片相比有如下優(yōu)勢:
使用方法比較簡單
為了照顧新手小伙伴,基礎(chǔ)講解里面不會設(shè)計比較復(fù)雜的東西,后面的深入講解中再對各方面最深入解析
下一節(jié)基礎(chǔ)組件之Button
在Flutter中,我們可以使用Image控件來顯示圖片,一般來講我們的圖片資源都來源于網(wǎng)絡(luò)或者本地圖片。
Flutter中的Image也是類似。
我們先來看看Image的構(gòu)造方法
下面我們來看看其常用的屬性
可以看到,其常用屬性跟前端中的css很像。
下面我們來簡單用一用Image控件
首先是必填參數(shù)image,它接收一個ImageProvider類型的值。ImageProvider是一個抽象類,他下面有下圖這些實現(xiàn)類,由下面這些實現(xiàn)類可以看出,image是可以從資源,內(nèi)存,網(wǎng)絡(luò),和文件中獲取圖片。
我們先來試試加載網(wǎng)絡(luò)圖片
首先看看NetworkImage構(gòu)造方法,很簡單,傳個url就可以了
如下:
嗯,就是這么簡單。其他3種情況使用也是類似的,自行看源碼即可。
實際上,F(xiàn)lutter給我們提供了擴展方法,使用起來更加簡單,通常我們直接使用提供的擴展方法即可
如下
可以看到,他們的構(gòu)造方法基本類似。
所以我們也可以這樣寫,跟上面的效果是一致的。
大致分為一下幾步
1.創(chuàng)建一個文件夾,用于存放圖片,如圖,我創(chuàng)建了一個imgs的文件夾,放了一張圖片
2.在pubspec.yaml中聲明資源,注意聲明的時候路徑和前面的-是有間隔的,不然的話會報#/properties/flutter/properties/assets: type: wanted [array] got -imgs/code.png
類似的錯誤,聲明完成后點擊右上方的packages get
或
下面我們再來看看其他屬性。
width,height
寬高沒什么好說的,就是設(shè)置寬度和高度
配合color使用,用于設(shè)置顏色的混合模式。BlendMode是一個枚舉,他有很多值
詳細(xì)解析還是看官方文檔吧,值太多了,我們隨便用用
用于設(shè)置圖片的填充方式,當(dāng)圖片本身小于設(shè)置的寬高或者比父控件的寬高小時,我們可以設(shè)置該屬性控制圖片的顯示。
其值的類型是BoxFit。是個枚舉
具體含義還是直接看文檔即可
設(shè)置圖片的對齊方式,接收一個Alignment類型的值,值如下,很好理解
為了方便看效果我們在外邊套了個Container,簡單的把它理解為一個容器布局就可以了,類似于html中的div或android中的Layout,我們給Container設(shè)置了寬高和背景顏色。
bottomLeft效果如下,其他的自行嘗試
相對于Image,ICON可以像web一樣使用字體圖標(biāo),并且可以使用矢量圖,無需擔(dān)心失真的問題,并且體積相對較小。
我們先來看看其構(gòu)造方法
很簡單,我們直接來用一用
默認(rèn)情況下,pubspec.yaml中uses-material-design的值為true.我們默認(rèn)就可以使用Material Design字體圖標(biāo)
首先查看入口函數(shù):
類MyApp:
MyHomePage:
state:
build:
此demo頁面涉及到兩個組件:圖片和icon。在這里做一個簡單的介紹,更詳細(xì)的學(xué)習(xí)請參考flutter官網(wǎng)和相關(guān)書籍
在flutter中,我們可以通過Image組件來加載并顯示圖片,Image的數(shù)據(jù)源可以是asset、文件、內(nèi)存以及網(wǎng)絡(luò)。
ImageProvider 是一個抽象類,主要定義了圖片數(shù)據(jù)獲取的接口 load() ,從不同的數(shù)據(jù)源獲取圖片需要實現(xiàn)不同的 ImageProvider ,如 AssetImage 是實現(xiàn)了從Asset中加載圖片的ImageProvider,而 NetworkImage 實現(xiàn)了從網(wǎng)絡(luò)加載圖片的ImageProvider。
Image也提供了一個快捷的構(gòu)造函數(shù) Image.asset 用于從asset中加載、顯示圖片:
Image也提供了一個快捷的構(gòu)造函數(shù) Image.network 用于從網(wǎng)絡(luò)加載、顯示圖片:
Flutter中,可以像web開發(fā)一樣使用iconfont,iconfont也即"字體圖標(biāo)",它是將圖標(biāo)做成字體文件,然后通過指定不同的字符而顯示不同的圖片。
加號為圖片組件,減一為icon組件。點擊加號,數(shù)字加1;點擊-1,數(shù)字減少1。
在Flutter中,并沒有統(tǒng)一地修改圖標(biāo)、應(yīng)用名稱和包名的地方,所以要在各自語言對應(yīng)的地方進(jìn)行修改:
寫法與原生相同,并且可以不一致。
PS:不推薦修改包名,包名最好在項目開始時定下...之后修改可能會出點什么小問題...
其他方式
可以使用Xcode打開ios文件夾下的Runner.xcworkspace項目,像原生項目一樣修改。
更新Flutter應(yīng)用程序啟動圖標(biāo)的方式與在本機Android或iOS應(yīng)用程序中更新啟動圖標(biāo)的方式相同。
注意: 如果您重命名.png文件,則必須在您 AndroidManifest.xml 的 application 標(biāo)簽的 android:icon 屬性中更新名稱。
在 Flutter 框架加載時,F(xiàn)lutter 會使用本地平臺機制繪制啟動頁。此啟動頁將持續(xù)到Flutter渲染應(yīng)用程序的第一幀時。
在項目中找到 AndroidManifest.xml 文件,其中 android:label="demo" 就是應(yīng)用程序名稱,修改引號中的內(nèi)容即可
在項目中找到 mipmap-mdpi mipmap-hdpi mipmap-xhdpi mipmap-xxhdpi mipmap-xxxhdpi 文件夾,替換這些文件夾中的 ic_launcher.png 文件即可
注意:圖標(biāo)有多種尺寸的大小,是為了適配不同分辨率的手機而設(shè)計的
在項目中找到 Info.plist 文件,其中 CFBundleDisplayName 和 CFBundleName 下面的就是應(yīng)用程序名稱,修改內(nèi)容即可
找到項目中的 AppIcon.appiconset 文件夾,其中 Contents.json 是配置文件,其它的圖片文件就是圖標(biāo),替換這些圖片文件即可
注意:圖標(biāo)有多種尺寸的大小,是為了適配不同分辨率的手機而設(shè)計的
插件地址:
在項目中找到 pubspec.yaml 文件,添加內(nèi)容如下
插件地址:
在項目中找到 pubspec.yaml 文件,添加內(nèi)容如下
注意:準(zhǔn)備一張 1024x1024 的 png 圖片,取名為 icon.png 并把它放在 assets/icon 目錄中
找到 ~/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_launcher_icons-0.9.2/lib/android.dart 文件修改內(nèi)容如下
注意:如果使用了鏡像地址就找到 ~flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_launcher_icons-0.9.2/lib/android.dart 文件來修改以上內(nèi)容