【问题标题】:Flutter Error: Expected a value of type 'String', but got one of type 'int'颤振错误:需要一个“String”类型的值,但得到一个“int”类型的值
【发布时间】:2021-09-13 13:45:27
【问题描述】:

这是我的 userdata.dart

 class UserData{
 late String name;
 late String age;

 UserData({
   this.name = "",
   this.age = "",
 });

 factory UserData.fromJson(Map<String, dynamic> parsedJson) {
   return new UserData(
     name: parsedJson['Name'],
     age: parsedJson['Age'],
   );
 }

provider.dart:


  Future getPatient(
      String uId, BuildContext context) async {
    uId = '60aa563cb2bd01aaeb5a94ac';
    http.Response user =
        await http.get(Uri.https("link.com", "getUser/$uId"));
    var userJson = jsonDecode(user.body);
    print("Patient data: ${userJson}"); /// code works till here as it prints
    UserData users = new UserData.fromJson(userJson);
    print("Patient Name ${users.name[0]}");
    return patients;
  }
}

用户模型

{_id: {$oid: 60aa563cb2bd01aaeb5a9sdfs}, Email: xyz@gmail.com, Name: pqr, Age: 20, Gender: Male, Phone: 23478917883}

我想检索每个 id(用户的姓名和年龄)的数据。当我尝试检索数据时,我遇到了这个错误。

Error: Expected a value of type 'String', but got one of type 'int'

我是 Flutter 和 Stackoverflow 的新手。能否请您帮我说明问题是什么以及如何解决?

【问题讨论】:

  • 使用年龄作为整数而不是字符串

标签: flutter flutter-web


【解决方案1】:

此错误意味着您正在解析的字段之一是 int,但您正在将其初始化为 String 类型的变量

在您的数据中年龄和电话是int 因此,在您的模型类中进行以下更改

class UserData{
 String? name;
 int? age;     //change this to int from String

 UserData({
  @required this.name,
  @required this.age,
 });

 factory UserData.fromJson(Map<String, dynamic> parsedJson) {
   return new UserData(
     name: parsedJson['Name'],
     age: parsedJson['Age'],
   );
 }
}

【讨论】:

  • 我确实改变了它,但我们不能分配 this.age = "",因为我们为字符串分配,并且由于 null safety 我需要在 this.age 之前添加 required。但是这样做会给我这个错误Error: Expected a value of type 'String', but got one of type 'Null'
  • @InfiniteLearner 我的错,我完全忽略了初始化部分。尝试编辑的代码;它应该工作!
猜你喜欢
  • 2022-01-08
  • 2021-12-27
  • 2021-09-18
  • 2021-03-16
  • 2020-12-03
  • 2021-11-10
  • 2021-11-02
  • 2021-10-23
  • 1970-01-01
相关资源
最近更新 更多