Flutter: многоуровневая выпадающая кнопка из данных Firestore - PullRequest
0 голосов
/ 02 марта 2020

Я хотел создать многоуровневую выпадающую кнопку из данных Firestore. В настоящее время я получаю значения для родительской выпадающей кнопки, но дочерний элемент отключен из-за отсутствия значений. Пока что я получаю компании, но я не могу получить должности, которые являются частью коллекции компаний

StreamBuilder<QuerySnapshot>(
          stream: Firestore.instance.collection("companies").snapshots(),
          builder: (context, snapshot) {
            if (!snapshot.hasData)
              return Center(
                child: CircularProgressIndicator(),
              );

            List<DropdownMenuItem> items = [];
            final companies = snapshot.data.documents;
            for (var company in companies) {
              var companyName = company.data['companyName'];
              items.add(
                DropdownMenuItem(
                  child: Text(
                    companyName,
                    style: TextStyle(fontWeight: FontWeight.bold),
                  ),
                  value: companyName,
                ),
              );
            }
            return Column(
              children: <Widget>[
                CustomDropdownButton(
                  items: items,
                  onChanged: (selectedValue) {
                    setState(() {
                      _companyName = selectedValue;
                    });
                  },
                  hint: 'Select Company',
                  value: _companyName,
                ),
                StreamBuilder(
                    stream: firestoreDB
                        .collection('companies')
                        .document(_companyName)
                        .collection('positions')
                        .snapshots(),
                    builder: (context, snap) {
                      if (!snapshot.hasData) {
                        return null;
                      }
                      List<DropdownMenuItem> positionItems = [];
                      final positions = snap.data.documents;
                      for (var position in positions) {
                        _position = position.data['position'];
                        positionItems.add(
                          DropdownMenuItem(
                            child: Text(
                              _position,
                              style: TextStyle(fontWeight: FontWeight.bold),
                            ),
                          ),
                        );
                      }
                      return CustomDropdownButton(
                        items: positionItems,
                        hint: 'Select Position',
                        onChanged: (selectedValue) {
                          setState(() {
                            _position = selectedValue;
                          });
                        },
                        value: _position,
                      );
                    }),}),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...