news 2026/9/2 20:08:15

新手学习笔记DAY11:学习将“GitCode 口袋工具”启用深色模式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
新手学习笔记DAY11:学习将“GitCode 口袋工具”启用深色模式

本人的学习灵感源自 CSDN 博主 A 懿轩 A(博客链接:https://blog.csdn.net/2301_80035882?type=blog)。博主围绕【2025 版 OpenHarmony】GitCode 口袋工具系列开发内容,兼具实用性与指导性,极具参考和学习意义。在此基础上所有内容均为个人实操总结,尊重原作者知识产权,特此标注。

1、首先我们将华为模拟器调为深色模式

2、然后新增一个app_theme.dart文件,具体路径是lib/core/app_theme.dart,文件创建完毕后将下列代码添加到该文件中。

import 'package:flutter/material.dart'; /// 统一管理浅色/深色主题,方便在 HarmonyOS 上适配系统夜间模式。 class AppTheme { AppTheme._(); static const Color _seedColor = Colors.indigo; static ThemeData light() => _theme(Brightness.light); static ThemeData dark() => _theme(Brightness.dark); static ThemeData _theme(Brightness brightness) { final colorScheme = ColorScheme.fromSeed( seedColor: _seedColor, brightness: brightness, ); final isDark = brightness == Brightness.dark; return ThemeData( colorScheme: colorScheme, useMaterial3: true, visualDensity: VisualDensity.standard, brightness: brightness, scaffoldBackgroundColor: colorScheme.surface, appBarTheme: AppBarTheme( backgroundColor: colorScheme.surface, foregroundColor: colorScheme.onSurface, centerTitle: true, elevation: 0, ), navigationBarTheme: NavigationBarThemeData( backgroundColor: colorScheme.surfaceContainerHigh, indicatorColor: colorScheme.primary.withValues(alpha: isDark ? 0.35 : 0.2), labelBehavior: NavigationDestinationLabelBehavior.alwaysShow, ), cardTheme: CardTheme( color: colorScheme.surfaceContainerLowest, elevation: 0, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(20), ), ), inputDecorationTheme: InputDecorationTheme( border: OutlineInputBorder( borderRadius: BorderRadius.circular(16), borderSide: BorderSide(color: colorScheme.outlineVariant), ), enabledBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(16), borderSide: BorderSide(color: colorScheme.outlineVariant), ), focusedBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(16), borderSide: BorderSide(color: colorScheme.primary, width: 1.4), ), filled: true, fillColor: colorScheme.surfaceContainerLowest, labelStyle: TextStyle(color: colorScheme.onSurfaceVariant), hintStyle: TextStyle( color: colorScheme.onSurfaceVariant.withValues(alpha: 0.7), ), prefixIconColor: colorScheme.onSurfaceVariant, ), chipTheme: ChipThemeData( backgroundColor: colorScheme.surfaceContainerHigh, selectedColor: colorScheme.primary.withValues(alpha: 0.2), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(24), ), labelStyle: TextStyle(color: colorScheme.onSurface), ), dividerTheme: DividerThemeData( color: colorScheme.outlineVariant.withValues(alpha: 0.7), thickness: 1, ), ); } }

3、然后修改main.dart文件,MaterialApp跟随系统模式,可同时拥有亮/暗主题,并通过ThemeMode.system跟随HarmonyOS/Windows 的系统设置,修改代码:

return MaterialApp( title: 'GitCode 口袋工具', theme: AppTheme.light(), darkTheme: AppTheme.dark(), themeMode: ThemeMode.system, home: const MainNavigationPage(), );

记得添加导入文件,否则会报错!

import 'package:gitcode_pocket_tool/core/app_theme.dart';

4、最后修改search_page.dart文件,修改代码:

return _InfoBanner( icon: Icons.error_outline, background: scheme.errorContainer, textColor: scheme.onErrorContainer, message: _errorMessage!, );

5、运行实例:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 4:51:14

10、网络资源保护:从基础加固到数据加密

网络资源保护:从基础加固到数据加密 1. 扫描操作与敏感数据加密概述 在完成选择后,点击“下一步”,扫描将立即开始。快速扫描的速度极快,扫描完成后,你看到的下一个窗口便是扫描结果窗口。若工具检测到异常,系统会提示你决定后续操作。 保护敏感数据的另一种有效方式是…

作者头像 李华
网站建设 2026/9/2 19:14:20

15、事件日志管理与安全保障

事件日志管理与安全保障 自定义应用日志报告错误处理 在请求自定义应用(customapp)报告时可能会出现错误。当前目录下的 customapp.conf 文件会指定一个日志文件组,进而明确需要检查的日志文件。 /logfiles/ 目录包含日志文件组的配置文件,这些文件定义了哪些日志文件…

作者头像 李华
网站建设 2026/9/3 1:21:00

Liquid AI发布新一代混合模型LFM2,重新定义边缘AI部署标准

Liquid AI发布新一代混合模型LFM2,重新定义边缘AI部署标准 【免费下载链接】LFM2-700M-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/LiquidAI/LFM2-700M-GGUF 在人工智能模型向轻量化、本地化部署加速演进的当下,Liquid AI近日推出的新一…

作者头像 李华
网站建设 2026/9/2 12:48:49

百度文心4.5大模型部署全解析:GPU配置与性能优化指南

百度文心4.5大模型部署全解析:GPU配置与性能优化指南 【免费下载链接】ERNIE-4.5-300B-A47B-Base-PT 项目地址: https://ai.gitcode.com/hf_mirrors/baidu/ERNIE-4.5-300B-A47B-Base-PT 随着生成式AI技术的飞速发展,大语言模型的参数规模和能力边…

作者头像 李华
网站建设 2026/9/2 0:38:15

4、深入理解 Linux 网络基础与管理

深入理解 Linux 网络基础与管理 1. 主机解析顺序 在 Linux 系统中,主机解析顺序的最终确定依赖于 /etc/nsswitch.conf 文件。虽然 /etc/hosts 文件会首先被检查,但 /etc/nsswitch.conf 决定了主机解析的完整顺序。可以使用以下命令查看主机解析顺序: cat /etc/nss…

作者头像 李华
网站建设 2026/9/3 3:09:13

17、网络安全:OpenSSH、防火墙与服务保护全攻略

网络安全:OpenSSH、防火墙与服务保护全攻略 1. 系统服务查询与安全注意事项 在了解系统运行情况时,我们可以通过一些方法来查询系统中正在运行的服务。随着对常见服务名称的熟悉,我们可能需要借助谷歌搜索来了解每个服务的用途,不过这会随着时间推移变得更加容易。在调整…

作者头像 李华