From 6696b1f4d00311f09948833356e6e39b22c626f2 Mon Sep 17 00:00:00 2001 From: Ali Date: Wed, 15 Jan 2025 18:45:50 +0100 Subject: [PATCH] Start Filter First step of filters for the dashboard --- lib/main.dart | 6 ++- lib/modules/builderToday.dart | 19 +++++-- lib/modules/builderTodayAverage.dart | 18 +++++-- lib/pages/pageDashboard.dart | 76 ++++++++++++++++++++++++---- lib/providers/timeProvider.dart | 14 +++++ 5 files changed, 116 insertions(+), 17 deletions(-) create mode 100644 lib/providers/timeProvider.dart diff --git a/lib/main.dart b/lib/main.dart index 0885140..2a57407 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:mensaappbackend/providers/pageProvider.dart'; +import 'package:mensaappbackend/providers/timeProvider.dart'; import 'package:mensaappbackend/providers/viewProvider.dart'; import 'package:provider/provider.dart'; import 'package:supabase_flutter/supabase_flutter.dart'; @@ -8,7 +9,7 @@ void main() async { WidgetsFlutterBinding.ensureInitialized(); await Supabase.initialize( - url: "http://192.168.188.29:8000", + url: "http://127.0.0.1:8000", anonKey: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyAgCiAgICAicm9sZSI6ICJhbm9uIiwKICAgICJpc3MiOiAic3VwYWJhc2UtZGVtbyIsCiAgICAiaWF0IjogMTY0MTc2OTIwMCwKICAgICJleHAiOiAxNzk5NTM1NjAwCn0.dc_X5iR_VP_qT0zsiyj_I_OZ2T9FtRU2BBNWN8Bu4GE" ); @@ -28,6 +29,9 @@ class MyApp extends StatelessWidget { ), ChangeNotifierProvider( create: (context) => ViewProvider(), + ), + ChangeNotifierProvider( + create: (context) => TimeProvider(), ) ], child: MaterialApp( diff --git a/lib/modules/builderToday.dart b/lib/modules/builderToday.dart index d026dc5..0bb7cd9 100644 --- a/lib/modules/builderToday.dart +++ b/lib/modules/builderToday.dart @@ -1,5 +1,8 @@ import 'package:flutter/material.dart'; import 'package:mensaappbackend/modules/ratingCard.dart'; +import 'package:mensaappbackend/providers/timeProvider.dart'; +import 'package:provider/provider.dart'; + class BuilderToday { static Widget build (var context, var snapshot, var ratingNames) { @@ -80,14 +83,22 @@ class BuilderToday { const SizedBox( height: 20, ), - const Text( - "Heute - Alle", - style: TextStyle(fontSize: 25), + Consumer( + builder: (context, timeProvider, child) { + // Dynamischer Text basierend auf TimeProvider + String text = timeProvider.selectedTime == 1 + ? "Heute - Alle" + : "Letzte 7 Tage - Alle"; + return Text( + text, + style: const TextStyle(fontSize: 25), + ); + }, ), const SizedBox( height: 20, ), - for (var card in cards) card + for (var card in cards) card, ], ), ), diff --git a/lib/modules/builderTodayAverage.dart b/lib/modules/builderTodayAverage.dart index 73a282d..5d3f876 100644 --- a/lib/modules/builderTodayAverage.dart +++ b/lib/modules/builderTodayAverage.dart @@ -1,5 +1,9 @@ import 'package:flutter/material.dart'; import 'package:mensaappbackend/modules/ratingCard.dart'; +import 'package:provider/provider.dart'; +import 'package:mensaappbackend/providers/timeProvider.dart'; + + class BuilderTodayAverage { static Widget _getRatingWidget( @@ -108,9 +112,17 @@ class BuilderTodayAverage { const SizedBox( height: 20, ), - const Text( - "Heute - Durchschnitt", - style: TextStyle(fontSize: 25), + Consumer( + builder: (context, timeProvider, child) { + // Dynamischer Text basierend auf TimeProvider + String text = timeProvider.selectedTime == 1 + ? "Heute - Durchschnitt" + : "Letzte 7 Tage - Durchschnitt"; + return Text( + text, + style: const TextStyle(fontSize: 25), + ); + }, ), const SizedBox( height: 20, diff --git a/lib/pages/pageDashboard.dart b/lib/pages/pageDashboard.dart index 5386d2f..66566c9 100644 --- a/lib/pages/pageDashboard.dart +++ b/lib/pages/pageDashboard.dart @@ -2,6 +2,7 @@ import 'package:flutter/material.dart'; import 'package:mensaappbackend/modules/ratingCard.dart'; import 'package:mensaappbackend/providers/pageProvider.dart'; import 'package:mensaappbackend/providers/viewProvider.dart'; +import 'package:mensaappbackend/providers/timeProvider.dart'; import 'package:provider/provider.dart'; import 'package:supabase_flutter/supabase_flutter.dart'; @@ -32,18 +33,74 @@ class PageDashboard extends StatelessWidget { return Scaffold( appBar: AppBar( backgroundColor: Theme.of(context).colorScheme.primary, - title: Text( - "Dashboard", - style: TextStyle(color: Theme.of(context).colorScheme.onPrimary), + title: Consumer( + builder: (context, timeProvider, child) { + return Row( + children: [ + Text( + "Dashboard", + style: TextStyle(color: Theme.of(context).colorScheme.onPrimary), + ), + SizedBox(width: 32), + Icon(Icons.watch_later, ), + SizedBox(width: 8), + SizedBox( + width: 125, + child: Center( // Add Center widget here + child: DropdownButton( + value: Provider.of(context, listen: false).selectedTime, + dropdownColor: Theme.of(context).colorScheme.secondary, + //style: TextStyle(color: Theme.of(context).colorScheme.onPrimary), + iconEnabledColor: Theme.of(context).colorScheme.onPrimary, + focusColor: Colors.transparent, + isDense: true, + isExpanded: true, + items: [ + DropdownMenuItem( + value: 1, + child: Center( + child: Text("Heute", style: TextStyle(color: Theme.of(context).colorScheme.onSecondary)), + ), + ), + DropdownMenuItem( + value: 2, + child: Center( + child: Text("Letzte 7 Tage"), + ), + ), + ], + selectedItemBuilder: (BuildContext context) { + return [ + Center( + child: Text( + "Heute", + style: TextStyle(color: Theme.of(context).colorScheme.onPrimary), // Benutzerdefinierte Farbe für angezeigten Text + ), + ), + Center( + child: Text( + "Letzte 7 Tage", + style: TextStyle(color: Theme.of(context).colorScheme.onPrimary), // Benutzerdefinierte Farbe für angezeigten Text + ) + ), + ]; + }, + onChanged: (value) { + Provider.of(context, listen: false).setSelectedTime(value); + }, + ), + ), + ), + ], + ); + }, ), - centerTitle: false, actions: [ TextButton.icon( onPressed: () { var supabase = Supabase.instance.client; supabase.auth.signOut(); - Provider.of(context, listen: false) - .setSelectedPage(0); + Provider.of(context, listen: false).setSelectedPage(0); }, label: Text( "Logout", @@ -53,9 +110,10 @@ class PageDashboard extends StatelessWidget { Icons.logout, color: Theme.of(context).colorScheme.onPrimary, ), - ) + ), ], ), + body: FutureBuilder( future: viewDatabaseFunctions[Provider.of(context, listen: false).selectedView]!(), builder: (context, snapshot) { @@ -77,7 +135,7 @@ class PageDashboard extends StatelessWidget { FilledButton.icon( style: const ButtonStyle(padding: WidgetStatePropertyAll(EdgeInsets.symmetric(vertical: 20))), icon: const Icon(Icons.today), - label: const Text("Alle - Heute"), + label: const Text("Alle"), onPressed: () { Provider.of(context, listen: false).setSelectedView(0); Navigator.pop(context); @@ -87,7 +145,7 @@ class PageDashboard extends StatelessWidget { FilledButton.icon( style: const ButtonStyle(padding: WidgetStatePropertyAll(EdgeInsets.symmetric(vertical: 20))), icon: const Icon(Icons.today), - label: const Text("Durchschnitt - Heute"), + label: const Text("Durchschnitt"), onPressed: () { Provider.of(context, listen: false).setSelectedView(1); Navigator.pop(context); diff --git a/lib/providers/timeProvider.dart b/lib/providers/timeProvider.dart new file mode 100644 index 0000000..18bb9fb --- /dev/null +++ b/lib/providers/timeProvider.dart @@ -0,0 +1,14 @@ +import 'package:flutter/cupertino.dart'; +import 'package:mensaappbackend/pages/pageDashboard.dart'; +import 'package:mensaappbackend/pages/pageLogin.dart'; +import 'package:mensaappbackend/pages/wrongLogin.dart'; + +class TimeProvider extends ChangeNotifier { + var selectedTime = 1; + + void setSelectedTime(var index) { + selectedTime = index; + notifyListeners(); + print(selectedTime); + } +}