Flutter 3.29.0 版本对颜色Color做出的改动 Display P3你了解吗

ops/2025/3/3 22:43:55/

Color的更改

  • 添加一个枚举字段,指定其ColorSpace。
  • 添加API以使用规范化的浮点颜色组件。
  • 删除使用可能导致数据丢失的8位无符号整数颜色组件的API。

ColorSpace 的更改

  • 添加displayP3属性。

Display P3是苹果为平衡广色域与消费级显示需求优化的色彩标准,通过扩展色域和兼容性设计,提升了视觉体验,尤其适合创意工作者和高质量媒体消费。

在支持广色域的屏幕上(如 iPhone、iPad Pro),使用 ColorSpace 显示更丰富的颜色:

// 使用 Display P3 颜色空间
const p3Red = Color(0xFFFF0000, colorSpace: ColorSpace.displayP3);
Container(color: p3Red,width: 100,height: 100,
);

加载图片时指定颜色空间,确保色彩正确显示:

Image.asset('assets/photo_p3.jpg',colorSpace: ColorSpace.displayP3, // 明确指定 P3 色域
);

在不同颜色空间之间转换颜色值(需结合 Color 类或第三方库):

// 假设将 sRGB 颜色转换为 P3 颜色空间
Color sRGBColor = Colors.red;
Color p3Color = sRGBColor.toColorSpace(ColorSpace.displayP3);
Color.fromARGB 修改为 Color.from 方式来调用 ,
// 之前:从四个整数的低8位构造sRGB颜色。
final magenta = Color.fromARGB(0xff, 0xff, 0x0, 0xff);// 之后 使用归一化浮点分量构造颜色。
final magenta = Color.from(alpha: 1.0, red: 1.0, green: 0.0, blue: 1.0);
Implementors of Color 的改动

Color中添加了新方法,因此任何实现Color的类都会中断,必须实现新方法,例如Color.a和Color.b。

class Foo implements Color {int _red;double get r => _red / 255.0;
}
Opacity 透明度
// 之前创建一个颜色的半透明度
final x = color.withOpacity(0.5);// After: Create a new color with the specified alpha channel value,
// accounting for the current or specified color space.
final x = color.withValues(alpha: 0.5);
Color 中 ColorSpace

使用颜色并对颜色分量执行任何类型计算的客户端现在应该在执行计算之前首先检查颜色空间分量。

现在可以使用新的Color.withValues方法来执行颜色空间转换。

// Before
double redRatio(Color x, Color y) => x.red / y.red;// After
double redRatio(Color x, Color y) {final xPrime = x.withValues(colorSpace: ColorSpace.extendedSRGB);final yPrime = y.withValues(colorSpace: ColorSpace.extendedSRGB);return xPrime.r / yPrime.r;
}

http://www.ppmy.cn/ops/162886.html

相关文章

深度解析Ant Design Pro 6开发实践

深度解析Ant Design Pro 6全栈开发实践:从架构设计到企业级应用落地 一、Ant Design Pro 6核心特性与生态定位(技术架构分析) 作为Ant Design生态体系的旗舰级企业应用中台框架,Ant Design Pro 6基于以下技术栈实现突破性升级&am…

AI 自动化编程盛行,程序员失业是个xx命题

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 AI 自…

‌KNN算法优化实战分享——基于空间数据结构的工业级实战指南

‌作者:‌ 某大厂空间计算架构师 ‌发布日期:2025年02月27日‌ ‌适用场景:地理信息系统(GIS)、自动驾驶、物流调度等海量空间数据查询‌ ‌一、生产环境代码模板‌ 1.1 KD-Tree批量化构建与查询(千万级数…

2024贵州大学计算机考研复试上机真题

历年贵州大学计算机考研复试上机真题 2024贵州大学计算机考研复试上机真题 2023贵州大学计算机考研复试上机真题 贵州大学计算机考研复试上机真题 在线 oj 测评:https://app2098.acapp.acwing.com.cn/problem/list/ 字符串翻转 题目描述 给定一个字符串&#xf…

在Spring Boot项目中将中文转换为拼音:从入门到实践

文章目录 在Spring Boot项目中将中文转换为拼音:从入门到实践引言一、拼音转换的背景与需求1.1 拼音转换的应用场景1.2 技术选型 二、Spring Boot集成pinyin4j2.1 添加依赖2.2 创建拼音工具类2.3 在Spring Boot中使用工具类2.4 编写测试用例 三、实践中的注意事项3.…

React + TypeScript 实战:从零实现数据库连接与交互

React TypeScript 实战:从零实现数据库连接与数据交互 目录 技术选型与架构设计环境搭建与基础配置数据库连接实战场景 场景一:MSSQL 企业级应用连接场景二:MySQL 轻量级方案实现场景三:MongoDB NoSQL集成 TypeORM进阶&#xf…

使用 DeepSeek 生成流程图、甘特图与思维导图:结合 Typora 和 XMind 的高效工作流

在现代工作与学习中,可视化工具如流程图、甘特图和思维导图能够极大地提升信息整理与表达的效率。本文将详细介绍如何使用 DeepSeek 生成 Mermaid 文本,结合 Typora 快速生成流程图和甘特图,并通过 Markdown 格式生成思维导图,最终…

Springboot + Ollama + IDEA + DeepSeek 搭建本地deepseek简单调用示例

1. 版本说明 springboot 版本 3.3.8 Java 版本 17 spring-ai 版本 1.0.0-M5 deepseek 模型 deepseek-r1:7b 需要注意一下Ollama的使用版本: 2. springboot项目搭建 可以集成在自己的项目里,也可以到 spring.io 生成一个项目 生成的话,如下…