我得到了这个错误,为什么要尝试将 rgba 转换为 argb,但我用这段代码解决了它
int hexOfRGBA(int r,int g,int b,{double opacity=1})
{
var value=((((opacity * 0xff ~/ 1) & 0xff) << 24) |
((r & 0xff) << 16) |
((g & 0xff) << 8) |
((b & 0xff) << 0)) & 0xFFFFFFFF;
return value;
}
我是从这里得到的https://api.flutter.dev/flutter/dart-ui/Color/Color.fromRGBO.html
我认为您可以将 rgbo 传递为十六进制值,并将其作为材质颜色添加到主题数据中,如下所示
首先,为您的材质颜色创建贴图
Map<int, Color> color =
{
50:primaryColor.withOpacity(0.1),
100:primaryColor.withOpacity(0.2),
200:primaryColor.withOpacity(0.3),
300:primaryColor.withOpacity(0.4),
400:primaryColor.withOpacity(0.5),
500:primaryColor.withOpacity(0.6),
600:primaryColor.withOpacity(0.7),
700:primaryColor.withOpacity(0.8),
800:primaryColor.withOpacity(0.9),
900:primaryColor.withOpacity(1.0),
};
其中primaryColor =Color.fromRGBO(49, 67, 89, 0.8); // 主题数据中的一种颜色,
然后创建一个函数将其转换为十六进制代码
int hexOfRGBA(int r,int g,int b,{double opacity=1})
{
var value=((((opacity * 0xff ~/ 1) & 0xff) << 24) |
((r & 0xff) << 16) |
((g & 0xff) << 8) |
((b & 0xff) << 0)) & 0xFFFFFFFF;
return value;
}
现在不再像这样直接传递 rgbo 代码,而是将每个 rgbo 作为材质颜色传递
theme: ThemeData(
primarySwatch: MaterialColor(hexOfRGBA(49, 67, 89, opacity:0.8),color )
),
其中颜色,是我们早期创建的颜色映射,十六进制颜色来自函数,里面的 rgbo 是我们放入映射中的 rgbo。
您可以对两种颜色都执行此操作,并将它们作为材质颜色而不是 rgbo 传递到主题数据中