news 2026/4/28 18:22:58

新手学习笔记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/4/27 2:06:31

57、深入解析文件系统特性与Solaris内核框架

深入解析文件系统特性与Solaris内核框架 1. 文件系统概述 在现代计算机系统中,文件系统起着至关重要的作用,它负责数据的存储、组织和管理。下面将介绍一些常见的文件系统特性。 1.1 稀疏文件 某些文件系统允许在不分配磁盘块的情况下创建文件。例如,你可以通过打开一个…

作者头像 李华
网站建设 2026/4/28 14:04:47

MSF框架全解析:白帽子的实战指南与高级技巧

MSF框架全解析:白帽子的实战指南与高级技巧 一、MSF核心架构解析 1.1 什么是Metasploit Framework(MSF)? Metasploit Framework是一款开源渗透测试框架,相当于白帽子的“瑞士军刀”。它提供了完整的漏洞研究、开发和利…

作者头像 李华
网站建设 2026/4/25 9:51:23

突破语音合成边界:微软VibeVoice-1.5B技术深度剖析与实践指南

突破语音合成边界:微软VibeVoice-1.5B技术深度剖析与实践指南 【免费下载链接】VibeVoice-1.5B 项目地址: https://ai.gitcode.com/hf_mirrors/microsoft/VibeVoice-1.5B 在语音合成技术领域,传统文本转语音(TTS)系统长期…

作者头像 李华
网站建设 2026/4/24 9:34:35

10、MySQL、邮件服务与企业应用实践

MySQL、邮件服务与企业应用实践 数据库选择依据 在设计不同类型的应用时,数据库的选择至关重要。对于人力资源应用,由于数据具有关系性,如员工的姓名、社保号码、工资等相关信息,选择关系型数据库是合适的。而对于多媒体应用,像照片、视频和艺术作品等,对象数据库更为流…

作者头像 李华
网站建设 2026/4/25 2:44:18

21、BIND与DHCP在DNS中的应用详解

BIND与DHCP在DNS中的应用详解 1. 反向查找区域文件 在示例反向查找区域文件中,存在一个针对网络 10.1.1.0/24 的反向区域。 $ORIGIN 指令是可选的,但它能让区域文件更易读,该指令主要用于补全未完全限定的资源记录(RRs)。例如,当使用IP地址 10.1.1.[1,2,6] 时, …

作者头像 李华
网站建设 2026/4/23 0:38:00

27、Linux 系统故障排查与性能优化指南

Linux 系统故障排查与性能优化指南 1. 进程排查工具——ps 命令 在排查进程相关问题时, ps 命令非常实用。以下是几个常见的 ps 命令选项及示例: - 查看进程运行时间 :可以帮助解决内存耗尽问题。例如,查看 init 和 rsyslog 进程的运行时间: $ ps -eo pid,c…

作者头像 李华