Функция Flutter setState не обновляет список после получения из Firebase.
Я пытаюсь разработать приложение Flutter.Я не получаю обновления списка в функции setState ().Список успешно извлекается из firebase.Я записал соединения Firebase в файл Services.dart
.
Но мой метод _getList()
не позволяет получить значение в файле main.dart
.
main.dart
class DetailsPageState extends State<DetailsPage> {
List<Product> list;
@override
void initState() {
_checkUser(); // for getting user id from firebase auth
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Container(
child:new Text("data");
);
)
}
void _checkUser(){
debugPrint("Entering in _checkUser");
this.firebaseAuth.onAuthStateChanged.listen((firebaseUser)async{
_getList(firebaseUser.uid);
});
}
void _getList(String id)
debugPrint("Entering in _getList");
Services.retrieveItems(firestore, uid).then((onValue){
setState(() {
list=onValue;
debugPrint("items list:"+onValue.length.toString());
debugPrint("items list:"+listCart.length.toString());
});
});
}
}
Services.dart
static Future<List> retrieveItems(Firestore firestore, String userId) async {
List<Product> items = new List<Product>();
try {
firestore.collection("Items").document(userId)
.collection("ItemsMain").snapshots().listen((QuerySnapshot snapshot) {
List docList = snapshot.documents;
items = snapshot.documents.map((documentSnapshot) => Product.fromMap(documentSnapshot.data)).toList();
debugPrint("items:"+items.length.toString());
//return items;
});
} on Exception catch (e) {
print (e.toString());
}
debugPrint("items 2:"+items.length.toString());
return items;
}
Ожидаемые результаты:
Вход в _checkUser
Вход в _getList
элементы: 6
элементы 2: 6
элементы списка: 6
элементы списка: 6
Фактические результаты:
Вход в _checkUser
Вход в _getList
список элементов: 0
список элементов: 0
предметов 2: 0
предметов: 6