flutter - 在 null 上调用了方法“[]”。(如何从 Firestore 中检索数据?)
问题描述
我有关于firestore的数据。我使用了 json 和带有 bloc 模式的序列化。项目未运行。错误是,
未处理的异常:NoSuchMethodError:在 null 上调用了方法“[]”。接收者:null 尝试调用:
我的 DB.dart 文件(用于设置数据)
class DB {
final db = Firestore.instance;
getPhotography() async {
await db
.collection('photography')
.document('0yUc5QBGHNNq6WK9CyyF')
.setData(jsonDecode(jsonEncode(Photography(
[AllImages(["list"])],
"image_url",
"Shanika",
"inage_url",
"lovely couple",
"Bhanuka"
))));
}}
DB db = DB();
摄影块类
class PhotographyBloc extends BlocBase{
PhotographyBloc(){
init();
}
Photography photography;
final _firestoreController = StreamController<Photography>();
Stream<Photography> get outFirestore => _firestoreController.stream;
Sink<Photography> get inFirestore => _firestoreController.sink;
@override
void dispose() {
_firestoreController.close();
}
void init() async{
Photography data;
await db.getPhotography().then((v) => data = v);
inFirestore.add(data);
}
}
小部件(StreamBuilder)
child: StreamBuilder<Photography>(
stream: bloc.outFirestore,
initialData: null,
builder: (context, snapshot) {
print(snapshot.data); //output is null
Photography data = Photography.fromJson(jsonDecode(jsonEncode(snapshot.data))); //try to retrieving data, error is coming here
摄影模型类(我用的是 build_runner)
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);
}
解决方案
推荐阅读
- python - 禁用绘图图中某些轨迹的交互性
- postgresql - 运行多个 docker 命令的更好方法
- java - 403 禁止页面 Spring Security
- c++ - 为什么提升日志记录给我 LNK1104 错误?
- r - scale_x_date 返回错误:如何将时间范围应用于 x 轴?
- ios - swift中的MDCBottomSheet
- python - 存储一张包含 5000 万行的表的最佳方法
- git - 在一个存储库中发生更改(推/拉)后,有没有办法在多个存储库中运行自动化测试?
- php - 使用 PHP 从字符串中获取特定值
- python - 根据字符串中的整数将列表拆分为子列表