#firebase #flutter #visual-studio-code #flutter-bottomnavigation
# #огневая база #трепетание #visual-studio-код #flutter-bottomnavigation
Вопрос:
Я хочу суммировать поле (общий доход за январь) всего документа под именем коллекции («januaryi»).Я попробовал функцию, которая не работает. Есть ли какой-нибудь способ вызвать функцию и показать суммирование в нижней панели навигации.
Flutter Firebase:
Функция:
class _JanuaryState extends State<January>{
totalmoney() async {
int total = 0;
var snapshot =
await Firestore.instance.collection("Januaryi").getDocuments();
if (snapshot == null){
return 0;
}
snapshot.documents.foreach((doc) {
total = total int.parse(doc.data['income']);
});
return total;
}
}
Нижняя панель навигации:
bottomNavigationBar: Container(
child: ListTile(
title: Text('Total'),
subtitle: Text("${totalmoney()}"),
)),
);
Отображение ошибки в общем доходе:
Ответ №1:
Не рекомендуется изменять значения внутри функции сборки, как вы пытаетесь это сделать. Вы можете просто установить totalIncome
переменную внутри своей totalmoney()
функции следующим образом:
totalmoney() async{
int total = 0;
var snapshot = await Firestore.instance.collection("Januaryi").getDocuments();
setState((){
if(snapshot == null)
totalIncome = 0
snapshot.documents.forEach((doc){
total =int.parse(doc.data['income']);
});
totalIncome = total;
});
}
Затем вызовите этот метод внутри вашего initState()
метода.
Замените ${totalmoney()}
на новую переменную $totalIncome
. Не забудьте инициализировать его в верхней части вашего класса состояния.
Кроме того, попробуйте отформатировать свой код внутри StackOverflow вместо публикации изображений.