【Flutter】Flutter 使用 flex_color_scheme 创建美观的 Material Design 主题

news2024/11/24 6:34:16

【Flutter】Flutter 使用 flex_color_scheme 创建美观的 Material Design 主题

文章目录

    • 一、前言
    • 二、FlexColorScheme 简介
    • 三、开始使用 FlexColorScheme
    • 四、实际业务中的应用
    • 五、FlexColorScheme 的高级功能
    • 六、完整实际业务代码示例
    • 七、总结

一、前言

今天,我想与大家分享一个非常强大的 Flutter 主题设计工具:FlexColorScheme。在这篇文章中,我们将深入探讨如何使用 FlexColorScheme 创建和应用美观的 Material Design 主题。我将为大家展示如何快速上手,以及如何利用其高级功能来打造完全定制的主题。

版本信息:本文中使用的 Dart 版本为 3.0,Flutter 版本为 3.10,而 FlexColorScheme 的版本为 7.3.1。

你是否对成为 Flutter 高手充满渴望,想要掌握更多前沿技巧和最佳实践?现在,你的机会来了!

🚀 Flutter 从零到一:基础入门到应用上线全攻略 正在热烈招募参与者!

✅ 这个专栏不仅包括了全面的 Flutter 学习资源,还有实用的代码示例和深入的解析教程。
✅ 专栏内容会持续更新,价格也会随之上涨。现在加入,享受最优惠的价格,抓住属于你的机会!
✅ 想要与其他 Flutter 学习者互动交流吗?点击这里 加入我们的讨论群,一起成长、一起进步。

别再等待,让我们今天就启程,共同开启 Flutter 的精彩学习之旅吧!

二、FlexColorScheme 简介

  1. FlexColorScheme 的核心功能

    FlexColorScheme 是为 Flutter 设计的一个包,它的主要目的是帮助开发者轻松创建和使用基于 Material Design 的主题。与 Flutter 的 ThemeData.from(ColorScheme) 和 ThemeData(colorSchemeSeed) 主题相似,FlexColorScheme 提供了更多的附加功能,使您可以从众多预制设计中选择,或创建自己的设计。

  2. Material-3 支持及其优势

    Material-3 是 Material Design 的最新版本,它在设计和功能上都有所进化。当您选择使用 Material-3 时,颜色结果和样式默认情况下会更加一致。FlexColorScheme 确保所有 Flutter SDK UI 组件都完全按照其颜色方案和您提供的自定义颜色进行主题化,无论您是使用 Material-2 还是 Material-3 模式。

  3. 如何确保完整的主题化

    FlexColorScheme 通过其颜色方案和您提供的自定义颜色确保所有 Flutter SDK UI 组件得到完整的主题化。它将有效的 ColorScheme 颜色应用于 ThemeData 中的所有颜色属性,确保 ThemeData 中的所有直接颜色属性与您的 ColorScheme 匹配。

三、开始使用 FlexColorScheme

  1. 如何在项目中添加和导入 FlexColorScheme

    要在您的项目中使用 FlexColorScheme,首先需要将 flex_color_scheme 包添加到 pubspec.yaml 文件中。您可以使用以下命令进行添加:

    dart pub add flex_color_scheme
    

    或者

    flutter pub add flex_color_scheme
    

    安装完成后,导入包以使用它:

    import 'package:flex_color_scheme/flex_color_scheme.dart';
    
  2. 使用内置颜色方案的快速入门

    FlexColorScheme 提供了 52 种内置颜色方案,您可以使用它们的枚举值来选择要用作应用主题的方案。

  3. FlexColorScheme 的基本配置

    一旦您导入了 FlexColorScheme,就可以开始使用基于 FlexColorScheme 的颜色方案和主题。一个简单的方法是尝试其中一个内置的颜色方案。这些方案具有枚举值,您可以使用这些值来选择应用的主题。

四、实际业务中的应用

  1. 在默认的 Flutter 计数器应用中设置 FlexColorScheme

    让我们首先在默认的 Flutter 计数器应用中设置 FlexColorScheme。创建一个新的 Flutter 项目,这将为您提供默认的计数器应用。添加 FlexColorScheme 导入后,我们只需修改一行代码,并添加两行代码即可在默认的计数器应用中启用它。

    在这里,我们使用 Oh Mandy 红色方案,它由枚举值 FlexScheme.mandyRed 表示。将 MaterialApp.themeMode 设置为 ThemeMode.system,这样设备可以控制应用是否使用其亮色或暗色主题模式。您可以通过更改所使用设备上的模式来切换主题模式。

  2. 使用 Oh Mandy 红色方案进行主题化

    为了在应用中使用 Oh Mandy 红色预定义方案的颜色,我们为 FlexThemeData 的暗色和亮色都设置了 scheme 属性为 FlexScheme.mandyRed。这样,我们就可以根据内置方案的颜色定义获得匹配的亮色和暗色主题。

  3. 切换主题模式的方法

    您可以通过更改所使用设备上的模式来切换主题模式,从而轻松地在亮色和暗色主题之间切换。

五、FlexColorScheme 的高级功能

  1. 使用表面 alpha 混合

    FlexColorScheme 提供了许多高级的颜色功能,例如使用表面 alpha 混合。这允许您为应用创建更丰富、更动态的颜色效果。

  2. 使用种子生成的 ColorSchemes

    FlexColorScheme 完全支持基于 Material 3 的颜色方案,包括种子生成的 ColorSchemes。这意味着您可以从关键颜色生成颜色方案,这为您提供了更多的自定义选项。

  3. 自定义主题配置的方法

    FlexColorScheme 提供了不同的配置选项,您可以在从关键颜色生成 ColorScheme 时使用这些选项。这使您可以创建更饱和的种子生成主题和具有更高对比度的主题。

六、完整实际业务代码示例

import 'package:flutter/material.dart';
import 'package:flex_color_scheme/flex_color_scheme.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'FlexColorScheme Demo',
      theme: FlexColorScheme.light(scheme: FlexScheme.mandyRed).toTheme,
      darkTheme: FlexColorScheme.dark(scheme: FlexScheme.mandyRed).toTheme,
      themeMode: ThemeMode.system,
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key}) : super(key: key);

  
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('FlexColorScheme 示例'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              '您已经点击了这个按钮这么多次:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: '增加',
        child: Icon(Icons.add),
      ),
    );
  }
}

这段代码展示了如何在一个简单的 Flutter 应用中使用 FlexColorScheme 进行主题化。通过这种方式,您可以为应用提供一致且吸引人的颜色方案。

运行结果如下:

七、总结

FlexColorScheme 确实为 Flutter 开发者提供了一个强大的工具,使我们能够轻松地创建和应用美观的 Material Design 主题。通过使用 FlexColorScheme,我们不仅可以利用其内置的颜色方案,还可以根据自己的需求进行完全的定制。这种灵活性确保了我们的应用可以拥有独特且一致的外观和感觉。

选择正确的颜色方案和主题对于任何应用都至关重要,因为它们直接影响到用户的体验。一个好的主题可以使应用更加吸引人,而 FlexColorScheme 提供的工具和功能确保了我们可以轻松地实现这一目标。

对 Flutter 感兴趣,渴望深入探索和学习吗?Flutter 从零到一:基础入门到应用上线全攻略 正是你的完美起点!

📘 在这个专栏中,你将发现丰富的 Flutter 学习资源,从代码示例到深入的技术解读,一应俱全。
🛠️ 想要了解如何用 Flutter 构建出色的应用吗?所有的秘诀和答案都在我们的专栏里等着你!
💰 别再犹豫,专栏内容将不断更新,价格也将逐渐上涨。现在就加入,享受最优惠的价格,开启你的 Flutter 探索之旅!

想了解更多?点击这里查看 Flutter Developer 101:入门小册 & 专栏指引

👥 还有,别忘了点击这里 加入我们的讨论群,与其他 Flutter 爱好者一起交流和学习,共同成长!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/939806.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法刷题之字符串篇】

目录 1.leetcode-344. 反转字符串&#xff08;1&#xff09;方法&#xff1a;双指针 2.leetcode-541. 反转字符串 II&#xff08;1&#xff09;方法一&#xff1a;模拟&#xff08;2&#xff09;方法二&#xff1a;双指针 3.leetcode-剑指 Offer 05. 替换空格&#xff08;1&…

【大数据知识】大数据平台和数据中台的定义、区别以及联系

数据行业有太多数据名词&#xff0c;例如大数据、大数据平台、数据中台、数据仓库等等。但大家很容易混淆&#xff0c;也很容易产生疑问&#xff0c;今天我们就来简单聊聊大数据平台和数据中台的定义、区别以及联系。 大数据平台和数据中台的定义 大数据平台&#xff1a;一个…

AUTOSAR系列专题--诊断模块(下)

往期小怿向各位小伙伴介绍了&#xff0c;文章内容过多分为了两期&#xff0c;本期为大家介绍《AUTOSAR模块之诊断篇&#xff08;下&#xff09;》。 目录 1.概述 2.DCM 3.DEM 4.FIM 5.结语 点击查看前文&#xff1a;AUTOSAR系列专题--诊断模块&#xff08;上&#xff09;…

设备维护管理软件哪家好?设备巡检系统对企业经营管理有什么好处?

随着时代的不断进步&#xff0c;科学技术的飞速发展以及自动化水平的持续提高&#xff0c;设备维护保养工作在日常工作生产中扮演着至关重要的角色。然而&#xff0c;在实际生产中&#xff0c;由于对设备性能和保养规程的不熟悉&#xff0c;常常出现误操作、保养不到位或无法及…

如何修改字符串内容?

⭐ 作者&#xff1a;小胡_不糊涂 &#x1f331; 作者主页&#xff1a;小胡_不糊涂的个人主页 &#x1f4c0; 收录专栏&#xff1a;浅谈Java &#x1f496; 持续更文&#xff0c;关注博主少走弯路&#xff0c;谢谢大家支持 &#x1f496; String 1. 修改字符串2. StringBuilder和…

bpmnjs Properties-panel拓展(属性设置篇)

最近有思考工作流相关的事情&#xff0c;绘制bpmn图的工具认可度比较高的就是bpmn.js了&#xff0c;是一个基于node.js的流程图绘制框架。初始的框架只实现了基本的可视化&#xff0c;想在xml进行客制化操作的话需要拓展&#xff0c;简单记录下几个需求的实现过程。 修改基础 …

leetcode 516. 最长回文子序列

2023.8.27 本题依旧使用dp算法做&#xff0c;可以参考 回文子串 这道题。dp[i][j]定义为&#xff1a;子串s[i,j] 的最长回文子串。 直接看代码: class Solution { public:int longestPalindromeSubseq(string s) {vector<vector<int>> dp(s.size(),vector<int&…

JVM知识点(一)

1、JVM基础概念 &#xff08;1&#xff09;JVM、JRE、JDK JRE&#xff1a;JVM基本类库组成的运行环境就是JRE。JVM自己是无法完成一次编译&#xff0c;处处运行的&#xff0c;需要有一个基本类库告诉JVM如何操作运行&#xff0c;如如何操作文件&#xff0c;连接网络等&#x…

四川玖璨电子商务有限公司:短视频运营表格

随着互联网的飞速发展和用户对内容需求的不断增加&#xff0c;短视频运营成为了当前互联网领域的一大热门。短视频作为一种具有高度吸引力和传播力的内容形式&#xff0c;成为各大平台争相追逐和竞争的热点。 然而&#xff0c;短视频运营并非一项简单的任务。为了能够在激烈的…

HOOPS Exchange如何实现3D模型格式转换?

HOOPS Exchange是一个专业的3D数据转换工具包&#xff0c;用于处理各种不同格式的3D模型数据。它提供了高效、精确的转换和处理功能&#xff0c;让开发者能够在不同的3D软件和环境之间无缝交换模型数据。 HOOPS Exchange将模型加载到标准化数据结构中&#xff0c;可以查询该数…

Android Update Engine 分析(二十一)Android A/B 更新过程

0. 背景 早期 Android A/B 系统升级在 Android 7.1 版本推出时&#xff0c;参考文档十分有限&#xff0c;也就是 Android 官方大概有两三个页面介绍文档。 我的第一篇 A/B 系统分析文章《Android A/B System OTA分析&#xff08;一&#xff09;概览》从总体上介绍了什么是 A/…

全面解析MES系统中的车间退料管理

一、车间退料管理的定义&#xff1a; 车间退料是指在生产过程中&#xff0c;将不合格或多余的物料、半成品或成品从车间环节返还到供应链的过程。车间退料管理则是指对这一退料过程进行规范化、系统化的管理和跟踪。 二、车间退料管理的流程&#xff1a; 1. 退料申请&#xf…

不会用这个工具,你的Linux服务器就是个摆设!

大家好&#xff0c;我的网工朋友 在运维这一块&#xff0c;没有工具可谓是寸步难行。 一个好的Linux运维&#xff0c;为了提升自己的工作效率&#xff0c;免不得会找一些适合自己业务需求的工具&#xff0c;用起来工作效率高&#xff0c;工作幸福指数直线上升。 今天整理了几…

数字化、智能化的酒店固定资产管理系统

酒店固定资产管理系统是一种专门为酒店行业定制的管理软件&#xff0c;可以帮助酒店管理者全面、准确地管理固定资产。该系统具有以下实际功能和特点&#xff1a;  资产库存功能&#xff1a;通过扫描二维码或手动输入条形码&#xff0c;完成酒店固定资产的有效总结&#xff0…

windows搭建向量数据库milvus

这里我们使用docker的方式&#xff0c;搭建本地向量数据库。 首先安装docker&#xff0c;windows下载安装docker。 下载链接&#xff1a;https://docs.docker.com/desktop/install/windows-install/ 安装完成后&#xff0c;开始菜单可以看到docker。 安装milvus 下载 YAML文…

探索内网穿透工具:实现局域网SQL Server数据库的公网远程访问方法

文章目录 1.前言2.本地安装和设置SQL Server2.1 SQL Server下载2.2 SQL Server本地连接测试2.3 Cpolar内网穿透的下载和安装2.3 Cpolar内网穿透的注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 数据库的重要性相信大家都有所了解&…

可快速搭建运营的答题考试问卷调查小程序开发演示

考试答题问卷调查小程序&#xff0c;支持每一个用户自由发起考试答题、问卷调查。支持控制问卷搜集、回答等各个环节的设置。支持使用系统模板问卷&#xff0c;可以一键创建属于自己的问卷。支持考试答题中错题搜集和添加错题&#xff0c;巩固知识点。 核心亮点&#xff1a; …

《Linux从练气到飞升》No.18 进程终止

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux菜鸟刷题集 &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的…

前端 js实现 选中数据 动态 添加在表格中

如下图展示&#xff0c;表格上方有属性内容&#xff0c;下拉选中后&#xff0c;根据选中的内容&#xff0c;添加在下方的表格中。 实现方式&#xff0c;&#xff08;要和后端约定&#xff0c;因为这些动态添加的字段都是后端返回的&#xff0c;后端自己会做处理&#xff0c…

C# textBox 右键菜单 contextMenuStrip

需求&#xff1a; 想在上图空白处可以右键弹出菜单&#xff0c;该怎么做呢&#xff1f; 1.首先&#xff0c;拖出一个 ContextMenuStrip。 随便放哪里都行&#xff0c;如下: 2.在textBox里关联这个“右键控件”即可&#xff0c;如下&#xff1a; 最终效果如下&#xff1a; 以上…