首页 > 解决方案 > flutter lint 参数类型规则用法

问题描述

我如何控制我想应用于我的代码的女巫规则。我添加了 lint 包,但参数类型规则发生了很多。

我有很多来自 API 调用的动态数据,我尝试禁用主题,但没有奏效。我可以决定要应用哪些规则吗?有一些规则可以像 const 规则一样使代码更高效,将 lint 添加到活动项目可能会让人头疼,所以我认为是否值得?

我尝试禁用的当前规则:

argument_type_not_assignable: false

invalid_assignment: false

Article.fromMap throw 参数类型'dynamic'不能分配给参数类型'String'.dartargument_type_not_assignable

class Article {
  String id;
  String image;
  String title;
  Map contentEditor;
  List<Map<String, dynamic>> teams;
  List<Map<String, dynamic>> leagues;
  String content;
  String updateDate;

  Article({
    this.id,
    this.image,
    this.title,
    this.contentEditor,
    this.teams,
    this.leagues,
    this.content,
    this.updateDate,
  });

  String getDateString() {
    DateFormat formatter = DateFormat("MM/dd/yyyy");
    return formatter.format(DateTime.parse(this.updateDate));
  }

  String getTimeString() {
    final dateTime = DateTime.parse(this.updateDate).toLocal();
    return DateFormat.Hm().format(dateTime);
  }

  Map<String, dynamic> toMap() {
    return {
      'id': id,
      'image': image,
      'title': title,
      'contentEditorId': contentEditor,
      'teams': teams,
      'leagues': leagues,
      'content': content,
      'updateDate': updateDate
    };
  }

  factory Article.fromMap(Map<String, dynamic> map) {
    if (map == null) return null;

    return Article(
      id: map['id'],
      image: map['image'],
      title: map['title'],
      contentEditor: map['contentEditor'],
      teams: List<Map<String, dynamic>>.from(map['teams']?.map((x) => x)),
      leagues: List<Map<String, dynamic>>.from(map['leagues']?.map((x) => x)),
      content: map['content'],
      updateDate: map['updateDate'],
    );
  }

  String toJson() => json.encode(toMap());

  factory Article.fromJson(Map json) => Article.fromMap(json);
}

我更喜欢这种方法

  dynamic getPoints(dynamic property) {
    if (property == null) {
      return 0;
    }
    return property.won * 3 + property.draw;
  }

比这个:

 int getPoints(Map<String, int> property) {
    if (property == null) {
      return 0;
    }
    return property["won"] * 3 + property["draw"];
  }

标签: flutterdart

解决方案


argument_type_not_assignable并且invalid_assignment错误,而不是 lints。

你可以通过修改你的analysis_options.yaml文件来让 Dart 分析器忽略它们:

analyzer:
  errors:
    argument_type_not_assignable: ignore
    invalid_assignment: ignore

但是,禁用这些规则没有任何意义。即使分析器不再抱怨违规,违规仍然是非法的,最终会产生编译错误。你希望int x = 'string';做什么?


推荐阅读