Flutter开发之——getX-改变主题(09)

本文介绍了如何在Flutter应用中使用GetX库来实现主题切换功能,包括获取当前主题模式、切换到浅色或深色主题,并展示了GetMaterialApp的设置示例以及自定义主题的配置和使用方法。文章还提到了如果需要持久化存储主题选择,可以将配置信息存储起来。
摘要由CSDN通过智能技术生成

一 概述

浅色主题深色主题

二 getX中切换主题API

2.1 当前是什么模式主题

Get.isDarkMode

2.2 改变当前主题

设置为浅色主题

Get.changeTheme(ThemeData.light());

设置为深色主题

Get.changeTheme(ThemeData.dark());

放在一个onPressed中,根据Get.isDarkMode判断

Get.changeTheme(Get.isDarkMode? ThemeData.light(): ThemeData.dark());

三 示例

3.1 GetMaterialApp中设置默认主题

void main()=>runApp(GetMaterialApp(
    theme:  ThemeData.light(),
    darkTheme: ThemeData.dark(),
    themeMode: ThemeMode.light,
    getPages: [
      GetPage(name: '/', page: ()=>IndexWidget(),binding: IndexBinding())
    ]
));

3.2 浅色/深色主题按钮

按钮界面相关

appBar: AppBar(title: Text('Theme'),
         actions: <Widget>[
           IconButton(icon: Icon(Icons.wb_sunny_rounded),onPressed:()=>controller.changeLight()),
           IconButton(icon: Icon(Icons.nightlight_round),onPressed:()=>controller.changeNight())
         ]),

Controller中对应的浅色/深色主题切换逻辑

  void changeNight() {
    Get.changeTheme(ThemeData.dark());
  }
  void changeLight(){
    Get.changeTheme(ThemeData.light());
  }

说明:

  • 本文只做简单演示,若要持久化存储,可将配置信息进行持久化存储

四 自定义主题

4.1 如何自定义主题

  • 单独创建一个theme文件,分别配置lightTheme和darkTheme
  • lightTheme是ThemeData.light().copyWith重写方法,设置浅色主题的样式配置
  • darkTheme是ThemeData.dark().copyWith重写方法,设置深色主题的样式配置
  • 默认配置时,在GetMaterialApp中,将上述的lightTheme设置给theme,darkTheme设置给darkTheme
  • 调用Get.changeTheme改变主题时,同理

4.2 自定义主题文件(theme)

///白天模式
ThemeData lightTheme = ThemeData.light().copyWith(
  primaryColor: Colors.blue,
  splashColor: Colors.white12,
  appBarTheme: AppBarTheme(
    systemOverlayStyle: SystemUiOverlayStyle.dark,
    elevation: 0,
    backgroundColor: ThemeData.light().scaffoldBackgroundColor,
    iconTheme: const IconThemeData(color: Colors.black),
  ),
  scaffoldBackgroundColor: ThemeData.light().scaffoldBackgroundColor,
  backgroundColor: Colors.white,
  iconTheme: const IconThemeData(
    color: Colors.red,
  ),
  bottomNavigationBarTheme: const BottomNavigationBarThemeData(
    selectedItemColor: Colors.blue,
    unselectedItemColor: Colors.tealAccent
  ),
);

///夜间模式
ThemeData darkTheme = ThemeData.dark().copyWith(
  appBarTheme: AppBarTheme(
    systemOverlayStyle: SystemUiOverlayStyle.light,
    elevation: 0,
    backgroundColor: ThemeData.dark().scaffoldBackgroundColor,
    iconTheme: const IconThemeData(color: Colors.white),
  ),
  scaffoldBackgroundColor: ThemeData.dark().scaffoldBackgroundColor,
  backgroundColor: Colors.black,
  iconTheme: const IconThemeData(
    color: Colors.blue,
  ),
  bottomNavigationBarTheme: const BottomNavigationBarThemeData(
      selectedItemColor: Colors.tealAccent,
      unselectedItemColor: Colors.blue
  ),
);

4.3 自定义主题文件使用

GetMaterialApp

void main()=>runApp(GetMaterialApp(
    theme:  lightTheme,
    darkTheme: darkTheme,
    // theme:  ThemeData.light(),
    // darkTheme: ThemeData.dark(),
    themeMode: ThemeMode.light,
    getPages: [
      GetPage(name: '/', page: ()=>IndexWidget(),binding: IndexBinding())
    ]
));

onPressed按钮方法

  void changeNight() {
    Get.changeTheme(darkTheme);
  }
  void changeLight(){
    Get.changeTheme(lightTheme);
  }

五 参考

### 回答1: 你可以使用 Flutter 的命令行工具清除 pub-cache。 在命令行/终端中输入以下命令: ``` flutter pub cache repair ``` 这将清除 pub-cache 中的所有内容,并重新下载所需的文件。 如果你想要更详细的控制,你可以手动删除 pub-cache 文件夹,它通常位于以下位置: - Windows:`%APPDATA%\Pub\Cache\bin` - Mac/Linux:`~/.pub-cache/bin` 然后在需要时,你可以在 Flutter 项目中运行 `flutter pub get` 来重新下载需要的依赖项。 ### 回答2: 在Flutter中,pub-cache是存储Flutter项目所需依赖包的地方。如果需要清除pub-cache中的内容,可以按照以下步骤进行操作: 1. 打开命令行终端(Command Prompt)或终端(Terminal)。 2. 进入到Flutter SDK的安装目录,通常是在用户目录下的flutter文件夹中。 3. 使用以下命令进入pub缓存目录:cd .pub-cache 4. 确保当前路径是在.pub-cache目录下。 5. 执行以下命令来清除pub-cache中的内容:flutter pub cache clean 6. 稍等片刻,Flutter会清除pub-cache中的内容。完成后,命令行会显示成功清除的提示信息。 需要注意的是,清除pub-cache中的内容意味着清除所有已下载的依赖包。这样一来,在下次运行Flutter项目时,Flutter将会重新下载并构建所需的依赖包。因此,在清除pub-cache之前,请确保你了解清楚操作的后果,并确认需要清除pub-cache中的内容。 此外,除了清除pub-cache中的内容,还可以使用flutter pub cache list命令来查看当前pub-cache中已安装的依赖包列表。这样可以帮助你进一步了解并管理当前项目所需的依赖包。 ### 回答3: 在Flutter中,pub-cache是用于存储Flutter项目依赖的第三方库的位置。当我们使用pub命令安装依赖时,它们会被下载并存储在pub-cache目录中。如果需要清除pub-cache中的内容,可以按照以下步骤进行操作: 1. 首先,打开命令行界面并导航到当前Flutter项目的根目录。 2. 运行pub cache clean命令。这将清除pub-cache目录中的所有内容,包括已下载的依赖。 3. 等待命令执行完成,此时pub-cache目录将被完全清除。 需要注意的是,清除pub-cache中的内容会导致所有依赖被删除,因此在执行此操作之前,应确保不会影响到当前项目的运行和构建。 另外,如果只想清除特定依赖的缓存,可以使用pub cache remove命令。例如,运行pub cache remove package_name将删除名称为package_name的依赖缓存。这对于解决特定依赖问题时可能很有用。 总结:要清除pub-cache中的所有内容,只需运行pub cache clean命令即可。此操作将删除项目中所有依赖的缓存。如需清除特定依赖的缓存,可以使用pub cache remove命令,并指定要删除的依赖名称。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值