主要用到的是appbar中的brightness屬性,brightness有兩個值可取,分別是Brightness.dark和Brightness.light.
站在用戶的角度思考問題,與客戶深入溝通,找到平湖網站設計與平湖網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都做網站、網站建設、企業(yè)官網、英文網站、手機端網站、網站推廣、主機域名、網頁空間、企業(yè)郵箱。業(yè)務覆蓋平湖地區(qū)。
另一種方案是:就是用AnnotatedRegionSystemUiOverlayStyle包裹,
發(fā)現一種更靈活的辦法,如下:
只需要在最外層包裹一下,然后設置狀態(tài)欄字體顏色就可以了,可以不用appbar,更加靈活
這篇將會解決手動切換主題以及跟隨手機切換主題來更新UI(包括自己創(chuàng)建的Widget)
主題切換有個問題,就是如果是我們自定義或者在 build() 自己創(chuàng)建的部件是不會隨著系統(tǒng)的主題切換而發(fā)生主題色變化的(實際測試中,如果頁面在頂層(沒有被push)切換主題并不會觸發(fā) build() 方法,(push之后的頁面切換系統(tǒng)主題是可以觸發(fā) build() 的,而且會頻繁觸發(fā)好多次...),既然無法通過重新 build 更新組件的主題色,那么我們在切換主題后,強制觸發(fā)整個app的 build() 就可以了)
本次主要是記錄Fultter Theme主題的設備與AppBar中的一些屬性的使用及說明。目前項目開發(fā)有了四個界面。前期主題沒太注意,今天看來要好好總結一下近期所學。
首先,Android主題沉浸式設置,Flutter篇:
根據字面意思就能看出來是對狀態(tài)懶得設置,其中用到了 dart:io 與 flutter/services.dart 這兩個重點Mark一下,有時間深入探究一下用法跟能力?;貧w正題。
主題數據,其中最常用的是 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的顏色。
默認不做修改前:
細心的開發(fā)者會發(fā)現flutter構建的App體積比native的大一些,是什么原因造成App體積大呢?
其實flutter 在release時App體積和native的大小差不多,而debug時體積通常會大。debug版本體積較大是為了Hot reload和快速編譯。如果有flutter開發(fā)經驗的朋友都體驗過,如果您修改一下App的背景顏色,只需save一下就可以立刻看到修改后效果。我稱之為“像藝術家一樣在創(chuàng)造App”,因此為了實現這些目標,提高開發(fā)的效率,debug將占用全部資源。而當我們構建release版時,flutter又會采用AOT策略,提高App運行效率,release版只打包必需的資源,因而體積又會減少。
另外,flutter團隊也一直在尋找減小程序大小的方法。
color: Color(0xFF5e12a9)
00%=FF(不透明)
5%=F2
10%=E5
15%=D8
20%=CC
25%=BF
30%=B2
35%=A5
40%=99
45%=8c
50%=7F
55%=72
60%=66
65%=59
70%=4c
75%=3F
80%=33
85%=21
90%=19
95%=0c
100%=00(全透明)
參考原文鏈接:
CustomPaint class提供了讓用戶自定義widget的能力,它暴露了一個canvas,可以通過這個canvas來繪制widget,CustomPaint會先調用painter繪制背景,然后再繪制child,最后調用foregroundPainter來繪制前景,CustomPaint的定義如下
CustomPaint的繪制過程都將會交給CustomPainter來完成,CustomPainter是個抽象接口,在子類化CustomPainter的時候必須要重寫它的 paint 跟 shouldRepaint 接口,可以根據自己的場景來選擇性的重寫 hitTest 跟 shouldRebuildSemantics 方法。
canvas--畫布,真正的繪制是由canvas跟paint來完成的,畫布提供了各種繪制的接口來繪制圖形,除此以外畫布還提供了平移、縮放、旋轉等矩陣變換接口,畫布都有固定大小跟形狀,還可以使用畫布提供的裁剪接口來裁剪畫布的大小形狀等等。
常用的繪制接口有 更多請查看官方文檔
Paint---筆畫,是用來設置在畫布上面繪制圖形時的一些筆畫屬性,如:顏色、線寬、繪制模式、抗鋸齒等等。常用屬性有 更多請查看官方文檔
color : 設置畫筆顏色
isAntiAlias : 設置畫筆是否扛鋸齒
shader : 著色器,填充形狀或者畫線時用到,如果沒設置將會使用color
strokeWidth : 設置畫筆畫線寬度
style :繪制模式,畫線或充滿
下面這個例子來自于官方,通過 CustomPaint 畫出了一個藍天跟太陽出來
效果如下: