import 'package:flutter/material.dart'; import 'package:mensaappbackend/modules/ratingCard.dart'; import 'package:mensaappbackend/providers/timeProvider.dart'; import 'package:provider/provider.dart'; class BuilderAverage { static Widget build(var context, var snapshot, var ratingNames) { var data = snapshot.data; //print(data); Map dic = { "page1":{}, "page2": { "q1" : 0, "q2" : 0, "counter" : 0 }, "page3": { "q1" : 0, "q2" : 0, "counter" : 0 } }; for (Map bewertung in data){ for (var page in bewertung["ratings"].keys) { var tmp_dic = bewertung["ratings"][page]; switch (page){ case "page1": var curKey = tmp_dic["food"].split(":")[1]; if (!dic["page1"]!.containsKey(curKey)){ dic["page1"]![curKey] = { "q1" : 0, "q2" : 0, "counter" : 0 }; } dic["page1"]![curKey]["q1"] += tmp_dic["q1"]; dic["page1"]![curKey]["q2"] += tmp_dic["q2"]; dic["page1"]![curKey]["counter"] += tmp_dic["q1"] == 0 ? 0 : 1 ; break; case "page2": dic["page2"]!["q1"] += tmp_dic["q1"]; dic["page2"]!["q2"] += tmp_dic["q2"]; dic["page2"]!["counter"] += tmp_dic["q1"] == 0 ? 0 : 1 ; break; case "page3": dic["page3"]!["q1"] += tmp_dic["q1"]; dic["page3"]!["q2"] += tmp_dic["q2"]; dic["page3"]!["counter"] += tmp_dic["q1"] == 0 ? 0 : 1 ; break; } } } print(dic); List cards = []; if (data == null) { return const Center(); } var i = 0; for (var map in data) { var ratings = map["ratings"]; List children = []; for (var key in ratings.keys) { var rating = ratings[key]; if (rating["q1"] != 0) { Widget card = RatingCard( rating1: rating["q1"], rating2: rating["q2"], text: rating["t1"], title: ratingNames[key]!["title"]! + (key == "page1" ? "${rating["food"]}" : ""), rating1Title: ratingNames[key]!["q1"]!, rating2Title: ratingNames[key]!["q2"]!, ); children.add(card); children.add(const SizedBox( width: 10, )); } } cards.add(Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.stretch, children: [ Container( padding: const EdgeInsets.all(15), decoration: BoxDecoration( boxShadow: [ BoxShadow( color: Colors.grey.withOpacity(0.8), spreadRadius: 0, blurRadius: 0, offset: const Offset(0, 0)) ], borderRadius: BorderRadius.circular(15), color: Theme.of(context).colorScheme.surface.withOpacity(0.8)), child: Column( children: [ Text( "Bewertung $i", style: const TextStyle(fontSize: 20), ), const SizedBox( height: 10, ), Wrap( runAlignment: WrapAlignment.center, crossAxisAlignment: WrapCrossAlignment.center, runSpacing: 10, children: children, ) ], ), ), const SizedBox( height: 15, ), ], )); i++; } return Center( child: IntrinsicWidth( stepWidth: 2, child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ const SizedBox( height: 20, ), Consumer( builder: (context, timeProvider, child) { // Dynamischer Text basierend auf TimeProvider String text = timeProvider.timeList[timeProvider.selectedTime]!; return Text( text + " - Durchschnitt", style: const TextStyle(fontSize: 25), ); }, ), const SizedBox( height: 20, ), for (var card in cards) card, ], ), ), ), ); } }