Как получить данные Firestore в список во флаттере? - PullRequest
0 голосов
/ 25 апреля 2020

У меня есть некоторые значения в FireStore, которые я извлекаю в мое приложение flutter.

Имя коллекции News и имеет только одно поле headline

Я уже реализовал часть, где я могу получить это значение до ListView. Но я хочу, чтобы я хотел получить значения headline для флаттера List

Это моя текущая настройка для просмотра данных в ListView

return new Scaffold(
      appBar: AppBar(
        leading: new Icon(Icons.live_tv),
        title: const Text('SnapNews'),
        backgroundColor: Colors.red,
        actions: <Widget>[
          IconButton(
            icon: Icon(Icons.help),
            onPressed: () {
              Navigator.push(
                  context, MaterialPageRoute(builder: (_) => Help()));
            },
          ),
        ],
      ),
      body: Column(
        children: <Widget>[
          _show_search_bar(context), //calling the function
          Expanded(
              child: StreamBuilder(
            stream: FireStoreService().getNews(),
            builder:
                (BuildContext context, AsyncSnapshot<List<News>> snapshot) {
              if (snapshot.hasError || !snapshot.hasData) {
                return CircularProgressIndicator();
              } else {
                return ListView.builder(
                  itemCount: snapshot.data.length,
                  itemBuilder: (BuildContext context, int index) {
                    News news = snapshot.data[index];
                    return ListTile(
                      title: Text(news.headline),
                    );
                  },
                );
              }
            },
          ))
        ],
      ),
      .
      .
      .
      .
    );

И у меня есть еще одна функция, подобная этой:

Widget _show_search_bar(BuildContext context) {
  List list = []; //I want to get the values of headline here from the firestore
  return GFSearchBar(
    searchList: list,
    searchQueryBuilder: (query, list) {
      return list
          .where((item) => item.toLowerCase().contains(query.toLowerCase()))
          .toList();
    },
    overlaySearchListItemBuilder: (item) {
      return Container(
        padding: const EdgeInsets.all(8),
        child: Text(
          item,
          style: const TextStyle(fontSize: 18),
        ),
      );
    },
    onItemSelected: (item) {
      Navigator.push(context, MaterialPageRoute(builder: (_) => CameraScreen()));
    },
  );
}

Может ли кто-нибудь мне помочь?

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