對(duì)于初學(xué)flutter的朋友來(lái)說(shuō),要知道,flutter的UI萬(wàn)物皆Widget。
創(chuàng)新互聯(lián)專注于漯河網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供漯河營(yíng)銷型網(wǎng)站建設(shè),漯河網(wǎng)站制作、漯河網(wǎng)頁(yè)設(shè)計(jì)、漯河網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造漯河網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供漯河網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
flutter所寫的頁(yè)面的結(jié)構(gòu)可以被看成套娃,一層套一層,一層套一層,一層套一層。。。。。。
Flutter Widget采用現(xiàn)代響應(yīng)式框架構(gòu)建,這是從 React 中獲得的靈感,中心思想是用widget構(gòu)建你的UI。 Widget描述了他們的視圖在給定其當(dāng)前配置和狀態(tài)時(shí)應(yīng)該看起來(lái)像什么。當(dāng)widget的狀態(tài)發(fā)生變化時(shí),widget會(huì)重新構(gòu)建UI,F(xiàn)lutter會(huì)對(duì)比前后變化的不同, 以確定底層渲染樹從一個(gè)狀態(tài)轉(zhuǎn)換到下一個(gè)狀態(tài)所需的最小更改。
Text : 該 widget 可讓創(chuàng)建一個(gè)帶格式的文本。
Row 、 Column : 這些具有彈性空間的布局類Widget可讓您在水平( Row )和垂直( Column )方向上創(chuàng)建靈活的布局。
Stack :取代線性布局 (和Android中的LinearLayout相似),Stack允許子 widget 堆疊, 你可以使用 Positioned 來(lái)定位他們相對(duì)于 Stack 的上下左右四條邊的位置。
Container : Container 可讓您創(chuàng)建矩形視覺(jué)元素。 您可以為 Container 裝飾一個(gè) BoxDecoration , 如 background、一個(gè)邊框、或者一個(gè)陰影。 Container 也可以具有邊距(margins)、填充(padding)和應(yīng)用于其大小的約束(constraints)。另外, Container 可以使用矩陣在三維空間中對(duì)其進(jìn)行變換。
具體的演示見(jiàn)我另外的博客
有一部分Widget都有一個(gè) child 屬性,用于容納唯一的子Widget。
例如:Container、Center、Padding、Align等Widget。
還有一部分Widget允許存在多個(gè)子Widget,用 children 作為屬性。
例如:Row、Column、Stack等Widget。
在StatefulWidget調(diào)用createState之后,框架將新的狀態(tài)插入樹種,然后調(diào)用狀態(tài)對(duì)象的initState。子類化State可以重寫initState,以完成僅需要一次執(zhí)行的工作。當(dāng)然在initState的實(shí)現(xiàn)中需要調(diào)用super.initState
當(dāng)一個(gè)狀態(tài)對(duì)象不再需要時(shí),框架調(diào)用狀態(tài)對(duì)象的dispose。也可以通過(guò)覆蓋dispose方法來(lái)執(zhí)行清理工作。
OVER~
Flutter是Google開發(fā)的新一代跨平臺(tái)方案,F(xiàn)lutter可以實(shí)現(xiàn)寫一份代碼同時(shí)運(yùn)行在iOS和Android設(shè)備上,并且提供很好的性能體驗(yàn)。Flutter使用Dart作為開發(fā)語(yǔ)言,這是一門簡(jiǎn)潔、強(qiáng)類型的編程語(yǔ)言。Flutter對(duì)于iOS和Android設(shè)備,提供了兩套視覺(jué)庫(kù),可以針對(duì)不同的平臺(tái)有不同的展示效果。
Flutter原本是為了解決Web開發(fā)中的一些問(wèn)題,而開發(fā)的一套精簡(jiǎn)版Web框架,擁有獨(dú)立的渲染引擎和開發(fā)語(yǔ)言,但后來(lái)逐漸演變?yōu)橐苿?dòng)端開發(fā)框架。正是由于Dart當(dāng)初的定位是為了替代JS成為Web框架,所以Dart的語(yǔ)法更接近于JS語(yǔ)法。例如定義對(duì)象構(gòu)建方法,以及實(shí)例化對(duì)象的方式等。
在Google剛推出Flutter時(shí),其發(fā)展很緩慢,終于在18年發(fā)布第一個(gè)Bate版之后迎來(lái)了爆發(fā)性增長(zhǎng),發(fā)布第一個(gè)Release版時(shí)增長(zhǎng)速度更快??梢詮腉ithub上Star數(shù)據(jù)看出來(lái)這個(gè)增長(zhǎng)的過(guò)程。在19年最新的Flutter 1.2版本中,已經(jīng)開放Web支持的Beta版。
Flutter不僅僅提供了一套視覺(jué)庫(kù),在Flutter整體框架中包含各個(gè)層級(jí)階段的庫(kù)。例如實(shí)現(xiàn)一個(gè)游戲功能,上面一些游戲控件可以用上層視覺(jué)庫(kù),底層游戲可以直接基于Flutter的底層庫(kù)進(jìn)行開發(fā),而不需要調(diào)用原生應(yīng)用的底層庫(kù)。Flutter的底層庫(kù)是基于Open GL實(shí)現(xiàn)的,所以O(shè)pen GL可以做的Flutter都可以。
在flutter中使用高德地圖,突然報(bào)如標(biāo)題的錯(cuò)誤,一開始我以為是plist文件沒(méi)有加位置授權(quán),一檢查發(fā)現(xiàn)權(quán)限都有,想著以前這定位都正常的,應(yīng)該是改了其他地方引起定位不了的,一一對(duì)比,是我permission_handler這個(gè)插件升級(jí)了,升級(jí)后ios這邊要在podfile文件下加一下權(quán)限配置
target.build_configurations.eachdo |config|
# You can remove unused permissions here
# for more infomation:
# e.g. when you don't need camera permission, just add 'PERMISSION_CAMERA=0'
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS']||= [
'$(inherited)',
## dart: PermissionGroup.calendar
? ? 'PERMISSION_EVENTS=1',
## dart: PermissionGroup.reminders
? ? 'PERMISSION_REMINDERS=1',
## dart: PermissionGroup.contacts
? ? 'PERMISSION_CONTACTS=1',
## dart: PermissionGroup.camera
? ? 'PERMISSION_CAMERA=1',
## dart: PermissionGroup.microphone
? ? 'PERMISSION_MICROPHONE=1',
## dart: PermissionGroup.speech
? ? 'PERMISSION_SPEECH_RECOGNIZER=1',
## dart: PermissionGroup.photos
? ? 'PERMISSION_PHOTOS=1',
## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
? ? 'PERMISSION_LOCATION=1',
## dart: PermissionGroup.notification
? ? 'PERMISSION_NOTIFICATIONS=1',
## dart: PermissionGroup.mediaLibrary
? ? 'PERMISSION_MEDIA_LIBRARY=1',
## dart: PermissionGroup.sensors
? ? 'PERMISSION_SENSORS=1',
## dart: PermissionGroup.bluetooth
#? ? ? ? 'PERMISSION_BLUETOOTH=1',
## dart: PermissionGroup.appTrackingTransparency
? ? 'PERMISSION_APP_TRACKING_TRANSPARENCY=1',
## dart: PermissionGroup.criticalAlerts
? ? 'PERMISSION_CRITICAL_ALERTS=1',
]
end
flutter開發(fā)中,圖片的引用是必不可少的,所以為了提高效率和精準(zhǔn)度,我們需要對(duì)不同分辨率的手機(jī)使用相對(duì)應(yīng)的切圖圖片,本章介紹如何進(jìn)行 圖片分辨率適配 和 圖片批量拓展處理 。
flutter中會(huì)首先根據(jù)系統(tǒng)的devicePixelRatio(每一個(gè)邏輯像素包含多少個(gè)原始像素,可以通過(guò)MediaQueryData.devicePixelRatio來(lái)得到)來(lái)找對(duì)應(yīng)倍數(shù)的文件夾下的圖片,如果沒(méi)有對(duì)應(yīng)倍數(shù),找最接近的。
所以在flutter項(xiàng)目中,我們需要構(gòu)建對(duì)應(yīng)的倍數(shù)像素文件夾
之后再pubspec.yaml中,配置assets文件后就可以使用了(如使用"assets/images/jay.png",會(huì)自動(dòng)適配該像素下最接近的jay圖片)。
使用flutter-img-sync插件批量化處理,具體操作如下
目前還不能處理gif、webp等格式的圖片,而且如果和上邊介紹的不同像素比適配方案一起使用的話,由于進(jìn)行了精準(zhǔn)定位,所以指定圖片后就不能進(jìn)行像素適配,這是目前還存在的較大問(wèn)題,所以目前兩者方案只能暫時(shí)取一使用。
網(wǎng)站標(biāo)題:flutter定位,flutterguan方文檔
當(dāng)前鏈接:http://chinadenli.net/article24/dsdiije.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、ChatGPT、搜索引擎優(yōu)化、標(biāo)簽優(yōu)化、手機(jī)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)