跳到主要内容

avoid_type_to_string

稳定

避免在生产代码中使用 .toString(),因为结果可能会被精简。

详情

#

应该避免在生产代码中调用.toString(),因为它在合约上不返回 Type(或底层类)的用户定义名称。代码大小不是问题的开发模式编译器使用全名,但发布模式编译器通常选择精简这些符号。

错误示例

dart
void bar(Object other) {
  if (other.runtimeType.toString() == 'Bar') {
    doThing();
  }
}

Object baz(Thing myThing) {
  return getThingFromDatabase(key: myThing.runtimeType.toString());
}

正确示例

dart
void bar(Object other) {
  if (other is Bar) {
    doThing();
  }
}

class Thing {
  String get thingTypeKey => ...
}

Object baz(Thing myThing) {
  return getThingFromDatabase(key: myThing.thingTypeKey);
}

启用

#

要启用 avoid_type_to_string 规则,请在您的 analysis_options.yaml 文件中的 linter > rules 下添加 avoid_type_to_string

analysis_options.yaml
yaml
linter:
  rules:
    - avoid_type_to_string

如果您改为使用 YAML 映射语法来配置 linter 规则,请在 linter > rules 下添加 avoid_type_to_string: true

analysis_options.yaml
yaml
linter:
  rules:
    avoid_type_to_string: true