Проблема суммирования в flutter не работает, как я могу показать общий доход в панели навигации?

#firebase #flutter #visual-studio-code #flutter-bottomnavigation

# #огневая база #трепетание #visual-studio-код #flutter-bottomnavigation

Вопрос:

Я хочу суммировать поле (общий доход за январь) всего документа под именем коллекции («januaryi»).Я попробовал функцию, которая не работает. Есть ли какой-нибудь способ вызвать функцию и показать суммирование в нижней панели навигации.

Flutter Firebase:

Допустимый XHTML

Функция:

 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()}"),
    )),
  );      
 

Отображение ошибки в общем доходе:

Допустимый XHTML

Ответ №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 вместо публикации изображений.