Optimierungen durch dart fix --apply und Ein bild wurde mal herausgenommen ahtte probleme bereitet

This commit is contained in:
Niklas 2024-11-30 12:17:48 +01:00
parent e71f803179
commit 315ee45015
7 changed files with 84 additions and 119 deletions

View File

@ -1,7 +1,6 @@
import 'package:flutter/material.dart';
import 'package:Emma_home/screens/home.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
import 'screens/MainScreen.dart';
import 'utils/data.dart';
import 'package:provider/provider.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
@ -44,11 +43,7 @@ Future<void> autoLogin() async {
email: dotenv.env['NEXT_PRIVATE_SUPABASE_APPUSER'] ?? 'default_url',
password: dotenv.env['NEXT_PRIVATE_SUPABASE_APPPWD'] ?? 'default_url',
);
if (error != null) {
print('Login fehlgeschlagen: ${error!}');
} else {
print('AppUser erfolgreich eingeloggt');
}
print('Login fehlgeschlagen: $error');
}
class MyApp extends StatelessWidget {
@ -70,7 +65,7 @@ class MyApp extends StatelessWidget {
secondary: const Color(0xff8DB646), // Your accent color
),
),
home: HomePage(),
home: const HomePage(),
//home: MainScreen(),
);
}

View File

@ -1,5 +1,4 @@
import 'package:flutter/material.dart';
import 'subheader_Datepicker.dart';
class MainScreen extends StatefulWidget {
const MainScreen({super.key});
@ -9,7 +8,7 @@ class MainScreen extends StatefulWidget {
}
class _MainScreenState extends State<MainScreen> with SingleTickerProviderStateMixin {
Widget _currentBody = HomeBody();
Widget _currentBody = const HomeBody();
void _changeBody(Widget newBody) {
setState(() {
@ -105,11 +104,11 @@ const SizedBox(
children: <Widget>[
IconButton(
icon: const Icon(Icons.home),
onPressed: () => _changeBody(HomeBody()),
onPressed: () => _changeBody(const HomeBody()),
),
IconButton(
icon: const Icon(Icons.settings),
onPressed: () => _changeBody(SettingsBody()),
onPressed: () => _changeBody(const SettingsBody()),
),
// Add more buttons as needed
],

View File

@ -144,8 +144,7 @@ class Event_Card_small extends StatelessWidget {
padding: const EdgeInsets.only(
left: 20.0), // Abstand von 16 Pixeln zum linken Rand
child: Text(
DateFormat('dd.MM.yyyy').format(DateTime.parse(startDate))
as String,
DateFormat('dd.MM.yyyy').format(DateTime.parse(startDate)),
style: const TextStyle(
color: Color(0xFF171717),
fontSize: 12,
@ -185,13 +184,13 @@ class Event_Card_small extends StatelessWidget {
),
],
);
}).toList(),
}),
SliverToBoxAdapter(
child: Column(children: [
LostEvents(),
const LostEvents(),
Container(height: 20),
Footer(),
const Footer(),
]),
),
]);

View File

@ -1,13 +1,9 @@
import 'package:flutter/material.dart';
import 'package:Emma_home/screens/details_db.dart';
import 'package:Emma_home/utils/data.dart';
import 'package:Emma_home/screens/subheader_Datepicker.dart';
import 'package:Emma_home/screens/detail_widget.dart';
import 'package:provider/provider.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:Emma_home/main.dart';
import 'package:Emma_home/utils/data.dart';
import 'dart:math';
class HomePage extends StatefulWidget {
const HomePage({super.key});
@ -31,15 +27,6 @@ class _HomePage extends State<HomePage> {
_fetchDataFuture = Categories.instance.updateCategoryAmount('Ingolstadt');
}
Future<List<Map<String, dynamic>>> _loadData() async {
final data = await supabase.from('events').select();
//get the id of the event
return data;
//Create a date entry and connect it with the event
// Überprüfe, ob der Insert erfolgreich war
}
//fetchGroupedEvents
Future<List<Map<String, dynamic>>> fetchGroupedEvents(String category) async {
try {
@ -124,11 +111,9 @@ class _HomePage extends State<HomePage> {
@override
Widget build(BuildContext context) {
var size = MediaQuery.of(context).size;
/*24 is for notification bar on Android*/
// ScrollController und Status-Variable
ScrollController _scrollController = ScrollController();
ScrollController scrollController = ScrollController();
// Verfügbarer Bereich auf dem Bildschirm
final screenWidth = MediaQuery.of(context).size.width;
@ -229,8 +214,8 @@ class _HomePage extends State<HomePage> {
Consumer<Categories>(builder: (context, singleCategories, child) {
return SingleChildScrollView(
physics: isScrollable
? AlwaysScrollableScrollPhysics()
: NeverScrollableScrollPhysics(),
? const AlwaysScrollableScrollPhysics()
: const NeverScrollableScrollPhysics(),
child: Column(
children: <Widget>[
//Header Container
@ -243,8 +228,8 @@ class _HomePage extends State<HomePage> {
onToggle: toggleExpanded), // Dein Button-Bereich
),
GridView.builder(
controller: _scrollController,
physics: NeverScrollableScrollPhysics(),
controller: scrollController,
physics: const NeverScrollableScrollPhysics(),
shrinkWrap:
true, // Damit der GridView korrekt in die Column passt
//physics: NeverScrollableScrollPhysics(), // Deaktiviert das Scrolling des GridView
@ -261,10 +246,6 @@ class _HomePage extends State<HomePage> {
padding: const EdgeInsets.all(6.0),
child: InkWell(
onTap: () async {
/* List<Map<String, dynamic>> events =
await _loadData();
List<Map<String, dynamic>> events2 = await fetchEvents(
singleCategories.categories[index].category);*/
final events = await fetchGroupedEvents(
singleCategories.categories[index].category);
Navigator.push(
@ -380,12 +361,7 @@ class _HomePage extends State<HomePage> {
Container(
height: 20,
),
Footer(),
/* Image.asset(
'assets/images/FooterFooter.png', // Pfad zum Bild
//height: 120, // Höhe des Bildes
width: 390, // Breite des Bildes
), */
const Footer(),
],
),
);
@ -400,7 +376,7 @@ class _HomePage extends State<HomePage> {
);
@override
void dispose() {
_scrollController.dispose();
scrollController.dispose();
super.dispose();
}
}

View File

@ -1,20 +1,14 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:Emma_home/screens/details_db.dart';
import 'package:Emma_home/utils/data.dart';
import 'package:Emma_home/screens/subheader_Datepicker.dart';
import 'package:Emma_home/screens/detail_widget.dart';
import 'package:provider/provider.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
import 'package:Emma_home/main.dart';
import 'package:Emma_home/utils/data.dart';
import 'dart:math';
import 'package:image_picker/image_picker.dart';
import 'package:intl/intl.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
class MissingEvent extends StatefulWidget {
const MissingEvent({super.key});
@override
_MissingEvent createState() => _MissingEvent();
}
@ -28,7 +22,7 @@ class _MissingEvent extends State<MissingEvent> {
/*24 is for notification bar on Android*/
// ScrollController und Status-Variable
ScrollController _scrollController = ScrollController();
ScrollController scrollController = ScrollController();
// Verfügbarer Bereich auf dem Bildschirm
final screenWidth = MediaQuery.of(context).size.width;
@ -60,10 +54,10 @@ class _MissingEvent extends State<MissingEvent> {
queryData = MediaQuery.of(context);
late File imageFile = File("");
bool isloaded = false;
final ImagePicker _picker = ImagePicker();
final ImagePicker picker = ImagePicker();
Future<void> pickImage() async {
final XFile? image = await _picker.pickImage(
final XFile? image = await picker.pickImage(
source: ImageSource.gallery,
// Add any desired options, such as image quality
//imageQuality: 100,
@ -113,7 +107,7 @@ class _MissingEvent extends State<MissingEvent> {
}
Future<void> captureImage() async {
final XFile? image = await _picker.pickImage(
final XFile? image = await picker.pickImage(
source: ImageSource.camera,
//imageQuality: 100,
);
@ -216,14 +210,14 @@ class _MissingEvent extends State<MissingEvent> {
);
var body = Stack(children: [
Container(
padding: EdgeInsets.all(22.0),
padding: const EdgeInsets.all(22.0),
width: double.infinity,
//height: 952,
//clipBehavior: Clip.antiAlias,
child: Column(
children: [
const SizedBox(height: 10),
Align(
const Align(
alignment: Alignment.centerLeft,
child: Text(
'Fehlendes Event bei uns?',
@ -243,7 +237,7 @@ class _MissingEvent extends State<MissingEvent> {
width: double.infinity,
height: 144,
child: RichText(
text: TextSpan(
text: const TextSpan(
text:
'Du hast unterwegs ein Event gesehen, welches noch nicht bei uns in der Liste steht? Schicke uns das Foto von dem Event zu. Wir werden diese, wenn nicht schon geschehen den Events hinzufügen. Danke für deine Unterstützung!',
style: TextStyle(
@ -263,9 +257,9 @@ class _MissingEvent extends State<MissingEvent> {
height: 200,
padding: const EdgeInsets.symmetric(horizontal: 70, vertical: 85),
decoration: ShapeDecoration(
color: Color(0xFFEDEDED),
color: const Color(0xFFEDEDED),
shape: RoundedRectangleBorder(
side: BorderSide(
side: const BorderSide(
width: 1,
strokeAlign: BorderSide.strokeAlignOutside,
),
@ -315,7 +309,7 @@ class _MissingEvent extends State<MissingEvent> {
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
child: Text(
child: const Text(
'Bild aufnehmen',
style: TextStyle(
color: Colors.black,
@ -326,7 +320,7 @@ class _MissingEvent extends State<MissingEvent> {
),
),
),
SizedBox(
const SizedBox(
width: 10,
),
Container(
@ -337,7 +331,7 @@ class _MissingEvent extends State<MissingEvent> {
clipBehavior: Clip.antiAlias,
decoration: ShapeDecoration(
shape: RoundedRectangleBorder(
side: BorderSide(width: 2),
side: const BorderSide(width: 2),
borderRadius: BorderRadius.circular(10),
),
),
@ -346,11 +340,11 @@ class _MissingEvent extends State<MissingEvent> {
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
SizedBox(
width: 23,
height: 20.70,
child: IconButton(
icon: FaIcon(FontAwesomeIcons.camera, size: 20),
icon: const FaIcon(FontAwesomeIcons.camera, size: 20),
onPressed: () {
// Füge hier die YouTube-Aktion hinzu
captureImage();
@ -358,7 +352,7 @@ class _MissingEvent extends State<MissingEvent> {
padding: EdgeInsets
.zero, // Entfernt das Padding des IconButton
constraints:
BoxConstraints(), // Entfernt die Standardbeschränkungen
const BoxConstraints(), // Entfernt die Standardbeschränkungen
),
),
],
@ -367,7 +361,7 @@ class _MissingEvent extends State<MissingEvent> {
],
),
const SizedBox(height: 10),
Row(
const Row(
children: [
/* Container(
width: 160,
@ -479,20 +473,20 @@ class _MissingEvent extends State<MissingEvent> {
// AnimatedOpacity für das Overlay
AnimatedOpacity(
opacity: isUploading ? 1.0 : 0.0, // Sichtbarkeit steuern
duration: Duration(milliseconds: 300), // Dauer der Animation
duration: const Duration(milliseconds: 300), // Dauer der Animation
curve: Curves.easeInOut, // Animationskurve
child: isUploading
? Container(
width: MediaQuery.of(context).size.width, // Volle Breite
height: MediaQuery.of(context).size.height, // Volle Höhe
color: Colors.black.withOpacity(0.5), // Halbtransparentes Grau
child: Center(
child: const Center(
child: CircularProgressIndicator(
color: Colors.white,
),
),
)
: SizedBox.shrink(), // Nichts anzeigen, wenn nicht sichtbar
: const SizedBox.shrink(), // Nichts anzeigen, wenn nicht sichtbar
),
]);

View File

@ -7,7 +7,7 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:Emma_home/screens/missing_event.dart';
class TimeButtonSection extends StatefulWidget {
const TimeButtonSection({required this.onToggle, Key? key}) : super(key: key);
const TimeButtonSection({required this.onToggle, super.key});
final VoidCallback onToggle;
@override
@ -44,7 +44,7 @@ class _TimeButtonSection extends State<TimeButtonSection> {
borderRadius: BorderRadius.circular(10.0),
),
),
child: Text('Heute'),
child: const Text('Heute'),
),
// Button "Morgen" (outlined style)
OutlinedButton(
@ -66,7 +66,7 @@ class _TimeButtonSection extends State<TimeButtonSection> {
borderRadius: BorderRadius.circular(10.0),
),
),
child: Text('Morgen'),
child: const Text('Morgen'),
),
// Button "Wochenende" (outlined style)
OutlinedButton(
@ -88,7 +88,7 @@ class _TimeButtonSection extends State<TimeButtonSection> {
borderRadius: BorderRadius.circular(10.0),
),
),
child: Text('Wochenende'),
child: const Text('Wochenende'),
),
// Button with calendar icon
IconButton(
@ -218,7 +218,7 @@ class EventCard2Section extends StatelessWidget {
'assets/images/Event_Images/image01.png',
'assets/images/Event_Images/image02.jpg',
'assets/images/Event_Images/image03.jpg',
'assets/images/Event_Images/image04.jpg',
//'assets/images/Event_Images/image04.jpg',
'assets/images/Event_Images/image05.jpg',
];
final randomIndex = Random().nextInt(images.length);
@ -944,7 +944,7 @@ class MusikHeader extends StatelessWidget {
),
Text(
name,
style: TextStyle(
style: const TextStyle(
color: Color(0xFF171717),
fontSize: 20,
fontFamily: 'Inter',
@ -1037,7 +1037,7 @@ class CardGenre extends StatelessWidget {
),
const SizedBox(height: 4),
Container(
child: Column(
child: const Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
@ -1050,7 +1050,7 @@ class CardGenre extends StatelessWidget {
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
const SizedBox(
SizedBox(
width: 83,
height: 24,
child: Text(
@ -1064,10 +1064,10 @@ class CardGenre extends StatelessWidget {
),
),
),
const SizedBox(width: 24),
SizedBox(width: 24),
SizedBox(
height: 20,
child: const Row(
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.start,
@ -1255,7 +1255,7 @@ class CardGenre_temp extends StatelessWidget {
),
const SizedBox(height: 4),
Container(
child: Column(
child: const Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
@ -1268,7 +1268,7 @@ class CardGenre_temp extends StatelessWidget {
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
const SizedBox(
SizedBox(
width: 83,
height: 24,
child: Text(
@ -1282,10 +1282,10 @@ class CardGenre_temp extends StatelessWidget {
),
),
),
const SizedBox(width: 24),
SizedBox(width: 24),
SizedBox(
height: 20,
child: const Row(
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment:
MainAxisAlignment.start,
@ -1448,10 +1448,10 @@ class Event_Card extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
const SizedBox(
width: double.infinity,
height: 48,
child: const Column(
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
@ -1596,6 +1596,8 @@ class Event_Card extends StatelessWidget {
}
class LostEvents extends StatelessWidget {
const LostEvents({super.key});
@override
Widget build(BuildContext context) {
return InkWell(
@ -1604,20 +1606,20 @@ class LostEvents extends StatelessWidget {
context,
MaterialPageRoute(
builder: (context) =>
MissingEvent()), // Die Seite, zu der du navigieren möchtest
const MissingEvent()), // Die Seite, zu der du navigieren möchtest
);
},
child: Container(
width: 350,
//height: 148,
padding: EdgeInsets.all(15.0),
padding: const EdgeInsets.all(15.0),
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
side: BorderSide(width: 2),
side: const BorderSide(width: 2),
borderRadius: BorderRadius.circular(8),
),
shadows: [
shadows: const [
BoxShadow(
color: Color(0xFF000000),
blurRadius: 0,
@ -1626,7 +1628,7 @@ class LostEvents extends StatelessWidget {
)
],
),
child: Column(
child: const Column(
children: [
Align(
alignment: Alignment.centerLeft,
@ -1641,7 +1643,7 @@ class LostEvents extends StatelessWidget {
),
),
),
const SizedBox(height: 10),
SizedBox(height: 10),
SizedBox(
width: 317,
child: Text.rich(
@ -1682,7 +1684,7 @@ class LostEvents extends StatelessWidget {
),
),
),
const SizedBox(height: 15),
SizedBox(height: 15),
Align(
alignment: Alignment.centerRight,
child: Text(
@ -1703,6 +1705,8 @@ class LostEvents extends StatelessWidget {
}
class Footer extends StatelessWidget {
const Footer({super.key});
@override
Widget build(BuildContext context) {
return Container(
@ -1711,7 +1715,7 @@ class Footer extends StatelessWidget {
//height: 90,
padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 5),
clipBehavior: Clip.antiAlias,
decoration: BoxDecoration(
decoration: const BoxDecoration(
color: Color(0xFFF2F2F2),
border: Border(
left: BorderSide(color: Color(0xFF868686)),
@ -1738,7 +1742,7 @@ class Footer extends StatelessWidget {
),
),
const SizedBox(width: 10),
Text(
const Text(
'© 2024 Alle Rechte vorbehalten',
style: TextStyle(
color: Colors.black,
@ -1753,56 +1757,56 @@ class Footer extends StatelessWidget {
height: 20,
width: 20,
child: IconButton(
icon: FaIcon(FontAwesomeIcons.instagram, size: 20),
icon: const FaIcon(FontAwesomeIcons.instagram, size: 20),
onPressed: () {
// Füge hier die YouTube-Aktion hinzu
},
padding:
EdgeInsets.zero, // Entfernt das Padding des IconButton
constraints:
BoxConstraints(), // Entfernt die Standardbeschränkungen
const BoxConstraints(), // Entfernt die Standardbeschränkungen
)),
const SizedBox(width: 10),
SizedBox(
height: 20,
width: 20,
child: IconButton(
icon: FaIcon(FontAwesomeIcons.tiktok, size: 20),
icon: const FaIcon(FontAwesomeIcons.tiktok, size: 20),
onPressed: () {
// Füge hier die YouTube-Aktion hinzu
},
padding:
EdgeInsets.zero, // Entfernt das Padding des IconButton
constraints:
BoxConstraints(), // Entfernt die Standardbeschränkungen
const BoxConstraints(), // Entfernt die Standardbeschränkungen
)),
const SizedBox(width: 10),
SizedBox(
height: 20,
width: 25,
child: IconButton(
icon: FaIcon(FontAwesomeIcons.youtube, size: 20),
icon: const FaIcon(FontAwesomeIcons.youtube, size: 20),
onPressed: () {
// Füge hier die YouTube-Aktion hinzu
},
padding:
EdgeInsets.zero, // Entfernt das Padding des IconButton
constraints:
BoxConstraints(), // Entfernt die Standardbeschränkungen
const BoxConstraints(), // Entfernt die Standardbeschränkungen
)),
const SizedBox(width: 10),
SizedBox(
height: 20,
width: 20,
child: IconButton(
icon: FaIcon(FontAwesomeIcons.facebook, size: 20),
icon: const FaIcon(FontAwesomeIcons.facebook, size: 20),
onPressed: () {
// Füge hier die YouTube-Aktion hinzu
},
padding:
EdgeInsets.zero, // Entfernt das Padding des IconButton
constraints:
BoxConstraints(), // Entfernt die Standardbeschränkungen
const BoxConstraints(), // Entfernt die Standardbeschränkungen
)),
const SizedBox(width: 10),
],
@ -1813,7 +1817,7 @@ class Footer extends StatelessWidget {
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
const Text(
' About us',
style: TextStyle(
color: Colors.black,
@ -1827,13 +1831,13 @@ class Footer extends StatelessWidget {
Container(
width: 3,
height: 3,
decoration: ShapeDecoration(
decoration: const ShapeDecoration(
color: Colors.black, // Schwarze Füllfarbe
shape: OvalBorder(side: BorderSide(width: 1)),
),
),
const SizedBox(width: 10),
Text(
const Text(
'Impressum',
style: TextStyle(
color: Colors.black,
@ -1847,13 +1851,13 @@ class Footer extends StatelessWidget {
Container(
width: 3,
height: 3,
decoration: ShapeDecoration(
decoration: const ShapeDecoration(
color: Colors.black, // Schwarze Füllfarbe
shape: OvalBorder(side: BorderSide(width: 1)),
),
),
const SizedBox(width: 10),
Text(
const Text(
'Kontakt',
style: TextStyle(
color: Colors.black,
@ -1867,13 +1871,13 @@ class Footer extends StatelessWidget {
Container(
width: 3,
height: 3,
decoration: ShapeDecoration(
decoration: const ShapeDecoration(
color: Colors.black, // Schwarze Füllfarbe
shape: OvalBorder(side: BorderSide(width: 1)),
),
),
const SizedBox(width: 10),
Text(
const Text(
'Help Service',
style: TextStyle(
color: Colors.black,
@ -1891,7 +1895,7 @@ class Footer extends StatelessWidget {
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
const Text(
'Terms and conditions ',
style: TextStyle(
color: Colors.black,
@ -1905,13 +1909,13 @@ class Footer extends StatelessWidget {
Container(
width: 3,
height: 3,
decoration: ShapeDecoration(
decoration: const ShapeDecoration(
color: Colors.black, // Schwarze Füllfarbe
shape: OvalBorder(side: BorderSide(width: 1)),
),
),
const SizedBox(width: 20),
Text(
const Text(
'sponsered by: In4Event',
style: TextStyle(
color: Colors.black,

View File

@ -4,8 +4,6 @@ import 'package:flutter/material.dart';
import 'package:Emma_home/utils/class.dart';
//import 'dart:convert';
import 'package:Emma_home/main.dart';
import 'package:intl/intl.dart' as intl;
import 'package:supabase_flutter/supabase_flutter.dart';
const Duration fakeAPIDuration = Duration(milliseconds: 50);
const Duration debounceDuration = Duration(milliseconds: 50);