Api 未处理的异常:类型'_内部链接dhashmap<;字符串,动态>';不是类型为';列表<;动态>';内铸

Api 未处理的异常:类型'_内部链接dhashmap<;字符串,动态>';不是类型为';列表<;动态>';内铸,api,flutter,Api,Flutter,我尝试呈现从服务器请求的结果,其格式为json数据 这是作为json返回的API { id:1, 姓名:Nhel Theavuth, 电邮:info@theavuth.me, 用户名:theavuth, 阿凡达:空, 电话号码:空, 代币: } 用户型号: 导入“包:flift/foundation.dart”; 使用ChangeNotifier类用户{ int-id; 字符串全名; 字符串电话号码; 字符串电子邮件; 字符串用户名; 字符串化身; 字符串标记; 使用者({ 这个身份证, 这个

我尝试呈现从服务器请求的结果,其格式为json数据

这是作为json返回的API

{
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