【发布时间】:2021-01-04 09:36:43
【问题描述】:
我有嵌套的 cmets。为了从 JSON 中获取它们,我有以下 fromJson() 函数:
Comment.fromJson(Map<String, dynamic> json)
: id = json['id'],
...
children = json['children'] != null
? json['children'].map((c) => Comment.fromJson(c)).toList()
: null,
...
这会检查当前评论是否有任何子 cmets,如果有,则递归地将它们从 JSON 解析为评论。但是,当我运行它时,出现以下错误:
[ERROR:flutter/shell/common/shell.cc(214)]
Dart Unhandled Exception:
type 'List<dynamic>' is not a subtype of type 'List<Comment>'
stack trace: #0 new Comment.fromJson (package:app/models/comment.dart:43:18)
这指向我为子级分配children = json... 的行。我是 dart 的新手,但我不明白如何映射列表,并且返回 Comment 不会让 Dart 推断列表的类型。我该如何解决?在toList() 之后添加as List<Comment> 不起作用。如果我在Comment.fromJson(c) 之后添加as Comment,我会得到unnecessary cast。
【问题讨论】:
-
您是从
Comment.fromJson()内部呼叫Comment.fromJson()吗?是递归调用吗? -
@Sisir 正确,这个
Comment.fromJson()在我的class Comment{}里面 -
没关系。但是您是从同一方法内部调用该方法吗?或者是拼写错误。
-
@Sisir 是的,来自同一个方法。它是递归的。
标签: dart