Flutter 颤振Dio返回物体

Flutter 颤振Dio返回物体,flutter,dart,json-deserialization,dio,Flutter,Dart,Json Deserialization,Dio,我是个新手,来自.NET世界 在.NET中,我有类似于httpclient.GetFromJsonAsync的东西来执行GET并将其反序列化到User对象。 在flatter中,我使用了Dio,发现它们有相似的外观方法,get。但是,即使我使用get或get,它也总是抛出运行时错误,即无法将List转换为List或Map转换为用户,尽管代码已成功编译 final List<User> response = await Dio().get<List<User>>

我是个新手,来自.NET世界

在.NET中,我有类似于
httpclient.GetFromJsonAsync
的东西来执行GET并将其反序列化到
User
对象。 在flatter中,我使用了Dio,发现它们有相似的外观方法,
get
。但是,即使我使用
get
get
,它也总是抛出运行时错误,即无法将
List
转换为
List
Map
转换为
用户
,尽管代码已成功编译

final List<User> response = await Dio().get<List<User>>('urlThatReturnListOfUser');
final List response=wait Dio().get('urlthareturnlistofuser');
是否有更好的方法或包来反序列化动态/映射到对象

到目前为止,我发现最好的方法是使用Json_Serializable,但即使如此,我仍然需要编写类似的东西

final List<User> weathers = (response.data as List)
          .map((e) => User.fromJson(e as Map<String, dynamic>))
          .toList();
final List weathers=(response.data作为列表)
.map((e)=>User.fromJson(e作为map))
.toList();
每次我调用API时。或者这是我目前最好的选择?还是我用Dio错了

这样的库需要使用运行时反射,这在颤振中是禁用的。运行时反射会干扰树抖动,Dart已经支持了相当长的时间。通过树抖动,您可以从发布版本中“抖动”未使用的代码。这大大优化了应用程序的大小

由于反射使得默认情况下所有代码都隐式使用,因此很难进行树抖动。这些工具无法知道运行时哪些部分未使用,因此很难去除冗余代码。使用反射时,无法轻松优化应用程序大小

尽管不能将运行时反射与Flutter一起使用,但有些库提供了类似的易于使用的API,但它们基于代码生成。代码生成库一节将更详细地介绍这种方法

不幸的是,您目前正在使用最准确的反序列化方法

这样的库需要使用运行时反射,这在颤振中是禁用的。运行时反射会干扰树抖动,Dart已经支持了相当长的时间。通过树抖动,您可以从发布版本中“抖动”未使用的代码。这大大优化了应用程序的大小

由于反射使得默认情况下所有代码都隐式使用,因此很难进行树抖动。这些工具无法知道运行时哪些部分未使用,因此很难去除冗余代码。使用反射时,无法轻松优化应用程序大小

尽管不能将运行时反射与Flutter一起使用,但有些库提供了类似的易于使用的API,但它们基于代码生成。代码生成库一节将更详细地介绍这种方法

不幸的是,您目前正在使用最准确的反序列化方法