Я пытаюсь запросить товары в коллекции Firestore, упорядоченной по itemName. Все это прекрасно работает и правильно упорядочивает документы, когда есть документы, соответствующие запросу.
Проблема возникает, когда в запросе нет соответствующего документа и используется orderBy, кажется, что запрос никогда не завершается.
Это мой код:
CollectionReference products = Firestore.instance.collection('products');
Query query;
query = products.where('keywords', arrayContains: searchString);
query = query.orderBy('itemName', descending: false);
Stream resultsStream = query.snapshots();
StreamBuilder<Object>(
stream: resultsStream,
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (!snapshot.hasData) {
return Center(child: CircularProgressIndicator());
} else {
if (snapshot.data.documents.length > 0) {
return ProductList(snapshot);
} else {
return Center(child: Text('No items found'));
}
}
Так что, если searchString что-то вроде 'kid' и соответствует, результаты все в порядке. Если searchString 'aaaa' и не соответствует никаким результатам. Первый оператор if с !snaspshot.hasdata
всегда верен, и снимок никогда не получает данные.
Странно то, что если вы удалите query.orderBy
и получите результаты запроса, у которых нет соответствующего документа, он получит данные, и snapshot.hasData
станет `true, затем он перейдет к следующему Если оператор и отобразить текст «Элементы не найдены».
Мне интересно, есть ли другой способ проверить, что запрос выполнен или использование !snapshot.hasData
не подходит в этом случае.
Спасибо