news 2026/8/8 1:28:57

新手学习笔记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/8/7 12:41:28

人工智能音乐创作新纪元:Jukebox技术如何重塑音乐产业边界

人工智能音乐创作新纪元:Jukebox技术如何重塑音乐产业边界 【免费下载链接】jukebox-5b-lyrics 项目地址: https://ai.gitcode.com/hf_mirrors/openai/jukebox-5b-lyrics 在数字技术与艺术创作深度融合的当下,人工智能正以前所未有的方式渗透音乐…

作者头像 李华
网站建设 2026/8/7 16:01:07

1、免费安全解决方案的商业论证

免费安全解决方案的商业论证 引言 在寻求解决安全问题的低成本方案时,很多人希望了解可用的免费工具。然而,在某些环境中,主动实施安全措施可能会带来问题。本文旨在帮助你理解免费安全解决方案的成本与收益,为你提供有力的商业论据,以支持你实施节省成本的解决方案。无…

作者头像 李华
网站建设 2026/8/7 15:24:53

13、Snort与Windows事件日志管理全解析

Snort与Windows事件日志管理全解析 1. Snort性能优化与附加组件 1.1 Snort性能优化 启动Snort时使用 –A none 参数,可避免向Snort终端记录任何内容,从而提升性能。 1.2 其他Snort附加组件 Snort有众多实用的工具和附加组件,部分可保持规则库更新,部分能提升性能。若…

作者头像 李华
网站建设 2026/8/7 5:26:45

类脑记忆突破:字节跳动AHN-GDN技术解决AI长文本处理效率瓶颈

导语 【免费下载链接】AHN-GDN-for-Qwen-2.5-Instruct-7B 项目地址: https://ai.gitcode.com/hf_mirrors/ByteDance-Seed/AHN-GDN-for-Qwen-2.5-Instruct-7B 当AI面对百万字法律卷宗、跨年度医疗档案时,是否还在因"记忆过载"导致关键信息遗漏&…

作者头像 李华
网站建设 2026/8/7 3:29:09

9、Linux 文件服务器搭建与系统资源监控指南

Linux 文件服务器搭建与系统资源监控指南 1. 文件服务器搭建 在某些场景下,手动挂载资源会比自动挂载更加实用。例如,使用笔记本电脑时可能不会一直连接到同一个网络,此时若添加 noauto 作为挂载选项,就无需记住冗长的挂载命令,可在需要时手动挂载资源。 1.1 NFS 挂载…

作者头像 李华
网站建设 2026/8/7 17:02:56

15、高级网络概念解析:从IP分类到QoS实现

高级网络概念解析:从IP分类到QoS实现 1. IP地址分类与有效性 并非所有IP地址都适用于特定类别。例如,内部IP网络 253.221.96.0 搭配子网掩码 255.255.255.0 虽符合部分规则,但它并非有效的C类网络。以下是各类IP地址的推荐范围: | 类别 | 起始IP | 结束IP | | — | — …

作者头像 李华