真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

flutter中,flutter的

flutter實踐 - flutter中的生命周期

與iOS的ViewController、Android的Activity一樣,F(xiàn)lutter中的Widget也存在生命周期,并且通過State來提現(xiàn)。而App則是一個特殊的Widget,除了需要處理視圖顯示的各個階段,還需要應對應用從啟動到退出所經歷的各個狀態(tài)。

港口網站建設公司成都創(chuàng)新互聯(lián)公司,港口網站設計制作,有大型網站制作公司豐富經驗。已為港口上千余家提供企業(yè)網站建設服務。企業(yè)網站搭建\成都外貿網站制作要多少錢,請找那個售后服務好的港口做網站的公司定做!

State的生命周期,指的是在用戶參與的情況查下,其關聯(lián)的Widget所經歷的從創(chuàng)建到顯示再到更新最后到停止,直至銷毀的各個過程階段。

這些不同的階段涉及到的特定的任務處理,正確理解State的生命周期至關重要,State的生命周期流程圖圖,如下所示:

從圖中可以看到,State的生命周期可以分為3個階段:創(chuàng)建、更新、銷毀。下面將介紹每一個階段的具體流程

State初始化時會依次執(zhí)行:構造方法 - initState - didChangeDependencies - build,隨后完成頁面渲染

Widget的狀態(tài)更新,主要由3個方法觸發(fā):setState、didChangeDependencies與didUpdateWidget。

一旦這三個方法被調用,F(xiàn)lutter就回銷毀舊的Widget,并調用build方法重建Widget

組件銷毀相對比較簡單,組件被移除,或者頁面銷毀的時候,系統(tǒng)會調用deactivate和dispose這兩個方法來移除或銷毀組件

下面這張表格也可以幫助我們理解記憶這些調用實際

視圖的生命周期,定義了視圖的加載到構建的全過程,其回調機制能夠確保我們可以更具視圖的狀態(tài)選擇合適的時間做恰當?shù)氖虑?,而App的生命周期,則定義了App從啟動到退出的全過程

在原生Android、iOS開發(fā)中,有時我們需要再對應的App生命周期事件中做相應的處理,比如App從后臺進入前臺,從前臺退出后臺,或者在UI繪制完成后做一些處理。

這樣的需求,在原生開發(fā)中,可以通過重寫Activity、ViewController生命周期回調方法,或者是注冊應用程序的相關通知來兼容App的生命周期并做相應的處理。而在Flutter中,我們可以利用WidgetsBindingObserver類,來實現(xiàn)同樣的需求。

下面我們看看WidgetsBindingObserver中具體有哪些回調函數(shù):

didChangeAppLifecycleState回調函數(shù)中,有一個參數(shù)類型為AppLifecycleState的枚舉類型,這個枚舉類型是Flutter對App生命周期狀態(tài)的封裝,它的常用狀態(tài)包括:

可以將App切前后臺,控制臺輸出的App狀態(tài),可以發(fā)現(xiàn):

我們可以通過下面的這張圖直觀的了解狀態(tài)切換過程

除了需要監(jiān)聽App的生命周期回調做相應處理外,根據不同的需求,我們需要再組件宣講之后做一些與顯示安全相關的操作,在iOS中,可以通過GCD的方法,讓操作在下一個RunLoop執(zhí)行,在Android中,可以通過View.post()插入消息隊列,來保證在組件渲染后進行相關操作。在Flutter中實現(xiàn)同樣的需求會更簡單:使用WidgetsBinding來實現(xiàn)即可

WidgetsBinding提供了單詞Frame繪制回調和實時Frame繪制回調兩種機制來滿足不同的需求場景:

flutter中流式布局

流式布局(Liquid)的特點(也叫"Fluid") 是頁面元素的寬度按照屏幕分辨率進行適配調整,但整體布局不變。柵欄系統(tǒng)(網格系統(tǒng)),用戶標簽等。在Flutter中主要有Wrap和Flow兩種Widget實現(xiàn)。

在介紹Row和Colum時,如果子widget超出屏幕范圍,則會報溢出錯誤,在Flutter中通過Wrap和Flow來支持流式布局,溢出部分則會自動折行。

上述有很多屬性和Row的相同,其意義其實也是相同的,這里我就不一一介紹了,主要介紹下不同的屬性:

我們一般很少會使用Flow,因為其過于復雜,需要自己實現(xiàn)子widget的位置轉換,在很多場景下首先要考慮的是Wrap是否滿足需求。Flow主要用于一些需要自定義布局策略或性能要求較高(如動畫中)的場景。Flow有如下優(yōu)點:

我們對六個色塊進行自定義流式布局:

實現(xiàn)TestFlowDelegate:

可以看到我們主要的任務就是實現(xiàn)paintChildren,它的主要任務是確定每個子widget位置。由于Flow不能自適應子widget的大小,我們通過在getSize返回一個固定大小來指定Flow的大小,實現(xiàn)起來還是比較麻煩的。

flutter中關于軟鍵盤彈起導致的問題

原因:在flutter中,鍵盤彈起時系統(tǒng)會縮小Scaffold的高度并重建

1)把Scaffold的resizeToAvoidBottomInset屬性設置為false,這樣在鍵盤彈出時將不會resize

2)把寫死的高度改為 原高度 - MediaQuery.of(context).viewInsets.bottom ,鍵盤彈出時布局將重建,而這個 MediaQuery.of(context).viewInsets.bottom 變量在鍵盤彈出前是0,鍵盤彈起后的就是鍵盤的高度

將輸入框放進可滾動的Widget中即可,當輸入框獲取焦點后,系統(tǒng)會自動將它滑動到可視區(qū)域

3、Flutter中ThemeData與AppBar

本次主要是記錄Fultter Theme主題的設備與AppBar中的一些屬性的使用及說明。目前項目開發(fā)有了四個界面。前期主題沒太注意,今天看來要好好總結一下近期所學。

首先,Android主題沉浸式設置,F(xiàn)lutter篇:

根據字面意思就能看出來是對狀態(tài)懶得設置,其中用到了 dart:io 與 flutter/services.dart 這兩個重點Mark一下,有時間深入探究一下用法跟能力?;貧w正題。

主題數(shù)據,其中最常用的是 primarySwatch 、 primaryColor 、 accentColor 。

primarySwatch:UI右下角的FloatingActionButton的顏色就是默認取值MaterialColor,

默認是藍色的,如果修改成primarySwatch,就會變成這個顏色值。只支持MaterialColor。

primaryColor:頂部導航欄和狀態(tài)欄的顏色修改,需要用到這個屬性,類型 Color。

accentColor:前景色(文本、按鈕、覆蓋邊緣效果等)。

看一下項目中的使用

其中 brightness 主題設置較為關鍵,它是設置狀態(tài)欄圖標與字體顏色的。

brightness: Brightness.dark 狀態(tài)欄圖標與字體顏色為白色。

brightness: Brightness.light 狀態(tài)欄圖標與字體顏色為黑色。

iconTheme :設置appbar icon的顏色,appbar中icon的顏色會根據primaryColor的改變來確定自身的顏色,這里可以在iconTheme中指定icon的顏色。

默認不做修改前:

詳解flutter中本地資源圖片的使用

一. flutter中我們想加載本地圖片,需要兩步:

二. flutter項目中本地圖片加載的原理

在加載圖片時,系統(tǒng)自動會根據屏幕分辨率優(yōu)先選擇到符合自己分配率的文件夾(2.0x或者3.0x或者4.0x)下去取相對應的圖片,如果當前文件夾下沒有,則會到低一倍的文件夾下去,如果還沒有,則繼續(xù)向更低一倍去取。(比如:iOS 5.5英寸及以上屏幕會優(yōu)先選擇去3.0x下去取圖片,如果3.0x不存在或者3.0x文件夾下沒有,則去2.0x下??;如果2.0x不存在或者2.0x下沒有,則去1.0x下??;1.0x下再沒有,則在images文件下取)。

Flutter中Flex布局介紹

學習Row和Column之前,我們先學習主軸和交叉軸的概念 。

Row組件用于將所有的子Widget排成一行。

MainAxisAlignment: start、end、center、spaceBetween、spaceAround、spaceEvenly

CrossAxisAlignment: 、start、end、center、baseline、stretch

Row 的 MainAxisAlignment各個屬性效果如下圖所示:

Column 的 MainAxisAlignment各個屬性效果如下圖所示:

Flutter中不太推薦控件的疊加,但是在實際項目開發(fā)中,我們很有可能需要重疊顯示,比如在一張圖片上顯示文字或者一個按鈕等。這種需求很常見。所以在Flutter中提供Stack來實現(xiàn)層疊布局。

效果如下圖所示:

【Tips:】 Positioned組件一般配合Stack組件使用。

Flex布局的學習記錄在這里,方便自己日后查閱。


網站標題:flutter中,flutter的
網址分享:http://weahome.cn/article/phegjd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部