Api 未处理的异常:类型'_内部链接dhashmap<;字符串,动态>';不是类型为';列表<;动态>';内铸
我尝试呈现从服务器请求的结果,其格式为json数据 这是作为json返回的APIApi 未处理的异常:类型'_内部链接dhashmap<;字符串,动态>';不是类型为';列表<;动态>';内铸,api,flutter,Api,Flutter,我尝试呈现从服务器请求的结果,其格式为json数据 这是作为json返回的API { id:1, 姓名:Nhel Theavuth, 电邮:info@theavuth.me, 用户名:theavuth, 阿凡达:空, 电话号码:空, 代币: } 用户型号: 导入“包:flift/foundation.dart”; 使用ChangeNotifier类用户{ int-id; 字符串全名; 字符串电话号码; 字符串电子邮件; 字符串用户名; 字符串化身; 字符串标记; 使用者({ 这个身份证, 这个
{
id:1,
姓名:Nhel Theavuth,
电邮:info@theavuth.me,
用户名:theavuth,
阿凡达:空,
电话号码:空,
代币:
}
用户型号:
导入“包:flift/foundation.dart”;
使用ChangeNotifier类用户{
int-id;
字符串全名;
字符串电话号码;
字符串电子邮件;
字符串用户名;
字符串化身;
字符串标记;
使用者({
这个身份证,
这个,全名,
这个电话号码,
这是一封电子邮件,
这个.username,
这个,阿凡达,
这是代币
});
factory User.fromJson(动态json){
返回用户(
id:json['id'],
全名:json['name'],
phoneNumber:json['phone_number'],
电子邮件:json['email'],
用户名:json['username'],
化身:json['avatar'],
令牌:json['token']
);
}
映射到JSON()=>{
“id”:id,
“名称”:全名,
“电话号码”:电话号码,
“电子邮件”:电子邮件,
“用户名”:用户名,
“阿凡达”:阿凡达,
“令牌”:令牌
};
}
此代码用于从服务器调用dataJson。
void getProfileData()异步{
SharedReferences prefs=等待SharedReferences.getInstance();
String _token=prefs.getString('token');
Map responseData=await_userProvider.userProfile({'token':_token});
打印(应答数据['data']);
List profileData=(responseData['data'].toList()).map((parsedJson)=>User.fromJson(parsedJson)).toList();
设置状态(){
this.userProfile=profileData;
});
}
将上面的json呈现给用户模型后,将显示此错误消息。
[错误:flatter/lib/ui/ui\u dart\u state.cc(157)]未处理的异常:类型“\u InternalLinkedHashMap”不是类型转换中类型“List”的子类型
有人能帮忙吗?
提前感谢我需要了解更多有关正在发生的事情的信息,请参阅代码。但似乎您需要调用
.toList()
,以便从JSON结果中获取列表,因为Dart将JSON作为映射进行管理。我需要了解更多有关正在发生的事情的信息,请参阅代码。但似乎您需要调用.toList()
,以便从JSON结果中获取列表,因为Dart将JSON作为映射进行管理。您可以复制粘贴并运行下面的完整代码假设您的json字符串是
String jsonString = '''
{
"id": 1,
"name": "Nhel Theavuth",
"email": "info@theavuth.me",
"username": "theavuth",
"avatar": null,
"phone_number": null,
"token": ""
}
''';
步骤1:修改您的用户。从JSON
,您可以看到完整代码中的用户定义
factory User.fromJson(Map<String, dynamic> json) => User(
id: json["id"],
name: json["name"],
email: json["email"],
username: json["username"],
avatar: json["avatar"],
phoneNumber: json["phone_number"],
token: json["token"],
);
输出
I/flutter (12738): Nhel Theavuth
完整代码
import 'package:flutter/material.dart';
import 'dart:convert';
User userFromJson(String str) => User.fromJson(json.decode(str));
String userToJson(User data) => json.encode(data.toJson());
class User {
int id;
String name;
String email;
String username;
dynamic avatar;
dynamic phoneNumber;
String token;
User({
this.id,
this.name,
this.email,
this.username,
this.avatar,
this.phoneNumber,
this.token,
});
factory User.fromJson(Map<String, dynamic> json) => User(
id: json["id"],
name: json["name"],
email: json["email"],
username: json["username"],
avatar: json["avatar"],
phoneNumber: json["phone_number"],
token: json["token"],
);
Map<String, dynamic> toJson() => {
"id": id,
"name": name,
"email": email,
"username": username,
"avatar": avatar,
"phone_number": phoneNumber,
"token": token,
};
}
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
String jsonString = '''
{
"id": 1,
"name": "Nhel Theavuth",
"email": "info@theavuth.me",
"username": "theavuth",
"avatar": null,
"phone_number": null,
"token": ""
}
''';
User user = userFromJson(jsonString);
print(user.name);
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
导入“包装:颤振/材料.省道”;
导入“dart:convert”;
User userFromJson(String str)=>User.fromJson(json.decode(str));
字符串userToJson(用户数据)=>json.encode(data.toJson());
类用户{
int-id;
字符串名;
字符串电子邮件;
字符串用户名;
动态化身;
动态电话号码;
字符串标记;
使用者({
这个身份证,
这个名字,
这是一封电子邮件,
这个.username,
这个,阿凡达,
这个电话号码,
这个,令牌,,
});
工厂用户.fromJson(映射json)=>User(
id:json[“id”],
名称:json[“名称”],
电子邮件:json[“电子邮件”],
用户名:json[“用户名”],
化身:json[“化身”],
phoneNumber:json[“电话号码”],
令牌:json[“令牌”],
);
映射到JSON()=>{
“id”:id,
“姓名”:姓名,
“电子邮件”:电子邮件,
“用户名”:用户名,
“阿凡达”:阿凡达,
“电话号码”:电话号码,
“代币”:代币,
};
}
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:“颤振演示”,
主题:主题资料(
主样本:颜色。蓝色,
视觉密度:视觉密度。自适应平台密度,
),
主页:MyHomePage(标题:“颤振演示主页”),
);
}
}
类MyHomePage扩展StatefulWidget{
MyHomePage({Key,this.title}):超级(Key:Key);
最后的字符串标题;
@凌驾
_MyHomePageState createState()=>\u MyHomePageState();
}
类_MyHomePageState扩展状态{
int _计数器=0;
void _incrementCounter(){
字符串jsonString='''
{
“id”:1,
“名称”:“Nhel Theavuth”,
“电子邮件”:info@theavuth.me",
“用户名”:“theavuth”,
“化身”:空,
“电话号码”:空,
“令牌”:”
}
''';
User=userFromJson(jsonString);
打印(用户名);
设置状态((){
_计数器++;
});
}
@凌驾
小部件生成(BuildContext上下文){
返回脚手架(
appBar:appBar(
标题:文本(widget.title),
),
正文:中心(
子栏(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
正文(
“您已经按了这么多次按钮:”,
),
正文(
“$”计数器“,
风格:Theme.of(context).textTheme.headline4,
),
],
),
),
浮动操作按钮:浮动操作按钮(
按下时:\ u递增计数器,
工具提示:“增量”,
子:图标(Icons.add),
),
);
}
}
您可以复制粘贴运行下面的完整代码
假设您的json字符串是
String jsonString = '''
{
"id": 1,
"name": "Nhel Theavuth",
"email": "info@theavuth.me",
"username": "theavuth",
"avatar": null,
"phone_number": null,
"token": ""
}
''';
步骤1:修改您的用户。从JSON
,您可以看到完整代码中的用户定义
factory User.fromJson(Map<String, dynamic> json) => User(
id: json["id"],
name: json["name"],
email: json["email"],
username: json["username"],
avatar: json["avatar"],
phoneNumber: json["phone_number"],
token: json["token"],
);
输出
I/flutter (12738): Nhel Theavuth
完整代码
import 'package:flutter/material.dart';
import 'dart:convert';
User userFromJson(String str) => User.fromJson(json.decode(str));
String userToJson(User data) => json.encode(data.toJson());
class User {
int id;
String name;
String email;
String username;
dynamic avatar;
dynamic phoneNumber;
String token;
User({
this.id,
this.name,
this.email,
this.username,
this.avatar,
this.phoneNumber,
this.token,
});
factory User.fromJson(Map<String, dynamic> json) => User(
id: json["id"],
name: json["name"],
email: json["email"],
username: json["username"],
avatar: json["avatar"],
phoneNumber: json["phone_number"],
token: json["token"],
);
Map<String, dynamic> toJson() => {
"id": id,
"name": name,
"email": email,
"username": username,
"avatar": avatar,
"phone_number": phoneNumber,
"token": token,
};
}
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
String jsonString = '''
{
"id": 1,
"name": "Nhel Theavuth",
"email": "info@theavuth.me",
"username": "theavuth",
"avatar": null,
"phone_number": null,
"token": ""
}
''';
User user = userFromJson(jsonString);
print(user.name);
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
导入“包装:颤振/材料.省道”;
导入“dart:convert”;
User userFromJson(String str)=>User.fromJson(json.decode(str));
字符串userToJson(用户数据)=>json.encode(data.toJson());
类用户{
int-id;
字符串名;
字符串电子邮件;
字符串用户名;
动态化身;
动态电话号码;
字符串标记;
使用者({
T