news 2026/4/15 15:43: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/4/6 11:23:34

58、深入探究文件系统框架与I/O操作

深入探究文件系统框架与I/O操作 1. 块I/O与vnode页面 块I/O子系统支持对vnode页面进行I/O操作。以下三个函数可用于在物理页面和设备之间发起I/O: | 函数 | 描述 | | — | — | | bdev_strategy() | 使用块I/O设备在页面上发起I/O | | pageio_done() | 等待块设备I/O完成…

作者头像 李华
网站建设 2026/4/15 14:55:37

61、Unix文件系统UFS实现解析

Unix文件系统UFS实现解析 1. UFS概述 UFS(Unix文件系统)被实现为一个可加载的文件系统模块,包含vfs和vnode对象的实例。其中,UFS的vnode接口实现文件操作,而UFS的vfs接口则实现文件系统管理。 UFS文件系统的实现主要分为以下五个部分: - 一个vfs对象实例,以及用于挂…

作者头像 李华
网站建设 2026/4/7 23:13:19

62、Solaris文件系统缓存:原理、优化与性能分析

Solaris文件系统缓存:原理、优化与性能分析 在操作系统中,文件系统缓存是提升文件读写性能的关键机制。本文将深入探讨Solaris系统中文件系统缓存的工作原理、优化策略以及对系统性能的影响。 1. 文件缓存简介 文件系统的一个重要特性是能够缓存文件数据。然而,在Solaris…

作者头像 李华
网站建设 2026/4/6 5:03:52

Qwen3-30B-A3B模型参数配置指南:解锁高效推理与流畅交互的双重体验

在大语言模型应用中,参数配置如同调节精密仪器的旋钮,微小的调整可能带来截然不同的输出效果。Qwen3-30B-A3B作为新一代大模型,凭借其300亿参数规模与A3B架构优化,在复杂推理与自然对话场景中均展现出卓越性能。本文将系统解析该模…

作者头像 李华
网站建设 2026/4/15 13:36:18

7、强化 Linux 系统安全性:全面指南

强化 Linux 系统安全性:全面指南 1. Linux 系统强化概述 在安装 Windows 操作系统时,同一版本的基本安装,包括默认安全设置通常是一致的。而 Linux 不同,不同的 Linux 发行版在默认配置下的安全性差异很大。有些发行版默认就具备较高的安全性,而有些则不然。 Linux 系统…

作者头像 李华