成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

flutter設(shè)置狀態(tài),flutter 配置文件

Flutter筆記(三):設(shè)置白色狀態(tài)欄

在App設(shè)計中狀態(tài)欄純色的這種設(shè)計很常見,但是如果狀態(tài)欄需要為白色的時候就必須為黑色字體。在Android中已經(jīng)有很多成熟的方案來處理這種情況,那我們現(xiàn)在看看在Flutter中這種情況該怎么處理。

公司專注于為企業(yè)提供成都網(wǎng)站設(shè)計、做網(wǎng)站、微信公眾號開發(fā)、商城開發(fā),成都微信小程序,軟件定制網(wǎng)站開發(fā)等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗,我們會仔細(xì)了解各客戶的需求而做出多方面的分析、設(shè)計、整合,為客戶設(shè)計出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)建站更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。

這里的ThemeData即為控制App的主題,primarySwatch設(shè)置即可控制主題的各類顏色,但是這里的顏色是需要MaterialColor,但是純色種的黑色和白色不是MaterialColor。所以不能設(shè)置primarySwatch為Colors.white。

注:MaterialColor包含以下這些

那么就只能使用其他方式設(shè)置主題為白色。即為設(shè)置

此時我們可以看到App的狀態(tài)欄如下所示(Android)

雖然AppBar變成了白色,但是狀態(tài)欄是灰色顯然不是我們想要的。

嘗試設(shè)置文字顏色,AppBar的Brightness有兩種模式light和dark

這個和SystemUiOverlayStyle的light和dark剛好相反

然后設(shè)置狀態(tài)欄顏色

設(shè)置為紅色之后,得到以下的樣式,可以看到狀態(tài)欄為紅色了,文字為白色

那么接下來我們只需要將狀態(tài)欄設(shè)置為白色或者透明,狀態(tài)欄文字設(shè)置為黑色。

最后得到以下視圖

注:使用PreferredSize包裹,可以更得心應(yīng)手哦!

SystemUiOverlayStyle在設(shè)置時其實有很多系統(tǒng)或者版本的限制

[Flutter]使用主題

flutter設(shè)置沉浸式狀態(tài)欄

Flutter狀態(tài)管理(五):Redux

Flutter狀態(tài)管理系列:

Flutter狀態(tài)管理(一):ScopedModel

Flutter狀態(tài)管理(二):Provider

Flutter狀態(tài)管理(三):BLoC(Business Logic Component)

Flutter狀態(tài)管理(四):ReactiveX之RxDart

Flutter狀態(tài)管理(五):Redux

有做過H5前端開發(fā)的朋友應(yīng)該很早就接觸過這個,Redux在React/VUE中,與在Flutter/Dart中概念一樣,沒有任何區(qū)別;唯一的區(qū)別只是使用上的不同。

它主要由三部分組成:

下圖是一個完整的數(shù)據(jù)觸發(fā)及更新流程:

我們看到上面整個數(shù)據(jù)流,都是單向的,由View發(fā)起,最后到View的更新;

為啥這樣設(shè)計?

小節(jié)二介紹了Redux最基本的原理,但是,如何用Redux來做一些異步操作,比如:加載數(shù)據(jù)、請求API等?這里就引出來了Redux的中間件(Middleware),中間件能夠讓我們使得action在到達(dá)reducer之前,做些其它“動作”!有了中間件,我們不但可以請求API,還可以改變action,使得分發(fā)到其它reducer中去;

上圖是有Middleware的流程圖。

Redux在Flutter中的使用與在JavaScript中的使用方式稍微有點不同,為啥?

因為JavaScript是弱類型語言,而Dart是強類型語言,這就使得在JS中每個reducer可以獨立管理,而在Flutter中需要由一個大對象來管理!

無論在JS中還是在Flutter中,通常都將action、reducer、store各自建一目錄,放在redux目錄下,目錄結(jié)構(gòu)如下:

ReduxPage在build中,也可以直接用StoreBuilder(參考ReduxPage2中寫法),因為StoreBuilder也是InheritedWidget。

正因為Redux在Flutter中與在JS中不同,因此,在Flutter中,建議:

Flutter (三) 狀態(tài)管理

Flutter (二)布局

Flutter (三) 狀態(tài)管理

Flutter (四) Map轉(zhuǎn)模型

Flutter (五) 網(wǎng)絡(luò)請求

Flutter (六) 保留界面狀態(tài)

Flutter (七) 混合開發(fā) [配置]

Flutter (八) 混合開發(fā) [Flutter完整項目嵌入到原生]

Flutter的setState(狀態(tài)刷新)

Flutter有兩個常用的狀態(tài)類:

標(biāo)記為dirty,執(zhí)行的markNeedsBuild,定義在Element類中:

當(dāng)前Element節(jié)點被標(biāo)記為dirty,同時調(diào)用owner的scheduleBuildFor方法:

將element元素添加到全局的“臟”鏈表里。

BuildOwner用來管理哪些需要更新的Widget。這個owner最開始被初始化的地方在WidgetsBinding的initInstances方法中,隨后初始化了onBuildScheduled方法,對應(yīng)執(zhí)行的是_handleBuildScheduled,定義在WidgetsBinding類中:

ensureVisualUpdate 方法定義在SchedulerBinding類中:

在提交下一幀繪制的時候會調(diào)用到scheduleFrame方法,提交給引擎繪制,看看scheduleFrame方法,也定義在SchedulerBinding類中:

提交給引擎繪制之后,會收到onDrawFrame的回調(diào),最終執(zhí)行到_handleDrawFrame方法中,對應(yīng)的是handleDrawFrame方法,定義在SchedulerBinding類中:

在RendererBinding的initInstances方法中添加了一個回調(diào)到這個List中,對應(yīng)的是RenderBinding的drawFrame方法,對應(yīng)的節(jié)點進(jìn)行繪制渲染操作。

WidgetsBinding中的drawFrame方法:

看看這里的buildScope方法,定義在BuildOwner方法中。在上面 scheduleBuildFor 方法介紹中有提到:"scheduleBuildFor 是把一個 element 添加到 _dirtyElements 鏈表,以便當(dāng)[WidgetsBinding.drawFrame]中調(diào)用 buildScope 的時候能夠重構(gòu) element。onBuildScheduled()是一個 BuildOwner 的回調(diào)"。在 drawFrame 中調(diào)用 buildOwner.buildScope(renderViewElement)更新 elements。

_dirtyElements列表在遍歷的過程中執(zhí)行rebuild方法,此時將所有標(biāo)記為dirty的Element節(jié)點依次執(zhí)行rebuild,preformRebuild,build,updateChild,update方法,執(zhí)行界面更新。完成build,update操作完成之后,后續(xù)會將需要繪制的RenderObject添加到需要layout的列表中,等待繪制渲染。所有繪制完成之后將_dirtyElments列表清空,_inDirtyList標(biāo)記位置為false。

提交給引擎繪制渲染

看看super.drawFrame(),這里就執(zhí)行到了RendererBinding類中,定義如下:

這里就是將最終需要繪制渲染的畫面提交給引擎的地方了,繪制完成之后就在界面顯示更新后的視圖了。

當(dāng)前題目:flutter設(shè)置狀態(tài),flutter 配置文件
鏈接分享:http://jinyejixie.com/article12/dsecidc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、企業(yè)網(wǎng)站制作、外貿(mào)建站、網(wǎng)站制作、定制網(wǎng)站外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
于田县| 延津县| 鄂伦春自治旗| 渝北区| 浦城县| 江津市| 镇雄县| 张家口市| 宁都县| 遂宁市| 韶山市| 嘉黎县| 宁都县| 长治市| 青铜峡市| 县级市| 尉氏县| 仁布县| 横峰县| 揭东县| 财经| 宣武区| 南安市| 濮阳市| 重庆市| 东源县| 贞丰县| 上饶县| 大邑县| 潞西市| 夏河县| 嘉义县| 玉田县| 政和县| 阜宁县| 阜阳市| 瑞安市| 友谊县| 成安县| 定西市| 科技|