You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter 3.27中Color的value属性弃用,如何修改转MaterialColor的扩展方法?

解决Flutter 3.27中Color.value弃用的MaterialColor转换问题

在Flutter 3.27版本中,Color.value属性已被弃用,你只需将return语句中的value替换为toArgb()方法即可——该方法会返回与原value完全等价的ARGB整数值,适配MaterialColor的构造参数要求。

修改后的完整代码

extension MaterialCode on Color {
  MaterialColor toMaterialColor() {
    final List<double> strengths = <double>[.05];
    final Map<int, Color> swatch = {};

    for (var i = 1; i < 10; i++) {
      strengths.add(0.1 * i);
    }

    for (final strength in strengths) {
      final double ds = 0.5 - strength;
      swatch[(strength * 1000).round()] = Color.fromRGBO(
        (r + ((ds < 0 ? r : (255 - r)) * ds).round()).toInt(),
        (g + ((ds < 0 ? g : (255 - g)) * ds).round()).toInt(),
        (b + ((ds < 0 ? b : (255 - b)) * ds).round()).toInt(),
        1,
      );
    }

    return MaterialColor(toArgb(), swatch);
  }
}

说明

toArgb()是Flutter官方为替代Color.value提供的API,它返回颜色的32位ARGB整数值,和原value属性的输出完全一致,替换后不会影响MaterialColor的生成逻辑。

内容的提问来源于stack exchange,提问作者amit.flutter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 07:02:36