首页 > 解决方案 > 参数类型“字符串?” 不能分配给参数类型“字符串”

问题描述

当我将颤振升级到 2.0.1 时,显示此错误:

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

这是我的代码:

  enum SubStatus {
  SUB,
  UNSUB,
}

extension ResponseStatusExtension on SubStatus{
  static const statusCodes = {
    SubStatus.SUB: "sub",
    SubStatus.UNSUB: "unsub",
  };

  String? get statusCode => statusCodes[this];
}

这是如何使用它:

字符串 url = "/post/sub/source/" + subStatus.statusCode + "/" + channelId;

这是错误用户界面:

在此处输入图像描述

我应该怎么做才能解决它?我试图返回String,但在枚举代码中告诉我应该返回String?

在此处输入图像描述

我应该怎么办?

标签: flutter

解决方案


更改 to 的返回类型statusCodeString提供默认值。

String get statusCode => statusCodes[this] ?? '';

null访问地图时,如果地图中不存在该键,则有可能获得返回值。只需提供默认值即可编译此代码。除非您在枚举中添加一些内容而不向地图添加值,否则不应使用该默认值。


推荐阅读