Flutter 颤振null安全-参数类型“Color?”无法分配给参数类型“Color”

Flutter 颤振null安全-参数类型“Color?”无法分配给参数类型“Color”,flutter,dart-null-safety,Flutter,Dart Null Safety,我将flutter的SDK版本更改为min,以便修复空安全性代码 有一个问题我不明白, 此行产生以下错误: The argument type 'Color?' can't be assigned to the parameter type 'Color' border: Border.all(color: Colors.grey[300], width: 1), 但是如果我改变颜色。灰色[300],不管它的值不使用[],它都会工作, 所以颜色。灰色很好用 我应该在这里更改什么以继续使用灰色

我将flutter的SDK版本更改为min,以便修复空安全性代码

有一个问题我不明白, 此行产生以下错误:

The argument type 'Color?' can't be assigned to the parameter type 'Color'

border: Border.all(color: Colors.grey[300], width: 1),
但是如果我改变颜色。灰色[300],不管它的值不使用[],它都会工作, 所以颜色。灰色很好用

我应该在这里更改什么以继续使用灰色[300]?

您可以将0xFFE0E0用于灰色[300]

要选择材质颜色,可以使用此选项

要从其中一个样例中选择特定颜色,请使用所需特定颜色的整数索引到样例中,如下所示:

颜色选择=颜色。绿色[400]!;//选择中档绿色。 每个色样常量都是一种颜色,可以直接使用。例如:

Container(
  color: Colors.blue, // same as Colors.blue[500] or Colors.blue.shade500
)
问题:

当您使用Colors.grey[300]时,实际上是从地图中获取颜色,该地图在空安全模式下会发出警告,因为该值可能为空

解决方案:

有两种解决方案。一个是一般性的,另一个只是针对这种情况

使用Bang操作符

在颜色上使用shadeXXX


是的,我注意到了,但这是否意味着在[x]中使用特定颜色的阴影不再被允许,因为在颤振2中使用空安全性?是的,你们可以在这里检查这个问题
Color color = Colors.grey[300]; // Error in null-safe mode
Color color = Colors.grey[300]!  // Added '!', error gone 
Color color = Colors.grey.shade300;