#flutter #dart
#flutter #dart
Вопрос:
У меня есть этот метод для подачи моего списка, но с его помощью я не могу динамически изменять элементы (добавлять элементы, удалять их …) :
loadLab(String submenu, [int limit]) async {
var parts = submenu.split('/');
var pathSlashless = parts[0].trim();
var subPathSlashless = parts.sublist(1).join('/').trim();
var snapshot = await _storage.ref().child("/${submenu}");
var retorno = await snapshot.listAll();
List<ItemLab> conteudo = [];
if(subPathSlashless.isEmpty || subPathSlashless == null){
retorno.prefixes.forEach((element) {
conteudo.add(
ItemLab(
tipo: 'PASTA',
elemento: element,
),
);
});
}
if(limit != null){
if(conteudo.length > limit){
hasMore = true;
return Stream.value(conteudo);
}else{
hasMore = false;
print("menor quen ove");
}
}
}
try {
if(subPathSlashless.isNotEmpty){
print(subPathSlashless);
List items;
await databaseReference
.collection("lab_${pathSlashless}_url")
.snapshots().forEach((element) {
element.docs.forEach((f) {
if(f.data()['videos'] != null){
items == null ? items = f.data()['videos'] :
items.addAll(f.data()['videos']);
};
print("ITEMS :::: >>> ${items}");
});
});
}catch(e){
print(e);
}
pathSlashless = null;
subPathSlashless = null;
conteudo = checkDuplicateFolder(conteudo, submenu);
print(conteudo);
return Stream.value(conteudo);
}
и список>
return StreamBuilder(
stream: ctrlLab.loadLab(submenu),
выдает эту ошибку:
тип ‘Future’ не является подтипом типа ‘Stream’
Что мне нужно сделать, чтобы вернуть поток вместо Future
Комментарии:
1. Я думаю, вам нужно вызвать .snapshots(), чтобы получить поток изменений в вашем запросе, а не .get() , который является «сообщите мне текущие значения».
2. Хорошо .. теперь каким должен быть возврат?
3. Вероятно, вам следует просто вернуть поток и извлечь то, что вам нужно, в чем-то вроде StreamBuilder ( api.flutter.dev/flutter/widgets/StreamBuilder-class.html ), или сначала выполните какое-нибудь преобразование потока в поток в этом методе, используя что-то вроде aStream.transform(…) .
4. Пожалуйста, посмотрите мое обновление