Flutter筆記九之主題和適配

Flutter 3.0在5月12日發(fā)布了氮双,支持六個平臺慕蔚,而且開始加大對游戲開發(fā)的支持适秩,好好學習吧,發(fā)展還是蠻好的纷宇。

theme傳入ThemeData(介紹些常用的)

  • brightness:亮度Brightness.light/Brightness.dark
  • colorScheme:修改主題色夸盟,次要顏色等
  • buttonTheme:Button的主題,如最小寬度,最小高度,默認背景色像捶,內邊距等(ButtonThemeData)
  • cardTheme:Card的主題上陕,如默認背景色,陰影等(CardTheme)
  • textTheme:Text的主題拓春,如默認字號唆垃,顏色等(TextTheme)
  • bottomNavigationBarTheme:bottomNavigationBar的主題,如顏色等
  • splashColor:水波紋顏色
  • highlightColor:點擊高亮顏色
  • canvasColor:默認背景色

去掉水波紋和高亮效果

theme: ThemeData(
  splashColor: Colors.transparent,
  highlightColor: Colors.transparent
),

Theme(Widget)可以包裹Widget痘儡,作為局部的主題辕万,使其使用不同的主題,如果不希望全部覆蓋沉删,則可傳入Theme.of(context).copywith()從而更改某幾項主題渐尿。

FloatingActionButton主題色的更改
Theme(
  data: Theme.of(context).copyWith(
    colorScheme: Theme.of(context).colorScheme.copyWith(
      secondary: Colors.pink
    ),
  )

darkTheme同theme傳入ThemeData

物理分辨率
  • window.physicalSize.width//寬
  • window.physicalSize.height//高
通過物理分辨率/dpr獲取邏輯分辨率
  • 寬 :window.physicalSize.width/window.devicePixelRatio
  • 高: window.physicalSize.height/window.devicePixelRatio
通過物理分辨率/dpr獲取狀態(tài)欄及底部安全區(qū)高度
  • 狀態(tài)欄高度:window.padding.top/window.devicePixelRatio
  • 底部安全區(qū)高度:window.padding.bottom/window.devicePixelRatio
邏輯分辨率(需要context初始化完成)
  • MediaQuery.of(context).size.width//寬
  • MediaQuery.of(context).size.height//高
狀態(tài)欄及底部安全區(qū)高度(需要context初始化完成)
  • 狀態(tài)欄高度:MediaQuery.of(context).padding.top
  • 底部安全區(qū)高度:MediaQuery.of(context).padding.bottom

適配

同小程序引入rpx單位,可以引入pt單位與原尺寸相乘即可矾瑰。下面是個適配的小工具

class GCSizeFit {
  static late double screenWidth;
  static late double screenHeight;
  static late double statusHeight;
  static late double bottomHeight;
  static late double rpx;
  static late double pt;
  //傳入基準手機物理寬度砖茸,默認是6s的750,單位是px,asset:@2x就傳2殴穴,@3x就傳3凉夯,默認是6s的2
static void initialize ({int standardWidth = 750, int asset = 2}) {
  //手機物理寬高
  final physicalWidth = window.physicalSize.width;
  final physicalHeight = window.physicalSize.height;
  //dpr
  final dpr = window.devicePixelRatio;
  //屏幕寬高
  screenWidth = physicalWidth / dpr;
  screenHeight = physicalHeight / dpr;
  //劉海及安全區(qū)域高度
  statusHeight = window.padding.top / dpr;
  //底部安全區(qū)域高度
  bottomHeight = window.padding.bottom / dpr;
  //計算rpx的大小
  rpx = screenWidth / standardWidth;
  //計算px的大小
  pt = rpx * asset;
  print('GCSizeFit{$屏幕寬: $screenWidth, 屏幕高: $screenHeight, dpr:$dpr\n'
      '劉海及安全區(qū)域高: $statusHeight, \n'
      '底部安全區(qū)域高: $bottomHeight, \n'
      'rpx: $rpx, pt: $pt}');
}

  //像素為單位的前端一般用這個
  static double setRPX(num size) {
    return rpx * size;
  }
  //藍湖pt為單位的移動端一般用這個
  static double setPT(num size) {
    return pt * size;
  }
}
/*
* 擴展double
* 使用 123.45.px 或123.45.pt
* */
extension DoubleFit on double {
  double get px {
    return GCSizeFit.setRPX(this);
  }
  double get pt {
    return GCSizeFit.setPT(this);
  }
}
/*
* 擴展int
* 使用 123.px 或123.pt
* */
extension IntFit on int {
  double get px {
    return GCSizeFit.setRPX(this);
  }
  double get pt {
    return GCSizeFit.setPT(this);
  }
}

設備名稱 屏幕尺寸 PPI Asset 邏輯分辨率 物理分辨率
13Pro Max,12Pro Max 6.7 in 458 @3x 428*926 1284*2778
13,13Pro,12,12Pro 6.1 in 460 @3x 390*844 1170*2532
12mini,13mini 5.4 in 476 @3x 375*812 1125*2436[1]
XS Max,11Pro Max 6.5 in 458 @3x 414*896 1242*2688
XR,11 6.1 in 326 @2x 414*896 828*1792
11Pro,XS,X 5.8 in 458 @3x 375*812 1125*2436
8+,7+,6s+,6+ 5.5 in 401 @3x 414*736 1242*2208
SE 3,8,7,6s,6 4.7 in 326 @2x 375 *667 750*1334

版權聲明:本文為 Crazy Steven 原創(chuàng)出品,歡迎轉載采幌,轉載時請注明出處劲够!


  1. 官網寫的是1080 * 2340,原因比較長就不寫了休傍,自己在網上搜吧 ?

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末征绎,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子磨取,更是在濱河造成了極大的恐慌人柿,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件忙厌,死亡現(xiàn)場離奇詭異凫岖,居然都是意外死亡,警方通過查閱死者的電腦和手機逢净,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進店門哥放,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扎阶,“玉大人,你說我怎么就攤上這事婶芭。” “怎么了着饥?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵犀农,是天一觀的道長。 經常有香客問我宰掉,道長呵哨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任轨奄,我火速辦了婚禮孟害,結果婚禮上,老公的妹妹穿的比我還像新娘挪拟。我一直安慰自己挨务,他們只是感情好,可當我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布玉组。 她就那樣靜靜地躺著谎柄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惯雳。 梳的紋絲不亂的頭發(fā)上朝巫,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天,我揣著相機與錄音石景,去河邊找鬼劈猿。 笑死,一個胖子當著我的面吹牛潮孽,可吹牛的內容都是我干的揪荣。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼往史,長吁一口氣:“原來是場噩夢啊……” “哼变逃!你這毒婦竟也來了?” 一聲冷哼從身側響起怠堪,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤揽乱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后粟矿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凰棉,經...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年陌粹,在試婚紗的時候發(fā)現(xiàn)自己被綠了撒犀。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖或舞,靈堂內的尸體忽然破棺而出荆姆,到底是詐尸還是另有隱情,我是刑警寧澤映凳,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布胆筒,位于F島的核電站,受9級特大地震影響诈豌,放射性物質發(fā)生泄漏仆救。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一矫渔、第九天 我趴在偏房一處隱蔽的房頂上張望彤蔽。 院中可真熱鬧,春花似錦庙洼、人聲如沸顿痪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽员魏。三九已至,卻和暖如春叠聋,著一層夾襖步出監(jiān)牢的瞬間撕阎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工碌补, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留虏束,地道東北人。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓厦章,卻偏偏與公主長得像镇匀,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子袜啃,可洞房花燭夜當晚...
    茶點故事閱讀 43,566評論 2 349

推薦閱讀更多精彩內容