import 'package:flutter/material.dart'; import 'package:mensaappbackend/modules/ratingCard.dart'; class BuilderTodayAverage { static Widget build(var context, var snapshot, var ratingNames) { var data = snapshot.data; if (data == null) { return const Center(); } var avgs = { "page1": {"q1": 0.0, "q2": 0.0, "qc": 0.0}, "page2": {"q1": 0.0, "q2": 0.0, "qc": 0.0}, "page3": {"q1": 0.0, "q2": 0.0, "qc": 0.0} }; // sum up for (var map in data) { var ratings = map["ratings"]; for (var key in ratings.keys) { var page = ratings[key]; var q1 = avgs[key]!["q1"]! + page["q1"]; var q2 = avgs[key]!["q2"]! + page["q2"]; avgs[key]?["q1"] = q1.toDouble(); avgs[key]?["q2"] = q2.toDouble(); var qc = avgs[key]!["qc"]!; qc += (page["q1"] == 0 ? 0 : 1); avgs[key]?["qc"] = qc; } } // average calc for (var key in avgs.keys) { var page = avgs[key]; var q1 = page!["q1"]! / page["qc"]!; var q2 = page["q2"]! / page["qc"]!; avgs[key]?["q1"] = q1; avgs[key]?["q2"] = q2; } print(avgs); return SingleChildScrollView( child: Center( child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ const SizedBox( height: 20, ), const Text( "Heute - Durchschnitt", style: TextStyle(fontSize: 25), ), const SizedBox(height: 20,), Wrap( crossAxisAlignment: WrapCrossAlignment.center, alignment: WrapAlignment.center, spacing: 10, runSpacing: 10, children: [ Container( decoration: BoxDecoration( boxShadow: [ BoxShadow( color: Colors.grey.withOpacity(0.5), spreadRadius: 5, blurRadius: 7, offset: const Offset(0, 3)) ], borderRadius: BorderRadius.circular(15), ), child: RatingCard( title: ratingNames["page1"]["title"], rating1Title: ratingNames["page1"]["q1"], rating1: avgs["page1"]!["q1"]!.toInt(), rating2Title: ratingNames["page1"]["q2"], rating2: avgs["page1"]!["q2"]!.toInt(), text: "", ), ), const SizedBox(height: 10,), Container( decoration: BoxDecoration( boxShadow: [ BoxShadow( color: Colors.grey.withOpacity(0.5), spreadRadius: 5, blurRadius: 7, offset: const Offset(0, 3)) ], borderRadius: BorderRadius.circular(15), ), child: RatingCard( title: ratingNames["page2"]["title"], rating1Title: ratingNames["page2"]["q1"], rating1: avgs["page2"]!["q1"]!.toInt(), rating2Title: ratingNames["page2"]["q2"], rating2: avgs["page2"]!["q2"]!.toInt(), text: "", ), ), const SizedBox(height: 10,), Container( decoration: BoxDecoration( boxShadow: [ BoxShadow( color: Colors.grey.withOpacity(0.5), spreadRadius: 5, blurRadius: 7, offset: const Offset(0, 3)) ], borderRadius: BorderRadius.circular(15), ), child: RatingCard( title: ratingNames["page3"]["title"], rating1Title: ratingNames["page3"]["q1"], rating1: avgs["page3"]!["q1"]!.toInt(), rating2Title: ratingNames["page3"]["q2"], rating2: avgs["page3"]!["q2"]!.toInt(), text: "", ), ) ], ) ], ), ), ); } }