Flutter 将对象转换为可编码对象失败:';日期时间';

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

我使用的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.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”),
)
],
),
);
}
}
}
我怎样才能解决这个问题? 我必须将日期时间更改为字符串,然后重试?
或者有一种对字符串进行编码的解决方案?

您能举一个小例子说明您的问题吗?