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

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

flutter筆記,flutternutter

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

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

10年積累的網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有永昌免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

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

注:MaterialColor包含以下這些

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

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

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

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

這個(gè)和SystemUiOverlayStyle的light和dark剛好相反

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

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

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

最后得到以下視圖

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

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

[Flutter]使用主題

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

Flutter筆記三之Dart庫(kù)文件的使用

一個(gè) dart 文件就是一個(gè)庫(kù)文件

每個(gè) dart 文件默認(rèn)導(dǎo)入了系統(tǒng)核心庫(kù) dart:core 其他庫(kù)需手動(dòng)導(dǎo)入:

import 'dart:系統(tǒng)庫(kù)庫(kù)名';

import 文件后可直接使用,默認(rèn)導(dǎo)入一個(gè)庫(kù)的所有變量和方法。

文件名后+ as +自定義名稱(chēng),導(dǎo)入的庫(kù)起的別名,同python

文件名后+ show +導(dǎo)入的變量或方法:只導(dǎo)入 show 后面的變量或方法

文件名后+ hide +隱藏的變量或方法:出 hide 后面的變量或方法,其他的變量和方法全部導(dǎo)入

export 公共的庫(kù)文件的抽取

可以在pub.dev網(wǎng)站中查找第三方庫(kù)。

然后即可引用使用

Flutter 開(kāi)發(fā)筆記

下面這種情況下,為 InkWell 設(shè)置的 splashColor 不會(huì)生效:

需要用 Material 去除背景色,然后將顏色設(shè)置在 InkWell 外部:

在 Dialog builder 中使用 WillPopScope 禁用返回鍵返回:

注意:使用此方法同時(shí)也會(huì)禁用 iOS 上的手勢(shì)滑動(dòng)返回功能,推薦判斷平臺(tái)后再使用。

修改對(duì)話(huà)框中的復(fù)選框狀態(tài),最簡(jiǎn)便的方法是通過(guò) Element 中的 markNeedsBuild 方法:

當(dāng)然,更推薦的做法是通過(guò) StatefulBuilder ,然后就可以在 Dialog 中調(diào)用 setState 方法了,不過(guò)在調(diào)用 setState 時(shí)需要判斷 Dialog 是否已經(jīng)關(guān)閉,否則會(huì)造成 setState() called after dispose() 的錯(cuò)誤,可以通過(guò)添加一個(gè)標(biāo)志位來(lái)解決,如下:

在 Web 中加載網(wǎng)絡(luò)圖片有時(shí)會(huì)失敗,遇到這樣的報(bào)錯(cuò): Exception caught by image resource service... ,造成該錯(cuò)誤的原因通常是,圖片跨域了(見(jiàn) 跨域資源共享 )。最簡(jiǎn)單的解決辦法是, 使用 HTML 渲染加載 ,而不是默認(rèn)的 CanvasKit。

Flutter 中所有的 list 默認(rèn)都是沒(méi)有 ScrollBar 的,必須使用 ScrollBar 組件。ScrollBar 組件通過(guò)監(jiān)聽(tīng) ScrollView 的 ScrollNotification 來(lái)刷新位置,所以 List 的長(zhǎng)度必須是固定的。

當(dāng)使用 WebView 等高度不定的組件時(shí)會(huì)出現(xiàn)內(nèi)容被截?cái)嗟那闆r,通??梢允褂?NestedScrollView 來(lái)解決該問(wèn)題,需要在 WebView 外部嵌套 SingleChildScrollView。

雖然使用了緩存,而且也是用 builder 加載圖片的,但是發(fā)現(xiàn)一個(gè)現(xiàn)象:滑動(dòng)屏幕后圖片短暫消失并重新加載了。圖片高度很高時(shí)這種現(xiàn)象更加明顯,其原因是超出屏幕范圍一定距離的組件被重新渲染了。解決方法是在 ListView 上設(shè)置 cacheExtent 參數(shù):

該參數(shù)的作用是改變超出屏幕高度后繼續(xù)渲染的范圍(以像素為單位),比如設(shè)置成 9999 后意味著超出屏幕 10000 像素以?xún)?nèi)的內(nèi)容都會(huì)被保留下來(lái)。

借助 IntrinsicHeight 組件:

另外,IntrinsicHeight 還可以用于 Dialog 或者 BottomSheet 中,使得其中的元素 顯示內(nèi)在元素的高度 ,從而避免元素因?yàn)榧s束的存在而不顯示或者高度太高(比如在使用了 Column 或者 Row 的時(shí)候)。

在通過(guò) Uri 的 queryParameters 獲取 query 參數(shù)時(shí),發(fā)現(xiàn)有些鏈接會(huì)拋出下面異常:

造成該異常的原因是 Uri 默認(rèn)使用 utf-8 解碼超鏈接字符串,如果鏈接中包含非 utf-8 字符,就會(huì)造成上面的錯(cuò)誤,相關(guān) issue 見(jiàn): issue #31621 。目前該 issue 處于 open 的狀態(tài),暫時(shí)的解決辦法是,在所有使用到 queryParameter 的地方用 try..catch 捕捉可能拋出的異常。

Flutter 開(kāi)發(fā)非常依賴(lài)各種官方或第三方的插件,而在使用這些插件時(shí)多少都會(huì)遇到一些問(wèn)題,大部分問(wèn)題都可以通過(guò)搜索和查找 issue 來(lái)解決。這里記錄下一些我在使用部分插件時(shí)遇到的問(wèn)題及其解決方法。

目前該庫(kù)沒(méi)有圖片加載完成的回調(diào)(見(jiàn) issue #545 ),不過(guò)我們可以通過(guò)在 imageBuilder 中來(lái)添加回調(diào):

這是一個(gè)應(yīng)用內(nèi)更新插件,安卓 10 以上安裝時(shí)需要在 manifest 中添加以下內(nèi)容:

目前功能最強(qiáng)大的 WebView 插件,基本能滿(mǎn)足絕大部分移動(dòng)端網(wǎng)頁(yè)加載的需求,而且可定制化程度高。

一般通過(guò) CookieManager 修改 Cookie,攔截請(qǐng)求并修改請(qǐng)求對(duì)象的 Header 不會(huì)生效。

InAppWebViewOptions 的 userAgent 只在 iOS 上生效,而 applicationNameForUserAgent 只在 Android 上生效,所以最好的做法是分平臺(tái)設(shè)置 InAppWebViewOptions ,而且需要注意,由于設(shè)置 userAgent 后會(huì)覆蓋默認(rèn)的 UserAgent,所以如果需要在默認(rèn)的 UserAgent 上添加其它參數(shù),iOS 上需要通過(guò) InAppWebViewController.getDefaultUserAgent() 獲取默認(rèn) UserAgent 參數(shù),而 Android 不需要添加。

如果圖片源或者請(qǐng)求是 http 的,為了在 Android 上正常加載請(qǐng)求,必須在 AndroidInAppWebViewOptions 中將 mixedContentMode 設(shè)置為 AndroidMixedContentMode.MIXED_CONTENT_ALWAYS_ALLOW 。

當(dāng)我們想要設(shè)置全屏圖片的時(shí)候,由于默認(rèn)的 Constraint 會(huì)將圖片居中顯示,所以圖片四周會(huì)留有空隙。為了去除這個(gè)限制,我們需要 Xcode 中打開(kāi) LaunchScreen.storyboard,然后在 View Controller 的 View 和 LaunchImage 上的 Safe Area 去掉。

具體設(shè)置方法:右側(cè) Inspector 面板 Show the Size inspector 解選 Layout Margins 中的 Safe Area Relative Margins,拖動(dòng)圖片占滿(mǎn)全屏,然后根據(jù) View Controller Scene 的 Warning,更新 Constraint 就可以了。

在集成某些三方庫(kù)之后,在使用命令行運(yùn)行 iOS 模擬器的時(shí)候可能會(huì)遇到下面這個(gè)報(bào)錯(cuò):

這是因?yàn)?iOS 模擬器未來(lái)將會(huì)兼容 arm64 架構(gòu),但是目前還不支持,所以我們需要修改 Build Setting 使得能夠在 x86_64 的模擬器上運(yùn)行,操作步驟見(jiàn) 這里 。


分享題目:flutter筆記,flutternutter
地址分享:http://weahome.cn/article/dsssdsd.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部