在使用Flutter的StreamBuilder从Firestore获取数据时,如果路径正确但仍然显示空数据,可能是由于以下几个原因:
StreamBuilder常用于实时更新UI,例如聊天应用、实时数据展示等场景。
以下是一个完整的示例,展示了如何使用StreamBuilder从Firestore获取数据:
import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Firestore StreamBuilder Example'),
),
body: FirestoreStreamBuilder(),
),
);
}
}
class FirestoreStreamBuilder extends StatelessWidget {
@override
Widget build(BuildContext context) {
return StreamBuilder<QuerySnapshot>(
stream: FirebaseFirestore.instance.collection('yourCollection').snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (snapshot.hasError) {
return Text('Something went wrong');
}
if (snapshot.connectionState == ConnectionState.waiting) {
return Text("Loading");
}
return ListView(
children: snapshot.data!.docs.map((DocumentSnapshot document) {
Map<String, dynamic> data = document.data() as Map<String, dynamic>;
return ListTile(
title: Text(data['title']),
);
}).toList(),
);
},
);
}
}
通过以上步骤,您应该能够解决无法使用StreamBuilder从Firestore获取数据的问题。如果问题仍然存在,请检查控制台日志以获取更多详细信息。
领取专属 10元无门槛券
手把手带您无忧上云