New Layout - Pro Bewertung

This commit is contained in:
Jonas Braus
2024-11-28 19:39:06 +01:00
parent c272b80f15
commit 7f85b84a15
6 changed files with 123 additions and 61 deletions
+4
View File
@@ -1,5 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mensaappbackend/providers/pageProvider.dart'; import 'package:mensaappbackend/providers/pageProvider.dart';
import 'package:mensaappbackend/providers/viewProvider.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:supabase_flutter/supabase_flutter.dart'; import 'package:supabase_flutter/supabase_flutter.dart';
@@ -24,6 +25,9 @@ class MyApp extends StatelessWidget {
providers: [ providers: [
ChangeNotifierProvider( ChangeNotifierProvider(
create: (context) => PageProvider(), create: (context) => PageProvider(),
),
ChangeNotifierProvider(
create: (context) => ViewProvider(),
) )
], ],
child: MaterialApp( child: MaterialApp(
+96
View File
@@ -0,0 +1,96 @@
import 'package:flutter/material.dart';
import 'package:mensaappbackend/modules/ratingCard.dart';
class BuilderToday {
static Widget build (var context, var snapshot, var ratingNames) {
var data = snapshot.data;
List<Widget> cards = [];
if (data == null) {
return const Center();
}
var i = 0;
for (var map in data) {
var ratings = map["ratings"];
List<Widget> 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"]!,
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.center,
children: [
Container(
padding: const EdgeInsets.all(15),
decoration: BoxDecoration(
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.5),
spreadRadius: 5,
blurRadius: 7,
offset: const Offset(0, 3))
],
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(
runSpacing: 10,
crossAxisAlignment: WrapCrossAlignment.center,
alignment: WrapAlignment.center,
children: children,
)
],
),
),
const SizedBox(
height: 15,
),
],
));
i++;
}
return SingleChildScrollView(
child: Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
const SizedBox(
height: 20,
),
const Text(
"Tagesaktuell",
style: TextStyle(fontSize: 25),
),
const SizedBox(
height: 20,
),
for (var card in cards) card
],
),
),
);
}
}
+2 -11
View File
@@ -24,17 +24,11 @@ class RatingCard extends StatelessWidget {
return Column( return Column(
children: [ children: [
Container( Container(
padding: EdgeInsets.all(15), padding: EdgeInsets.all(10),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Theme.of(context).colorScheme.surface, color: Theme.of(context).colorScheme.surface,
borderRadius: BorderRadius.circular(15), borderRadius: BorderRadius.circular(15),
boxShadow: [ ),
BoxShadow(
color: Colors.grey.withOpacity(0.5),
spreadRadius: 5,
blurRadius: 7,
offset: Offset(0, 3))
]),
child: Column( child: Column(
children: [ children: [
Text(title, style: TextStyle(fontSize: 22),), Text(title, style: TextStyle(fontSize: 22),),
@@ -49,9 +43,6 @@ class RatingCard extends StatelessWidget {
], ],
), ),
), ),
SizedBox(
height: 20,
)
], ],
); );
} }
+11 -49
View File
@@ -1,15 +1,18 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:mensaappbackend/modules/ratingCard.dart'; import 'package:mensaappbackend/modules/ratingCard.dart';
import 'package:mensaappbackend/providers/pageProvider.dart'; import 'package:mensaappbackend/providers/pageProvider.dart';
import 'package:mensaappbackend/providers/viewProvider.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:supabase_flutter/supabase_flutter.dart'; import 'package:supabase_flutter/supabase_flutter.dart';
class PageDashboard extends StatelessWidget { class PageDashboard extends StatelessWidget {
const PageDashboard({super.key}); const PageDashboard({super.key});
Future<List<dynamic>> requestSupaBase7Days() async { Future<List<dynamic>> requestSupabaseToday() async {
var supabase = Supabase.instance.client; var supabase = Supabase.instance.client;
var result = await supabase.from("ratings_database").select("ratings"); var now = DateTime.now();
var morning = DateTime(now.year, now.month, now.day, 10, 0);
var result = await supabase.from("ratings_database").select("ratings").gte("created_at", morning);
return result; return result;
} }
@@ -25,7 +28,7 @@ class PageDashboard extends StatelessWidget {
appBar: AppBar( appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.primary, backgroundColor: Theme.of(context).colorScheme.primary,
title: Text( title: Text(
"Dashboard - Bewertungen", "Dashboard",
style: TextStyle(color: Theme.of(context).colorScheme.onPrimary), style: TextStyle(color: Theme.of(context).colorScheme.onPrimary),
), ),
centerTitle: false, centerTitle: false,
@@ -49,53 +52,12 @@ class PageDashboard extends StatelessWidget {
], ],
), ),
body: FutureBuilder( body: FutureBuilder(
future: requestSupaBase7Days(), future: requestSupabaseToday(),
builder: (context, snapshot) { builder: (context, snapshot) {
var data = snapshot.data; return Consumer<ViewProvider> (
List<Widget> cards = []; builder: (context, viewProvider, child) {
return viewProvider.views[viewProvider.selectedView]!(context, snapshot, ratingNames);
if (data == null) { },
return Center();
}
for (var map in data) {
var ratings = map["ratings"];
for (var key in ratings.keys) {
var rating = ratings[key];
if (rating["q1"] != 0) {
cards.add(RatingCard(
rating1: rating["q1"],
rating2: rating["q2"],
text: rating["t1"],
title: ratingNames[key]!["title"]!,
rating1Title: ratingNames[key]!["q1"]!,
rating2Title: ratingNames[key]!["q2"]!,
));
}
}
}
return SingleChildScrollView(
child: Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(
height: 20,
),
Text(
"Letze 7 Tage:",
style: TextStyle(fontSize: 25),
),
SizedBox(
height: 20,
),
for (var card in cards) card
],
),
),
); );
}, },
), ),
-1
View File
@@ -13,7 +13,6 @@ class PageProvider extends ChangeNotifier {
]; ];
void setSelectedPage(var index) { void setSelectedPage(var index) {
print("hallo");
selectedPage = index; selectedPage = index;
notifyListeners(); notifyListeners();
} }
+10
View File
@@ -0,0 +1,10 @@
import 'package:flutter/cupertino.dart';
import 'package:mensaappbackend/modules/builderToday.dart';
class ViewProvider extends ChangeNotifier {
var selectedView = 0;
var views = {
0: (context, snapshot, ratingNames) => BuilderToday.build(context, snapshot, ratingNames)
};
}