我正试图退回显示Firebase数据库中建筑数据的卡片。 数据已创建并存储在用户的uid下的数据库中,该用户使用ModalBottomSheet通过应用程序输入了建筑数据。
我正在使用Streamprovider生成一个 building_card.dart
(StatelessWidget)模板,其中包含Firebase中的数据,并显示在 building_card_list.dart
文件中,它是一个StatefulWidget,并返回一个ListView.builder,该列表返回 building_card.dart
模板。然后,该BuildingList类在 home_screen.dart
中作为扩展控件的子级显示。
问题是,它从不显示任何内容,并且我尝试了一切从Firebase检索数据并生成卡列表的方法。
以下是我的代码段:
home_screen.dart
class HomeScreen extends StatelessWidget {
final AuthService authService = AuthService();
Widget addBuildingSheet(BuildContext context) {
return AddBuildingSheetCode();
}
Widget addProblemPickerSheet(BuildContext context) {
return AddProblemPickerSheetCode();
}
@override
Widget build(BuildContext context) {
final FirebaseAuth _auth = FirebaseAuth.instance;
return StreamProvider<List<BuildingDataModel>>.value(
value: DatabaseService().buildings,
child: Scaffold(
backgroundColor: Color(0xff131517),
body: SafeArea(
bottom: false,
child: Column(
children: <Widget>[
Expanded(
flex: 30,
child: Row(
children: <Widget>[
Expanded(child: BuildingList()),
building_card_list.dart
class BuildingList extends StatefulWidget {
@override
_BuildingListState createState() => _BuildingListState();
}
class _BuildingListState extends State<BuildingList> {
@override
Widget build(BuildContext context) {
final building = Provider.of<List<BuildingDataModel>>(context) ?? [];
return ListView.builder(
itemCount: building.length,
itemBuilder: (context, index) {
return BuildingCard(buildings: building[index]);
},
);
}
}
building_card
class BuildingCard extends StatelessWidget {
final BuildingDataModel buildings;
BuildingCard({this.buildings});
final buildingImage = AssetImage('assets/images/building1.png');
@override
Widget build(BuildContext context) {
return Padding(
building_data_model
class BuildingDataModel {
final String userUid;
final String buildingName;
final int buildingRooms;
final String buildingLocation;
final String buildingType;
final String userEmail;
BuildingDataModel({
this.buildingName,
this.buildingRooms,
this.buildingLocation,
this.buildingType,
this.userEmail,
this.userUid,
});
}
DatabaseService.buildings
Stream<List<BuildingDataModel>> get buildings {
return buildingCollection
.document(uid)
.collection('buildings')
.snapshots()
.map(_buildingListFromSnapshot);
}
如果您可以提供帮助,我很想知道我在做错什么!如果您需要更多信息,请让我知道... 这是我使用的第一个应用程序,因为我不熟悉使用流提供程序编码和更新用户数据,该提供程序从Firebase接收数据输入,这在过去一周一直是我生存的祸根...
提前谢谢!