【发布时间】:2021-12-22 08:49:41
【问题描述】:
我一直在尝试显示来自 firestore 的图像,代码显示没有错误并编译但无法显示图像,我使用的 web soo 仅配置为 Flutter web 并重新检查。 我正在使用 cloud_firestore: ^3.1.0,并考虑使用新的 withConverter 功能。 我想用它来检索我的模型并将其传递给 Firestore,但我不太确定为什么不显示。 我想我可能会错误地解析数据
我的 Firestore 后端设置 imgUrl:
//Here's my model
class ArtWork {
ArtWork({required this.name, required this.imgUrl});
final String name;
final String imgUrl;
factory ArtWork.fromJson(Map<String, dynamic> json) => ArtWork(
name: json['name'],
imgUrl: json['imgUrl'],
);
Map<String, Object?> toJson() {
return {
'name': name,
'imgUrl': imgUrl,
};
}
}
我使用了 streamBuilder 和 FutureBuilder 都返回相同的输出。
class ProfilePage extends StatefulWidget {
final artRef = FirebaseFirestore.instance
.collection('artWorks')
.withConverter<ArtWork>(
fromFirestore: (snapshots, _) => ArtWork.fromJson(snapshots.data()!),
toFirestore: (artwork, _) => artwork.toJson(),
);
ProfilePage({Key? key}) : super(key: key);
@override
State<ProfilePage> createState() => _ProfilePageState();
}
class _ProfilePageState extends State<ProfilePage> {
@override
Widget build(BuildContext context) {
return SafeArea(
child: Padding(
padding: const EdgeInsets.all(24.0),
child: Card(child: _buildContent(context)),
),
);
}
Widget _buildContent(BuildContext context) {
// final database = Provider.of<Database>(context, listen: false);
return FutureBuilder<QuerySnapshot<ArtWork>>(
future: widget.artRef.get(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot<ArtWork>> snapshot) {
if (snapshot.hasError) {
return Text("Something went wrong");
}
if (snapshot.hasData && snapshot.data!.docs.isNotEmpty) {
return Text("Document does not exist");
}
if (snapshot.connectionState == ConnectionState.done) {
return ListView(
shrinkWrap: true,
children: snapshot.data!.docs.map((DocumentSnapshot document) {
Map<String, dynamic> data = document.data() as Map<String, dynamic>;
return ListTile(
title: Text(data['name'].toString(), style: TextStyle(color: Colors.black,fontSize: 60),),
subtitle: Text(data['imgUrl']),
);
}).toList(),
);
}
return Text("loading");
},
);
}
输出:
Performing hot restart... 12.6s
Restarted application in 12,582ms.
[.2021-11-09T15:47:17.224Z] @firebase/firestore:
【问题讨论】:
标签: firebase flutter dart stream-builder dart-null-safety