Необходимо сгруппировать динамические c данные из Firestore во Flutter - PullRequest
0 голосов
/ 05 мая 2020

Мне нужно иметь возможность извлекать постоянно меняющиеся данные из моей БД (облачного хранилища) в мое приложение flutter в их собственных группах.

Моя текущая настройка выглядит следующим образом:

DB - Содержимое (коллекция) / Документ (с полями) Одно из этих полей в документе - «Тип», и у меня все будет сгруппировано в определенный тип (например, велосипед, автомобиль, грузовик) на домашней странице

My код выглядит следующим образом:


 Widget _buildListItem(BuildContext context, DocumentSnapshot document) {
    return Scaffold(
      body: ExpansionTile(
          title: Text( document['Type'].toString()), //This shows Bike, Car, Truck
          children: <Widget>[
      Text(
      document[ 'FullVN' ].toString( )) // This shows Full Vehicle Name
            ],
        backgroundColor: Colors.white, //This gives the selected expansion contents color
      ),
          backgroundColor: Colors.black12, //This give the expansion title color
    );
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
          title: new Text( 'Area Contents' )
      ),
      body: StreamBuilder(
          stream: Firestore.instance.collection( 'Contents' ).snapshots( ),
          builder: (context, snapshot) {
            if (!snapshot.hasData) return const Text( 'Loading...' );
            return ListView.builder(
              itemExtent: 80.0,
              itemCount: snapshot.data.documents.length,
              itemBuilder: (context, index) =>
                  _buildListItem( context, snapshot.data.documents[index] ),
            );
          }
      ),
    );
  }
}
class UnknownRoute extends StatelessWidget {
  const UnknownRoute({Key key, this.onUnknownRoute}) : super( key: key );

  final RouteFactory onUnknownRoute;

  @override
  Widget build(BuildContext context) {

    return null;
  }

}

Что я пробовал:

Я пробовал несколько настроек БД, включая Collection (Contents) / document (Type) / Collection ( Cars, Bikes, Trucks) / Documents (поля, включая необходимые данные)

Я также попытался вызвать подколлекцию / документ для плитки расширения как title: Text (collection / document ['Type']. ToString ()) в надежде на группировку. (не одновременно, конечно)

Текущая реальность: Мои данные возвращаются следующим образом:

Велосипеды - Велосипед 1 Велосипеды - Велосипед 2 Автомобили - Автомобиль 1 и т.д. c. Мои данные там, просто не сгруппированы

Моя цель:

Я бы хотел, чтобы данные отображались как: Велосипеды (заголовок плитки расширения) - Велосипед 1 - Велосипед 2 Машины (другое название отдельного тайла расширения) - Автомобиль 1 - Автомобиль 2 Грузовики (другое название отдельного тайла расширения) и т. д. c .... *** По мере добавления новых «Типов» (например, лодок) они будут заполняться как другие плитка расширения

JSON DB имеет следующий вид:

{
  "Collection3": {
    "Bikes": {
      "Category": "Bikes",
      "Items": {
        "ID1": {
          "BrandName": "Kawasaki",
          "Description": "1500 Vulcan Nomad"
        },
        "ID2": {
          "BrandName": "Honda",
          "Description": "750 Shadow ACE"
        }
      }
    },
    "Cars": {
      "Category": "Cars",
      "Items": {
        "ID1": {
          "BrandName": "Dodge",
          "Description": "Dodge Challenger"
        },
        "ID2": {
          "BrandName": "Ford",
          "Description": "Mustang GT Cobra"
        }
      }
    },
    "Trucks": {
      "Category": "Trucks",
      "Items": {
        "ID1": {
          "BrandName": "Chevy",
          "Description": "Chevy Silvarado"
        },
        "ID2": {
          "BrandName": "Ford",
          "Description": "Ford F-150"
        }
      }
    }
  }
}
...