我对flatter是个新手,我想呈现一个ListView。但是我犯了一个错误。
我有3个模型课:
主题、主题和内容。
这是模型文件主题。省道
:
import './content.dart';
class Topic {
String name;
List<Content> contents;
Topic(this.name, this.contents);
factory Topic.fromJSON(Map<String, dynamic> json) {
if (json != null) {
return Topic(json['name'], json['contents'].cast<Content>());
} else {
return null;
}
}
}
这是topics_page.dart
文件:
import 'package:flutter/material.dart';
import './../models/subject.dart';
class TopicsPage extends StatefulWidget {
final Subject _subject;
TopicsPage(this._subject);
@override
State<StatefulWidget> createState() {
return _TopicsPageState();
}
}
class _TopicsPageState extends State<TopicsPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget._subject.name),
),
body: Container(
child: ListView.separated(
separatorBuilder: (BuildContext context, int index) => Divider(
color: Colors.grey[200],
thickness: 1.5,
),
itemCount: widget._subject.topics.length,
itemBuilder: (BuildContext context, int index) {
return InkWell(
onTap: () {
Navigator.of(context).pushNamed('/contents',
arguments: widget._subject.topics[index]);
},
child: ListTile(
title: Text(
widget._subject.topics[index].name,
style: TextStyle(
fontSize: 18.0,
fontWeight: FontWeight.w500,
letterSpacing: 0.3),
),
),
);
},
),
));
}
}
问题出现在小部件上_主题主题[索引]。名称
。
错误消息是:type'_InternalLinkedHashMap
现在我需要一些帮助来找出可能的解决方案!
有什么想法吗?
谢谢你!
更新
content.dart
:
class Content {
String title;
String body;
Content(this.title, this.body);
factory Content.fromJSON(Map<String, dynamic> json) {
if (json != null) {
return Content(json['title'], json['body']);
} else {
return null;
}
}
}
主题。省道
import './topic.dart';
class Subject {
String name;
List<Topic> topics;
Subject(this.name, this.topics);
factory Subject.fromJSON(Map<String, dynamic> json) {
if (json != null) {
return Subject(json['name'], json['topics'].cast<Topic>());
} else {
return null;
}
}
}
这是我的其他模型文件。
请告诉我我做错了什么!谢谢
更新2
现在我收到错误消息:
参数类型“Content”无法分配给参数类型“List”
这是您建议的新代码:
import './content.dart';
class Topic {
String id;
String name;
int order;
bool isImportant;
List<Topic> contents;
Topic({this.id, this.name, this.order, this.isImportant, this.contents});
factory Topic.fromJSON(Map<String, dynamic> json) {
if (json != null) {
return Topic(
name: json['name'],
order: json['order'],
isImportant: json['isImportant'],
contents: Content.fromJSON(json['contents'] as Map<String, dynamic>));
} else {
return null;
}
}
}
使用var
而不是Map
class Content {
String title;
String body;
Content(this.title, this.body);
factory Content.fromJSON(var json) {
if (json != null) {
return Content(json['title'], json['body']);
} else {
return null;
}
}
}
如果你的Content
是一个类,你的主题内容应该将json['内容']
映射到你的Content
工厂
在您的内容
factory Content.fromJSON(Map<String, dynamic> json) {
if (json != null) {
return Content(json['content1']);
} else {
return null;
}
}
在您的主题:
factory Topic.fromJSON(Map<String, dynamic> json) {
if (json != null) {
return Topic(json['name'], Content.fromJson(json['content'] as Map<String, dynamic>);
} else {
return null;
}
}
最后,在定义类之后,实际上可以使用JsonSerializer为您生成所有这些。这是医生。希望这有帮助。
当我运行我的代码时,它返回了错误:类型“Future”不是类型转换中“List”类型的子类型。我该如何修复它?它是在我从Firebase获取数据之前匹配引擎运行的?我试图将wait添加到List demoProfiles=getdata()作为wait List;但它返回错误。我真的是新手,这个问题已经困扰了我一整天。请帮帮我
我试图在Dart中反序列化一个非常复杂的JSON,但是我不知道出了什么问题。 当它尝试反序列化时,它向我显示了以下错误:“type'\u InternalLinkedHashMap” 有人知道发生了什么事吗? 这是我的密码:
我试图将一个嵌套的JSON对象发布到API。下面是我正在尝试的简单代码。 我收到错误消息:
我有错误从标题时试图这样做 > 我创建了@JsonSerialiazable()类来处理json 然后,在调用http时。get(),我执行以下操作: map变量如下所示: 当调用$MyResponseFromJson(json)时,当它试图从我的响应中执行(json['a']as List)时,它会给出一个错误。g、 构建运行程序生成的dart文件。 我如何修复错误? 谢啦
我在尝试使用JSON_serializable序列化从internet获取的复杂JSON并使用FutureProvider将它们连接在一起时遇到了这个问题。这是json文件, 这是包含序列化类的代码, 获取json文件并将其转换为dart的未来提供者, 这是基因编码, 这是转换后的json文件显示的代码 当我试着运行这个项目时,我遇到了这个错误 i/flutter(23347): type'Lis
我有这个通用函数: 我这样称呼它: 但是,由于我将使用get_存储框作为我的_数据客户端,改为使用配置单元框,因此出现以下错误: 配置单元必须以不同的格式存储数据,这可能是由于加密造成的,但如何解释这一点并消除此错误?