New Layout - Pro Bewertung
This commit is contained in:
@@ -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(
|
||||||
|
|||||||
@@ -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
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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,
|
|
||||||
)
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ class PageProvider extends ChangeNotifier {
|
|||||||
];
|
];
|
||||||
|
|
||||||
void setSelectedPage(var index) {
|
void setSelectedPage(var index) {
|
||||||
print("hallo");
|
|
||||||
selectedPage = index;
|
selectedPage = index;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user