颤振空安全 - 参数类型 'Color?' 不能分配给参数类型"颜色"



我将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),

但如果我用不使用[]的任何值来更改Colors.grey[300],所以CCD_ 3工作得非常好。

我应该在这里更改什么才能继续使用grey[300]

问题:

Color color = Colors.grey[300]; // Error in null-safe mode

当你使用Colors.grey[300]时,你实际上是从Map中获得颜色,Dart(在空安全模式下(会警告你,因为这个值可能是null。查看更多


解决方案:

有两种解决方案。一种是通用的,另一种仅针对这种情况。

  1. 使用Bang算子(!(

    Color color = Colors.grey[300]!  // Added '!', error gone 
    
  2. Color上使用shadeXXX

    Color color = Colors.grey.shade300;
    

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

若要拾取材质颜色,可以使用此工具。

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

Color selection = Colors.green[400]!; // Selects a mid-range green.

每个ColorSwatch常量都是一种颜色,可以直接使用。例如:

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

类似于使用shade300Color Color=Colors.gray.shade300;

您可以编写颜色。灰色[300]!像这样,这样会奏效的。

最新更新