Flutter: StreamBuilder не возвращает мой поток с помощью Firebase - PullRequest
0 голосов
/ 07 января 2020

Я пытаюсь вернуть карточки с данными о зданиях из базы данных 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, был проклятием моего существование на прошлой неделе ...

заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...