断言失败:第 24 行 pos 15:'color != null && color.alpha == 0xFF':不正确
Posted
技术标签:
【中文标题】断言失败:第 24 行 pos 15:\'color != null && color.alpha == 0xFF\':不正确【英文标题】:Failed assertion: line 24 pos 15: 'color != null && color.alpha == 0xFF': is not true断言失败:第 24 行 pos 15:'color != null && color.alpha == 0xFF':不正确 【发布时间】:2020-08-31 22:58:06 【问题描述】:当 RGBO 块中的不透明度为 1 时,它可以正常工作。但是,如果我尝试增加或减少原色的不透明度,则会在 Flutter 中引发错误
return MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Savay',
theme: ThemeData(
fontFamily: 'sen',
primaryColor: Color.fromRGBO(49, 67, 89, 0.8),
accentColor: Color.fromRGBO(248, 248, 248, 1)),
home: Filters(),
);
【问题讨论】:
你不能给primaryColor
不透明,它应该总是完全不透明的。
【参考方案1】:
正如之前在 cmets 中提到的,theme
中设置的颜色应该始终是不透明的。您可能希望单独为小部件单独设置颜色不透明度。除了使用Colors.fromRGBO
,您还可以使用Colors.COLOR.withOpacity(0.5)
设置不透明度。
【讨论】:
【参考方案2】:我得到了这个错误,为什么要尝试将 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 传递到主题数据中
【讨论】:
【参考方案3】:我遇到了同样的错误
我只是去了 C:\src\flutter\packages\flutter\lib\src\widgets\title.dart 然后到第 24 行
并简单地将==
更改为 Not= 即
assert(color != null && color.alpha **!=** 0xFF),
我的错误消失了。
【讨论】:
以上是关于断言失败:第 24 行 pos 15:'color != null && color.alpha == 0xFF':不正确的主要内容,如果未能解决你的问题,请参考以下文章
错误:未布置 RenderBox,断言失败:第 1940 行 pos 12:'hasSize'
断言失败:第 551 行 pos 12:'child.hasSize':不正确
断言失败:第 6075 行 pos 12:'child == _child':不正确
断言失败:第 22 行 pos 14: 'url != null': is not true
断言行 5120 pos 12 失败:'child = _child' 不正确
断言失败:第 125 行第 12 行:'assertMidButtonStyles(navBarStyle, items!.length)'