Flutter streamBuilder initalData не работает должным образом - PullRequest
0 голосов
/ 27 мая 2020

Мне нужна функция поиска на странице A. После нажатия значка поиска он будет извлекать элементы с сервера и сохранять их в sink, а затем использовать stream для заполнения в listView.

Но теперь он застревает на ConnectionState.waiting, когда я не нажимаю значок поиска. Как сделать так, чтобы изначально отображалось Нет элемента ? При щелчке по значку поиска отображается только результат?

Container(
              child: StreamBuilder<List<ABC>>(
              initialData: null,
              stream: _bloc.displayStream,
              builder: (context, snapshot) {
                switch (snapshot.connectionState) {
                  case ConnectionState.active:
                    if (snapshot.data.isEmpty) {
                      return Center(
                          child: Column(
                              mainAxisAlignment: MainAxisAlignment.center,
                              children: <Widget>[
                            Icon(
                              Icons.format_list_bulleted,
                              size: 80,
                              color: Colors.orange,
                            ),
                            SizedBox(
                              height: 20,
                            ),
                            Text(
                              'No item',
                              style: TextStyle(fontSize: 18),
                            )
                          ]));
                    } else {
                      return Stack(
                        children: <Widget>[
                          _showListView(snapshot),
                        ],
                      );
                    }

                    break;

                  case ConnectionState.waiting:
                    return Center(
                      child: Image.asset(
                        'assets/loading.gif',
                        width: 200.0,
                        height: 200.0,
                      ),
                    );
                    break;

                  default:
                    return Text("Error");
                }
              },
            ))

1 Ответ

0 голосов
/ 27 мая 2020

добавить if (!snapshot.hasData) return LinearProgressIndicator(); дюйм builder: (context, snapshot) {

Ссылка firebase flutter codelab

...