Flutter:使用泛型进行 http 响应
Posted
技术标签:
【中文标题】Flutter:使用泛型进行 http 响应【英文标题】:Flutter : Use generics for http response 【发布时间】:2019-09-30 09:39:27 【问题描述】:我是 Flutter 的新手。 我从 Kotlin 的 android 开发迁移到 Flutter。 我想得到 Http Url 的回复。 服务器的所有响应都是一种格式,并且 2 个变量的类型是通用的。 我是在 Kotlin 中通过这 2 个类完成的。
class BaseResponse<T>
@SerializedName("IsSuccess")
var isSuccess: Boolean = false
@SerializedName("Item")
var item: T? = null
@SerializedName("ListItems")
var listItems: List<T>? = null
@SerializedName("ErrorCode")
var errorCode: Int? = null
其他类和响应是这样的:
data class TablesModel(var id: Long, var tableType: String, var tableCost: Int, var banner: String?, var onLineCount: Int)
我的回答是这样的:
BaseResponse<TablesModel>
现在我想在 Flutter 中做这件事。请帮帮我。
【问题讨论】:
【参考方案1】:对于 Dart 中的通用 json 模型,使用 ValueObjects/Mojos 是很常见的。 您可以使用 json_serializer 和构建器自己准备模型类。或者类似的工具 https://app.quicktype.io/ 将从您的 json 响应中生成模型。
关于泛型,正确的方法是拥有一个抽象模型类并在子类中实现不同的响应类型,或者您可以利用类型系统传递参数,以便编译器知道如何处理这些属性。
最简单的方法是使用类型 dynamic 或 Object,如 jsonDecode dot,但您会丢失编译时错误的类型检查和 IDE 的自动完成提示。
【讨论】:
以上是关于Flutter:使用泛型进行 http 响应的主要内容,如果未能解决你的问题,请参考以下文章