如何解决Flutter:DateTime 作为改造方法中的参数;日期时间 ISO 8061 序列化;改造日期 iso8061 格式
我想定义一个方法如下:
@GET("/users")
@Headers(<String,dynamic>{"Accept": "application/json","Authorization": "Basic " + authKey})
Future<List<User>> getUsers(@Query("fromDate") DateTime from,@Query("toDate") DateTime to);
这样 DateTime
参数被序列化为 ISO8061 格式,输出查询如下所示:
[获取] https://address.com/users?fromDate=2021-02-21T12:00:00.000Z&toDate=2021-02-27T12:00:00.000Z
我已经在使用 Flutter retrofit 库(内部使用 Flutter dio)。
我该怎么做?
解决方法
只需使用如下扩展方法即可。 Flutter 内置了 8061 DateTime 序列化!
extension Iso8061SerializableDateTime on DateTime {
String toJson() => this.toIso8601String();
}
洞察力:
Retrofit 在 *.g.dart 文件中生成如下方法:
@override
Future<List<User>> getUsers(from,to) async {
final queryParameters = <String,dynamic>{
r'fromDate': from?.toJson(),r'toDate': to?.toJson()
};
final _data = <String,dynamic>{};
final _result = await _dio.request<List<dynamic>>('/orders',queryParameters: queryParameters,options: RequestOptions( ... )
)
需要 .toJson()
方法,我们正在使用扩展方法证明该方法。仅此而已。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。