Я пытаюсь вернуть карточки с данными о зданиях из базы данных Firebase. Данные были созданы и сохранены в базе данных под uid пользователя, который вводил данные здания через приложение, используя ModalBottomSheet.
Я использую Streamprovider для генерации building_card.dart
* 1005 Шаблон * (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, был проклятием моего существование на прошлой неделе ...
заранее спасибо!