未处理的异常:类型 'Future<void>' 不是 Firestore 上类型 'Future<Photography>' 的子类型
Unhandled Exception: type 'Future<void>' is not a subtype of type 'Future<Photography>' on Firestore
我需要从 firestore 数据库中获取所有数据。
我是这样走的,
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;
}
错误信息是:
Unhandled Exception: type 'Future< void >' is not a subtype of type
'Future< Photography> '
摄影模特class
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);
}
下一个问题是,如何将这些数据添加到 bloc sink 上?
Sink<Photography> get inFirestore => _firestoreController.sink;
像这样的?但是 错误是,参数类型 'Future' 无法分配给参数类型 'Photography'
final result = db.getPhotography();
inFirestore.add(result);
Document.setData()
returns a Future<void>
- 这意味着当它在未来完成时它不会 return 任何数据。这对于 setter 当然是合理的。这就是为什么你不能把它变成任何东西。目前尚不清楚您打算从哪里获得 data
。您从一个空的 (?) Photography
开始,对它进行编码、解码并存储它,然后期望 return 一些东西。什么?原来的空对象? (你可以 return 那 - 但我不认为那是你想要的。)
我需要从 firestore 数据库中获取所有数据。 我是这样走的,
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;
}
错误信息是:
Unhandled Exception: type 'Future< void >' is not a subtype of type 'Future< Photography> '
摄影模特class
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);
}
下一个问题是,如何将这些数据添加到 bloc sink 上?
Sink<Photography> get inFirestore => _firestoreController.sink;
像这样的?但是 错误是,参数类型 'Future' 无法分配给参数类型 'Photography'
final result = db.getPhotography();
inFirestore.add(result);
Document.setData()
returns a Future<void>
- 这意味着当它在未来完成时它不会 return 任何数据。这对于 setter 当然是合理的。这就是为什么你不能把它变成任何东西。目前尚不清楚您打算从哪里获得 data
。您从一个空的 (?) Photography
开始,对它进行编码、解码并存储它,然后期望 return 一些东西。什么?原来的空对象? (你可以 return 那 - 但我不认为那是你想要的。)