Необработанное исключение: тип 'Future <void>' не является подтипом типа 'Future <Photography>' в Firestore - PullRequest
0 голосов
/ 29 июня 2019

Мне нужно получить все данные из базы данных пожарного магазина. Я иду по этому пути, https://stackoverflow.com/a/55865045/9139407

 Future<Photography> getPhotography() {
  Future<Photography> data =  await db
    .collection('photography')
    .document('0yUc5QBGHNNq6WK9CyyF')
    .setData(jsonDecode(jsonEncode(Photography(
  [AllImages(["list"])],
  "image_url",
  "Shanika",
  "image_url",
  "lovely couple",
  "Bhanuka"
))));

return data;
}

Сообщение об ошибке:

Необработанное исключение: тип 'Future ' не является подтипом типа 'Будущее <Фотография>'

Фотография модели класса

import 'package:json_annotation/json_annotation.dart';
part 'Model.g.dart';

@JsonSerializable()
class Photography{
   List<AllImages> all_images;
   String couplePhoto;
   String female;
   String image_url;
   String info;
   String male;

  Photography();

  factory Photography.fromJson(Map<String, dynamic> json) => _$PhotographyFromJson(json);
   Map<String,dynamic> toJson() => _$PhotographyToJson(this);
}

@JsonSerializable()
class AllImages {
  final List<String> imageUrl;

  AllImages(this.imageUrl);

  factory AllImages.fromJson(Map<String, dynamic> json) => _$AllImagesFromJson(json);
  Map<String,dynamic> toJson() => _$AllImagesToJson(this);
}

И следующая проблема, как добавить эти данные в приемник блока?

  Sink<Photography> get inFirestore => _firestoreController.sink;

как то так? но ошибка в том, что тип аргумента «Будущее» не может быть назначен типу параметра «Фотография»

final result = db.getPhotography();
inFirestore.add(result);

1 Ответ

1 голос
/ 29 июня 2019

Document.setData() возвращает Future<void> - это означает, что когда он завершится в будущем, он не вернет никаких данных.Это разумно для сеттера, конечно.Вот почему вы не можете превратить это ни во что.Непонятно, откуда вы собираетесь получить data.Вы начинаете с пустого (?) Photography, кодируете его, декодируете и сохраняете, а затем ожидаете что-то вернуть.Какие?Оригинальный пустой объект?(Вы можете просто вернуть это, но я не думаю, что это то, что вы хотите.)

...