Flutter null 安全 - 参数类型“颜色?”不能分配给参数类型“颜色”

时间:2021-03-19 10:11:49

标签: flutter dart-null-safety

我将 flutter 的 SDK 版本更改为 min ,以便我可以修复我的代码以确保空值安全。

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

mongos

但是如果我将 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] 的任何值,它将起作用, 所以 [] 工作得很好。

为了继续使用 Colors.grey,我应该在这里更改什么?

2 个答案:

答案 0 :(得分:9)

问题:

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

当您使用 Colors.grey[300] 时,您实际上是从 Map 获取颜色,Dart(在空安全模式下)警告您,因为该值可能是 nullSee more


解决方案:

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

  1. 使用 Bang 运算符 (!)

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

    Color color = Colors.grey.shade300;
    

答案 1 :(得分:3)

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

要选择材料颜色,您可以使用此 tool

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

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

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

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