Flutter 将对象转换为可编码对象失败:';日期时间';
我使用的API要求注册用户的日期,我收到此Dio例外: 将对象转换为可编码对象失败:“DateTime”的实例 这就是模型Flutter 将对象转换为可编码对象失败:';日期时间';,flutter,dart,Flutter,Dart,我使用的API要求注册用户的日期,我收到此Dio例外: 将对象转换为可编码对象失败:“DateTime”的实例 这就是模型 import 'package:meta/meta.dart' show required; // import 'package:intl/intl.dart'; class Customer { Customer({ @required this.name, @required this.surname, @required this.ph
import 'package:meta/meta.dart' show required;
// import 'package:intl/intl.dart';
class Customer {
Customer({
@required this.name,
@required this.surname,
@required this.phone,
@required this.mail,
@required this.password,
@required this.acceptMarketing,
this.image,
@required this.genre,
this.rfc,
@required this.registeredAt,
});
final String name;
final String surname;
final List<String> phone;
final String mail;
final String password;
final bool acceptMarketing;
final Image image;
final String genre;
final String rfc;
final DateTime registeredAt;
factory Customer.fromJson(Map<String, dynamic> json) => Customer(
name: json["Name"],
surname: json["Surname"],
phone: List<String>.from(json["Phone"].map((x) => x)),
mail: json["Mail"],
password: json["Password"],
acceptMarketing: json["AcceptMarketing"],
image: Image.fromJson(json["Image"]),
genre: json["Genre"],
rfc: json["RFC"],
registeredAt: DateTime.parse(json["registered_at"]),
);
Map<String, dynamic> toJson() => {
"Name": name,
"Surname": surname,
"Phone": List<dynamic>.from(phone.map((x) => x)),
"Mail": mail,
"Password": password,
"AcceptMarketing": acceptMarketing,
"Image": image.toJson(),
"Genre": genre,
"RFC": rfc,
"registered_at": registeredAt.toIso8601String(),
};
}
import'package:meta/meta.dart'需要显示;
//导入“包:intl/intl.dart”;
类客户{
顾客({
@需要此名称,
@需要这个姓,
@需要这个电话,
@需要此电子邮件,
@需要此密码,
@需要这个。市场营销,
这个,这个形象,,
@需要这个类型,
这个.rfc,
@需要这个。注册数据,
});
最后的字符串名;
最后一串姓氏;
最终名单电话;
最终字符串邮件;
最终字符串密码;
最终目标市场营销;
最终图像;
最后的弦乐体裁;
最终字符串rfc;
最终日期时间注册数据;
factory Customer.fromJson(映射json)=>Customer(
名称:json[“名称”],
姓氏:json[“姓氏”],
phone:List.from(json[“phone”].map((x)=>x)),
邮件:json[“邮件”],
密码:json[“密码”],
acceptMarketing:json[“acceptMarketing”],
image:image.fromJson(json[“image”]),
流派:json[“流派”],
rfc:json[“rfc”],
registeredAt:DateTime.parse(json[“registered_at”]),
);
映射到JSON()=>{
“姓名”:姓名,
“姓”:姓,
“Phone”:List.from(Phone.map((x)=>x)),
“邮件”:邮件,
“密码”:密码,
“接受营销”:接受营销,
“Image”:Image.toJson(),
“体裁”:体裁,
“RFC”:RFC,
“registered_at”:registeredAt.toiso8601字符串(),
};
}
这是控制器
import 'package:abremexapp/app/data/models/customer.dart';
import 'package:abremexapp/app/data/repositories/register_repo.dart';
import 'package:abremexapp/app/routes/app_routes.dart';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'locale_widgets/terms_page.dart';
class RegisterController extends GetxController {
final RegisterRepo _registerRepo = Get.find<RegisterRepo>();
RxString selected = 'hombre'.obs;
RxBool marketing = true.obs;
String _name = "", _surname = "", _mail = "", _password = "";
List _phone = [];
DateTime _registeredAt = DateTime.now().toUtc();
@override
void onReady() {
super.onReady();
print(_registeredAt);
}
void onNameChanged(String text) {
_name = text;
}
void onSurnameChanged(String text) {
_surname = text;
}
void onPhoneChanged(String text) {
_phone = [text];
}
void onMailChanged(String text) {
_mail = text;
}
void onPasswordChanged(String text) {
_password = text;
}
void setValue(newValue) {
selected.value = newValue;
print(selected.value);
update(['genre']);
}
void setMarketing(state) {
marketing.value = state;
print(marketing.value);
update(['marketing']);
}
void navTC() {
Get.to(() => TermsPage());
}
Future<void> submit() async {
try {
final Customer customer = await _registerRepo.newRegister(
name: _name,
surname: _surname,
phone: _phone,
mail: _mail,
password: _password,
acceptMarketing: marketing.value,
genre: selected.value,
registeredAt: _registeredAt,
);
print('User created ${customer.registeredAt}');
Get.toNamed(AppRoutes.LOGIN);
} catch (e) {
print(e);
String message = "";
if (e is DioError) {
if (e.response != null) {
message = e.response.statusMessage;
} else {
message = e.message;
}
}
Get.dialog(
AlertDialog(
title: Text('Error'),
content: Text(message),
actions: [
TextButton(
onPressed: () {
Get.back();
},
child: Text("ok"),
)
],
),
);
}
}
}
import'包:abremexapp/app/data/models/customer.dart';
导入“包:abremexapp/app/data/repositories/register_repo.dart”;
导入“包:abremexapp/app/routes/app_routes.dart”;
进口“包装:dio/dio.dart”;
进口“包装:颤振/材料.省道”;
导入“package:get/get.dart”;
导入“locale_widgets/terms_page.dart”;
类RegisterController扩展GetxController{
final RegisterRepo_RegisterRepo=Get.find();
RxString selected='hombre'.obs;
RxBool marketing=true.obs;
字符串“\u name=”、\u姓氏=”、\u邮件=”、\u密码=”;
列表_phone=[];
DateTime _registeredAt=DateTime.now().toUtc();
@凌驾
void onReady(){
super.onReady();
打印(注册数据);
}
无效onNameChanged(字符串文本){
_名称=文本;
}
void onSurnameChanged(字符串文本){
_姓氏=文本;
}
void onPhoneChanged(字符串文本){
_电话=[文本];
}
更改邮件时无效(字符串文本){
_邮件=文本;
}
void onPasswordChanged(字符串文本){
_密码=文本;
}
无效设置值(新值){
selected.value=newValue;
打印(选中。值);
更新(['genre']);
}
市场营销部(州){
市场价值=状态;
印刷(营销、价值);
更新(['marketing']);
}
void navTC(){
Get.to(()=>TermsPage());
}
Future submit()异步{
试一试{
最终客户=等待_registerRepo.newRegister(
姓名:_name,
姓:(姓),
电话:_电话,
邮件:_mail,
密码:_密码,
接受营销:营销。价值,
类型:selected.value,
注册数据:_registeredAt,
);
打印('User created${customer.registeredAt}');
Get.toNamed(AppRoutes.LOGIN);
}捕获(e){
印刷品(e);
字符串消息=”;
如果(e是错误的){
如果(如响应!=null){
message=e.response.statusMessage;
}否则{
message=e.message;
}
}
获取对话框(
警报对话框(
标题:文本(“错误”),
内容:文本(信息),
行动:[
文本按钮(
已按下:(){
返回();
},
孩子:文本(“ok”),
)
],
),
);
}
}
}
我怎样才能解决这个问题?
我必须将日期时间更改为字符串,然后重试?
或者有一种对字符串进行编码的解决方案?您能举一个小例子说明您的问题吗?