主页 > 人工智能  > 

Flutter3.29.0版本对颜色Color做出的改动DisplayP3你了解吗

Flutter3.29.0版本对颜色Color做出的改动DisplayP3你了解吗

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; @override 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; }
标签:

Flutter3.29.0版本对颜色Color做出的改动DisplayP3你了解吗由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Flutter3.29.0版本对颜色Color做出的改动DisplayP3你了解吗