颤振错误:需要一个“String”类型的值,但得到一个“int”类型的值

Posted

技术标签:

【中文标题】颤振错误:需要一个“String”类型的值,但得到一个“int”类型的值【英文标题】:Flutter Error: Expected a value of type 'String', but got one of type '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 和 *** 的新手。能否请您帮我说明问题是什么以及如何解决?

【问题讨论】:

使用年龄作为整数而不是字符串 【参考方案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 我的错,我完全忽略了初始化部分。尝试编辑的代码;它应该工作!

以上是关于颤振错误:需要一个“String”类型的值,但得到一个“int”类型的值的主要内容,如果未能解决你的问题,请参考以下文章

需要一个“String”类型的值,但得到一个“Null”类型的值

如何使用 StreamBuilder 消除颤振数据表错误“预期类型为 'List<DataRow>',但得到类型为 'List<dynamic>”的值之一?

错误:需要一个“String”类型的值,但在新的 note.Note.fromJson 中得到一个“Null”类型的值

需要一个 'String' 类型的值,但得到一个 'Null' 类型的值。这是一个电子商务应用程序

我无法在颤振 Firestore 上将字段设置为 NULL

Flutter 'showDatePicker' 抛出异常:错误:预期值为 'String' 类型,但得到类型为 'Null' 的值之一