我正在将 Flutter 项目升级到版本 3.27.0,我注意到 withOpacity 方法被标记为已弃用。我在代码中使用它,如下所示:
SizedBox(
height: 55,
width: 50,
child: VerticalDivider(
color: const Color(0xff171433).withOpacity(0.1),
thickness: 1.5,
),
)
这段代码在早期版本的 Flutter 中运行良好,但升级后,我收到一条警告,指出 withOpacity 已被弃用。
我查看了 3.27.0 的 Flutter 变更日志,但找不到有关为何进行此更改的详细信息。
问题: 为什么 Flutter 3.27.0 中不推荐使用 withOpacity? 实现相同功能的推荐替代方案或最佳实践是什么?
如果您能深入了解此弃用背后的原因以及如何调整我的代码以适应新版本,我将不胜感激。
withOpaciy 在 flutter 3.27.0 中被弃用的原因是因为根据 flutter 文档: “以前,Color 有“不透明度”的概念,它出现在方法 opacity 和 withOpacity() 中。不透明度被引入为一种使用浮点值与 Color 沟通其 alpha 通道的方法 既然 alpha 是浮点值,那么不透明度就是。冗余和不透明度以及 withOpacity 已被弃用并计划被删除”。 建议的替换是使用 .withValues(),这也有助于避免精度损失,因为其值仍然保留在浮点表示中。
从 withOpacity() 迁移时如何正确使用 .withvalues():
// Before
final x = color.withOpacity(0.0);
// After
final x = color.withValues(alpha: 0.0);