日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

flutter 主题切换

發(fā)布時(shí)間:2025/3/21 编程问答 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 flutter 主题切换 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
### 主題 ``` // 1.main主文件 import 'package:flutter_smart_park/config/theme.dart' show AppTheme; Provide.value<ConfigModel>(context).$getTheme();Provide<ConfigModel>(builder: (context, child, configModel) {return MaterialApp(title: '智慧xx區(qū)',debugShowCheckedModeBanner: false,onGenerateRoute: Routes.router.generator,theme: AppTheme.getThemeData(configModel.theme),home: WillPopScope(onWillPop: () async {timerCountDown = TimerUtil(mInterval: 1000, mTotalTime: 1 * 1000);timerCountDown.setOnTimerTickCallback((int value) {if (value == 0) {AndroidBackTop.cancelBackDeskTop();}});timerCountDown.startCountDown();AndroidBackTop.backDeskTop();return false;},child: Pages(),),);}, ); // 2.theme 主題文件 import 'package:flutter/material.dart';Map materialColor = {'purple': {"primaryColor": 0xFF7B1FA2,"primaryColorLight": 0xFF9C27B0,},'pink':{"primaryColor": 0xFFc2185b,"primaryColorLight": 0xFFd81b60,},'deeppink':{"primaryColor": 0xFFf50057,"primaryColorLight": 0xFFe91e63,},'blue':{"primaryColor": 0xFF1976D2,"primaryColorLight": 0xFF2196F3,}, };class AppTheme {static Map mainColor = materialColor['purple'];static getThemeData(String theme) {mainColor = materialColor[theme];ThemeData themData = ThemeData(// scaffoldBackgroundColor: Colors.red, // 頁(yè)面的背景顏色primaryColor: Color(mainColor["primaryColor"]), // 主顏色primaryColorLight: Color(mainColor["primaryColorLight"]),// 按鈕顏色buttonTheme: ButtonThemeData(textTheme: ButtonTextTheme.primary,buttonColor: Color(mainColor["primaryColor"]),),// appbar樣式appBarTheme: AppBarTheme(iconTheme: IconThemeData(color: Colors.white),textTheme: TextTheme(title: TextStyle(color: Colors.white,fontSize: 20.0,),),),// 圖標(biāo)樣式iconTheme: IconThemeData(color: Color(mainColor["primaryColor"]),),);return themData;} }// 3.provide 狀態(tài)管理文件 import 'package:flutter_smart_park/untils/local_storage.dart'; class ConfigInfo {String theme = 'purple'; // 默認(rèn)主題顏色 }class ConfigModel extends ConfigInfo with ChangeNotifier { // 將主題顏色保存至本地存儲(chǔ),持久化Future $getTheme() async {String _theme = await LocalStorage.get('theme');if (_theme != null) {$setTheme(_theme);}}Future $setTheme(payload) async {theme = payload;LocalStorage.set('theme', payload);notifyListeners();} } // 4.local_storage文件 import 'dart:convert'; import 'package:shared_preferences/shared_preferences.dart';class LocalStorage {static Future get(String key) async {SharedPreferences prefs = await SharedPreferences.getInstance();return prefs.getString(key);}static Future set(String key, String value) async {SharedPreferences prefs = await SharedPreferences.getInstance();prefs.setString(key, value);}static Future setJSON(String key, value) async {SharedPreferences prefs = await SharedPreferences.getInstance();value = json.encode(value);prefs.setString(key, value);}static Future remove(String key) async {SharedPreferences prefs = await SharedPreferences.getInstance();prefs.remove(key);} }// 使用 Theme.of(context).primaryColor,`````` (new) ThemeData({Brightness brightness, MaterialColor primarySwatch, Color primaryColor, Brightness primaryColorBrightness, Color primaryColorLight, Color primaryColorDark, Color accentColor, Brightness accentColorBrightness, Color canvasColor, Color scaffoldBackgroundColor, Color bottomAppBarColor, Color cardColor, Color dividerColor, Color highlightColor, Color splashColor, InteractiveInkFeatureFactory splashFactory, Color selectedRowColor, Color unselectedWidgetColor, Color disabledColor, Color buttonColor, ButtonThemeData buttonTheme, Color secondaryHeaderColor, Color textSelectionColor, Color cursorColor, Color textSelectionHandleColor, Color backgroundColor, Color dialogBackgroundColor, Color indicatorColor, Color hintColor, Color errorColor, Color toggleableActiveColor, String fontFamily, TextTheme textTheme, TextTheme primaryTextTheme, TextTheme accentTextTheme, InputDecorationTheme inputDecorationTheme, IconThemeData iconTheme, IconThemeData primaryIconTheme, IconThemeData accentIconTheme, SliderThemeData sliderTheme, TabBarTheme tabBarTheme, CardTheme cardTheme, ChipThemeData chipTheme, TargetPlatform platform, MaterialTapTargetSize materialTapTargetSize, PageTransitionsTheme pageTransitionsTheme, AppBarTheme appBarTheme, BottomAppBarTheme bottomAppBarTheme, ColorScheme colorScheme, DialogTheme dialogTheme, Typography typography, CupertinoThemeData cupertinoOverrideTheme}) → ThemeData package:flutterCreate a [ThemeData] given a set of preferred values.Default values will be derived for arguments that are omitted.The most useful values to give are, in order of importance:The desired theme [brightness].The primary color palette (the [primarySwatch]), chosen from one of the swatches defined by the material design spec. This should be one of the maps from the [Colors] class that do not have "accent" in their name.The [accentColor], sometimes called the secondary color, and, if the accent color is specified, its brightness ([accentColorBrightness]), so that the right contrasting text color will be used over the accent color.See https://material.io/design/color/ for more discussion on how to pick the right colors.`````` (new) ButtonThemeData({ButtonTextTheme textTheme: ButtonTextTheme.normal, double minWidth: 88.0, double height: 36.0, EdgeInsetsGeometry padding, ShapeBorder shape, ButtonBarLayoutBehavior layoutBehavior: ButtonBarLayoutBehavior.padded, bool alignedDropdown: false, Color buttonColor, Color disabledColor, Color highlightColor, Color splashColor, ColorScheme colorScheme, MaterialTapTargetSize materialTapTargetSize}) → ButtonThemeData package:flutterCreate a button theme object that can be used with [ButtonTheme] or [ThemeData].The [textTheme], [minWidth], [height], [alignedDropDown], and [layoutBehavior] parameters must not be null. The [minWidth] and [height] parameters must greater than or equal to zero.The ButtonTheme's methods that have a [MaterialButton] parameter and have a name with a get prefix are used by [RaisedButton], [OutlineButton], and [FlatButton] to configure a [RawMaterialButton].```

  

轉(zhuǎn)載于:https://www.cnblogs.com/john-hwd/p/10760376.html

總結(jié)

以上是生活随笔為你收集整理的flutter 主题切换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。