首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flutter Dio return对象

Flutter Dio return对象
EN

Stack Overflow用户
提问于 2020-11-18 13:29:02
回答 1查看 535关注 0票数 1

我对Flutter是个新手,来自.NET的世界。

在.NET中,我有类似httpclient.GetFromJsonAsync<User>的东西来执行GET并将其反序列化为User对象。在Flutter中,我使用的是Dio,我看到他们有类似的查看方法,get<T>。然而,即使我使用get<List<User>>get<User>,它总是抛出运行时错误,尽管代码被成功编译,但它无法将List<dynamic>转换为List<User>或将Map转换为User

代码语言:javascript
复制
final List<User> response = await Dio().get<List<User>>('urlThatReturnListOfUser');

有没有更好的方法或包来反序列化动态/映射到对象?

到目前为止,我找到的最好的方法是使用Json_Serializable,但即使这样,我仍然需要编写如下内容

代码语言:javascript
复制
final List<User> weathers = (response.data as List)
          .map((e) => User.fromJson(e as Map<String, dynamic>))
          .toList();

每次我调用API时。或者这是我目前最好的选择?还是我用错了Dio?

EN

回答 1

Stack Overflow用户

发布于 2020-11-19 15:37:06

这样的库需要使用运行时反射,这在Flutter中是禁用的。运行时反射会干扰树摇动,Dart已经支持了很长一段时间。使用树抖动,您可以从您的发布构建中“摆脱”未使用的代码。这大大优化了应用程序的大小。因为反射使得默认情况下所有代码都被隐式使用,所以它使得摇动树变得困难。这些工具无法知道哪些部分在运行时未使用,因此很难去除冗余代码。在使用反射时,应用程序的大小不容易优化。尽管您不能将运行时反射与Flutter一起使用,但一些库提供了类似的易于使用的API,但它们基于代码生成。此方法在代码生成库一节中有更详细的介绍。

https://flutter.dev/docs/development/data-and-backend/json

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64887593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档