FireStore и Flutter - PullRequest
       8

FireStore и Flutter

0 голосов
/ 09 мая 2018

Я пишу приложение для Android с флаттером и Firestore в базе данных.

Я могу добавить отдельные данные в firestore, но когда я добавляю объект с вложенным объектом, он терпит неудачу. Не могу найти ни одного примера или решения в Google.

пожалуйста, помогите.

ниже мой код,

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:json_annotation/json_annotation.dart';
part 'Inspection.g.dart';

//run code => flutter packages pub run build_runner build
@JsonSerializable()
class Inspection extends Object with _$InspectionSerializerMixin {
  Inspection(
      {this.inspectionDate,
      this.staffName,
      this.arrivedTime,
      this.leaveTime,
      this.foundLocation,
      this.postName,
      this.guestsProportion,
      this.situationRemark,
      this.userid,
      this.id,
      this.grooming});

  String id;

  @JsonSerializable(nullable: false)
  DateTime inspectionDate;

  @JsonSerializable(nullable: false)
  String arrivedTime;

  @JsonSerializable(nullable: false)
  String leaveTime;

  @JsonSerializable(nullable: false)
  String staffName;

  @JsonSerializable(nullable: false)
  String postName;

  @JsonSerializable(nullable: false)
  String foundLocation;

  @JsonSerializable(nullable: false)
  String guestsProportion;

  @JsonSerializable(nullable: false)
  String situationRemark;

  @JsonKey(nullable: false)
  String userid;

  @JsonKey(nullable: false)
  Grooming grooming;

  static Inspection fromDocument(DocumentSnapshot document) =>
      new Inspection.fromJson(document.data);

  factory Inspection.fromJson(Map<String, dynamic> json) =>
      _$InspectionFromJson(json);
}

@JsonSerializable()
class Grooming extends Object {
  int groomingScore;
  int hairScore;
  int uniformScore;
  int decorationScore;
  int maskWearScore;
  int maskCleanScore;

  Grooming();

  factory Grooming.fromJson(Map<String, dynamic> json) =>
      _$GroomingFromJson(json);
}

и это генерируется build_runner

// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'Inspection.dart';

// **************************************************************************
// Generator: JsonSerializableGenerator
// **************************************************************************

Inspection _$InspectionFromJson(Map<String, dynamic> json) => new Inspection(
    inspectionDate: json['inspectionDate'] == null
        ? null
        : DateTime.parse(json['inspectionDate'] as String),
    staffName: json['staffName'] as String,
    arrivedTime: json['arrivedTime'] as String,
    leaveTime: json['leaveTime'] as String,
    foundLocation: json['foundLocation'] as String,
    postName: json['postName'] as String,
    guestsProportion: json['guestsProportion'] as String,
    situationRemark: json['situationRemark'] as String,
    userid: json['userid'] as String,
    id: json['id'] as String,
    grooming: new Grooming.fromJson(json['grooming'] as Map<String, dynamic>));

abstract class _$InspectionSerializerMixin {
  String get id;
  DateTime get inspectionDate;
  String get arrivedTime;
  String get leaveTime;
  String get staffName;
  String get postName;
  String get foundLocation;
  String get guestsProportion;
  String get situationRemark;
  String get userid;
  Grooming get grooming;
  Map<String, dynamic> toJson() => <String, dynamic>{
        'id': id,
        'inspectionDate': inspectionDate?.toIso8601String(),
        'arrivedTime': arrivedTime,
        'leaveTime': leaveTime,
        'staffName': staffName,
        'postName': postName,
        'foundLocation': foundLocation,
        'guestsProportion': guestsProportion,
        'situationRemark': situationRemark,
        'userid': userid,
        'grooming': grooming
      };
}

Grooming _$GroomingFromJson(Map<String, dynamic> json) => new Grooming()
  ..groomingScore = json['groomingScore'] as int
  ..hairScore = json['hairScore'] as int
  ..uniformScore = json['uniformScore'] as int
  ..decorationScore = json['decorationScore'] as int
  ..maskWearScore = json['maskWearScore'] as int
  ..maskCleanScore = json['maskCleanScore'] as int;

abstract class _$GroomingSerializerMixin {
  int get groomingScore;
  int get hairScore;
  int get uniformScore;
  int get decorationScore;
  int get maskWearScore;
  int get maskCleanScore;
  Map<String, dynamic> toJson() => <String, dynamic>{
        'groomingScore': groomingScore,
        'hairScore': hairScore,
        'uniformScore': uniformScore,
        'decorationScore': decorationScore,
        'maskWearScore': maskWearScore,
        'maskCleanScore': maskCleanScore
      };
}

код, используемый для вставки данных

 Future<bool> addInspection(Inspection item) async {
    print('creating');
    var newdoc = await inspectionCollection.document().get();
    item.id = newdoc.documentID;
    item.userid = user.uid;

    inspectionCollection.add(item.toJson()).then((onValue) {
      onValue.setData({'id': onValue.documentID});
    }).catchError((error) {
      print(error.toString());
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...