Итак, одна вещь: когда вы на самом деле создаете виджеты, которые зависят от некоторых данных в хранилище, вам, в конечном счете, уже нужны эти данные. Это не значит, что вы не можете вернуть временное значение, пока ожидаете разрешения будущего. Но в этом случае похоже, что вы вызываете этот метод, как только у вас уже есть данные. Так что, может быть, просто передайте массив закладок также (тем не менее, такой метод с кучей аргументов является хорошим индикатором того, что все выходит из-под контроля и требуются некоторые дополнительные структурные изменения - например, путем разделенияметод в зависимости от условий и при необходимости вызывает различные методы):
List<Widget> populateBriteList(AsyncSnapshot snapshot, int x, bool isBookmarksSection, AsyncSnapshot bookmarkSnapshot) {
...
if (isBookmarksSection) {
for (int i=0; i<x; i++) {
if(bookmarkSnapshot.documents.where((document) => condition(document.data)).length > 0){
list.add(
_briteContent(i)
);
}
}
В этом случае 'where (someTest)' вызывается в итерируемом списке (документов), каждый элемент передается в someTestметод, и если результат равен true, этот элемент передается в список. Таким образом, если список больше 0, по крайней мере один элемент удовлетворяет этому условию.