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
相关产品推荐
相关产品推荐

