首页 > 解决方案 > 如何正确分配对象颤动

问题描述

你好,我正在做颤振项目。

我有一堂课:

class Data {
  RevisionInProgress revisionInProgress;

  Data({this.revisionInProgress});

  Data.fromJson(Map<String, dynamic> json) {
    revisionInProgress = json['revision in progress'] != null
        ? new RevisionInProgress.fromJson(json['revision in progress'])
        : null;
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    if (this.revisionInProgress != null) {
      data['revision in progress'] = this.revisionInProgress.toJson();
    }
    return data;
  }
}

class Datum {
  int id;
  int boxId;
  int userId;
  String revisionType;
  String revisionDate;
  String revisionLocation;
  String revisionTitle;
  int kilometragePourVidange;
  int repeatRevision;
  int revisionStatus;
  String kilometrageLastVidange;
  int kilometrageRevision;
  String createdAt;
  String updatedAt;

  Datum(
      {this.id,
      this.boxId,
      this.userId,
      this.revisionType,
      this.revisionDate,
      this.revisionLocation,
      this.revisionTitle,
      this.kilometragePourVidange,
      this.repeatRevision,
      this.revisionStatus,
      this.kilometrageLastVidange,
      this.kilometrageRevision,
      this.createdAt,
      this.updatedAt});

  Datum.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    boxId = json['box_id'];
    userId = json['user_id'];
    revisionType = json['revision_type'];
    revisionDate = json['revision_date'];
    revisionLocation = json['revision_location'];
    revisionTitle = json['revision_title'];
    kilometragePourVidange = json['kilometrage_pour_vidange'];
    repeatRevision = json['repeat_revision'];
    revisionStatus = json['revision_status'];
    kilometrageLastVidange = json['kilometrage_last_vidange'];
    kilometrageRevision = json['Kilometrage_revision'];
    createdAt = json['created_at'];
    updatedAt = json['updated_at'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['id'] = this.id;
    data['box_id'] = this.boxId;
    data['user_id'] = this.userId;
    data['revision_type'] = this.revisionType;
    data['revision_date'] = this.revisionDate;
    data['revision_location'] = this.revisionLocation;
    data['revision_title'] = this.revisionTitle;
    data['kilometrage_pour_vidange'] = this.kilometragePourVidange;
    data['repeat_revision'] = this.repeatRevision;
    data['revision_status'] = this.revisionStatus;
    data['kilometrage_last_vidange'] = this.kilometrageLastVidange;
    data['Kilometrage_revision'] = this.kilometrageRevision;
    data['created_at'] = this.createdAt;
    data['updated_at'] = this.updatedAt;
    return data;
  }
}

赋值后:

      Datum datum = Datum();


void setRevision() async {

    print(_EmplacementController.text);
    print(_DateController.text);
    print(status.toString());

    if (_formKey.currentState.validate()) {
      datum.revisionType = status.toString();
      datum.revisionTitle = _eventController.text;
      datum.revisionDate = _DateController.text;
      datum.revisionLocation = _EmplacementController.text;
      datum.kilometragePourVidange = num.parse(_KilometrageController.text);
      datum.repeatRevision = status1;
      datum.kilometrageRevision =
          num.parse(_Kilometrage_revisionController.text);
      
  print(datum.revisionDate);
  print(datum.revisionLocation);
    

      revisionApi
          .setRevision(
        datum.revisionTitle,
        datum.revisionType,
        datum.revisionDate,
        datum.revisionLocation,
        datum.repeatRevision,
        datum.kilometrageRevision,
        datum.kilometragePourVidange,
      )
          .then((data) {
        if (data != null) {
   
        }     

      }).catchError((error) {
        ScaffoldMessenger.of(context)
            .showSnackBar(SnackBar(content: Text(error.toString())));
      });
      setState(() {});
      Navigator.pop(context);

      //
    }
  }

我的问题是当我在分配之前检查 _EmplacementController.text => 它显示了正确的值。但是如果我在分配 ==> 之后检查 datum.revisionDate 它什么也没显示。

datum.revisionDate ==> 空 datum.revisionLocation ==> 空

我怎样才能纠正它?

提前致谢

标签: flutterdart

解决方案


如果您的表单被验证,那么您必须保存表单。

bool _validateAndSaveForm() {
final form = _formKey.currentState;
if (form.validate()) {
  form.save();
  return true;
}
return false;

}

if (_validateAndSaveForm()) {
  datum.revisionType = status.toString();
  datum.revisionTitle = _eventController.text;
  datum.revisionDate = _DateController.text;
  datum.revisionLocation = _EmplacementController.text;
  datum.kilometragePourVidange = num.parse(_KilometrageController.text);
  datum.repeatRevision = status1;
  datum.kilometrageRevision =
      num.parse(_Kilometrage_revisionController.text);

推荐阅读