繁体   English   中英

如何在 Dart 中正确声明 class 的 List 类型属性?

[英]How to declare a List type property for a class correctly in Dart?

我是 Flutter 的新手,并试图声明一个文件夹 class,其中一个属性是子文件夹列表。 我无法得出正确的声明,语言给了我各种错误。 有人可以帮我解决这个问题吗?

class Folder {
  final int id;
  final String title;
  final List<Folder> children;

  Folder ({
    this.id = 0,
    this.title = '',
    this.children
  });

  factory Folder.fromJson(Map<String, dynamic> parsedJson) {
    Iterable i = parsedJson['children'];

    return new Folder(
        id: parsedJson['id'] ?? '',
        title: parsedJson['title'] ?? '',
        children: List<Folder>.from(i.map((model) => Folder.fromJson(model)))
    );
  }
}

这为children属性提供了以下错误:参数“children”由于其类型而不能具有“null”值,但隐式默认值为“null”。

有时文件夹没有子文件夹,所以我不想创建一个@required 参数,只是一个可选参数。

我猜您使用的是最新版本的 Dart 并启用了零安全功能?
如果是这种情况,请以这种方式声明您的children var

List<Folder>? children;

应该做的伎俩。

另一种解决方案是更新您的构造函数

  Folder ({
    this.id = 0,
    this.title = '',
    this.children = []
  });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM