diff --git a/lib/screens/detail_widget.dart b/lib/screens/detail_widget.dart index 7f723b3..94e004b 100644 --- a/lib/screens/detail_widget.dart +++ b/lib/screens/detail_widget.dart @@ -191,11 +191,7 @@ class Frame28 extends StatelessWidget { LostEvents(), Container( height: 20), - Image.asset( - 'assets/images/FooterFooter.png', // Pfad zum Bild - //height: 120, // Höhe des Bildes - width: 390, // Breite des Bildes - ),]), + Footer(),]), ), ]); return Scaffold( diff --git a/lib/screens/subheader_Datepicker.dart b/lib/screens/subheader_Datepicker.dart index 70d882b..988f61f 100644 --- a/lib/screens/subheader_Datepicker.dart +++ b/lib/screens/subheader_Datepicker.dart @@ -1,11 +1,11 @@ import 'package:flutter/material.dart'; import 'package:Emma_home/utils/helper_functions.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; class TimeButtonSection extends StatefulWidget { const TimeButtonSection({required this.onToggle, Key? key}) : super(key: key); final VoidCallback onToggle; - @override _TimeButtonSection createState() => _TimeButtonSection(); } @@ -50,7 +50,6 @@ class _TimeButtonSection extends State { _isToMorrowActive = !_isToMorrowActive; _isWEActive = false; }); - }, style: OutlinedButton.styleFrom( backgroundColor: _isToMorrowActive ? Colors.black : Colors.white, @@ -189,8 +188,6 @@ class HeaderSection extends StatelessWidget { } class EventCard2Section extends StatelessWidget { - - final String title; final String description; final String location; @@ -210,28 +207,29 @@ class EventCard2Section extends StatelessWidget { @override Widget build(BuildContext context) { return Container( - width: (screen_size.size.width-40), + width: (screen_size.size.width - 40), height: 107, margin: const EdgeInsets.fromLTRB(20.0, 0, 20.0, 20.0), decoration: BoxDecoration( - color: Colors.white, - borderRadius: BorderRadius.circular(10), - border: const Border( - left: BorderSide(width: 1, color: Color(0xFFBFBCBC)), - top: BorderSide(width: 1, color: Color(0xFFBFBCBC)), - right: BorderSide(color: Color(0xFFBFBCBC)), - bottom: BorderSide(color: Color(0xFFBFBCBC)), - ), - boxShadow: [ - BoxShadow( - color: color, //Color(0xFFF8AB14), - blurRadius: 0, - offset: const Offset(0, 10), - spreadRadius: 0, - ) - ],), + color: Colors.white, + borderRadius: BorderRadius.circular(10), + border: const Border( + left: BorderSide(width: 1, color: Color(0xFFBFBCBC)), + top: BorderSide(width: 1, color: Color(0xFFBFBCBC)), + right: BorderSide(color: Color(0xFFBFBCBC)), + bottom: BorderSide(color: Color(0xFFBFBCBC)), + ), + boxShadow: [ + BoxShadow( + color: color, //Color(0xFFF8AB14), + blurRadius: 0, + offset: const Offset(0, 10), + spreadRadius: 0, + ) + ], + ), child: Stack( - children: [ + children: [ Positioned( right: 0, top: 0, @@ -271,57 +269,58 @@ class EventCard2Section extends StatelessWidget { left: 12, top: 8, child: Column( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - shortenText(title, 30), - style: const TextStyle( - color: Color(0xFF0A0A0A), - fontSize: 18, - fontFamily: 'Inter', - fontWeight: FontWeight.w800, - //fontWeight: FontWeight.w400, - height: 1.5, - ), - ), - SizedBox( - width:(screen_size.size.width-40)-130, - height:24, - child:Text( - location, - style: const TextStyle( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + shortenText(title, 30), + style: const TextStyle( color: Color(0xFF0A0A0A), fontSize: 18, fontFamily: 'Inter', - fontWeight: FontWeight.w400, - //fontWeight: FontWeight.w800, - height: 1.2, + fontWeight: FontWeight.w800, + //fontWeight: FontWeight.w400, + height: 1.5, + ), + ), + SizedBox( + width: (screen_size.size.width - 40) - 130, + height: 24, + child: Text( + location, + style: const TextStyle( + color: Color(0xFF0A0A0A), + fontSize: 18, + fontFamily: 'Inter', + fontWeight: FontWeight.w400, + //fontWeight: FontWeight.w800, + height: 1.2, ), - ),), - Text.rich( - TextSpan( - text: 'Beginn: ', // Standard-Text - style: const TextStyle( - color: Color(0xFF0A0A0A), - fontSize: 12, - fontFamily: 'Inter', - height: 1.8, - fontWeight: FontWeight.w200, // Light weight - ), - children: [ - TextSpan( - text: start_time, // Variabler Text - style: const TextStyle( - fontWeight: FontWeight.w800, // Bold - ), - ), - ], - ), -), + ), + ), + Text.rich( + TextSpan( + text: 'Beginn: ', // Standard-Text + style: const TextStyle( + color: Color(0xFF0A0A0A), + fontSize: 12, + fontFamily: 'Inter', + height: 1.8, + fontWeight: FontWeight.w200, // Light weight + ), + children: [ + TextSpan( + text: start_time, // Variabler Text + style: const TextStyle( + fontWeight: FontWeight.w800, // Bold + ), + ), + ], + ), + ), - /* Row( + /* Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.center, @@ -353,12 +352,11 @@ class EventCard2Section extends StatelessWidget { ), ]), */ - - - ], - ),), + ], + ), + ), //Title - /* Positioned( + /* Positioned( //Title left: 92, top: 14, @@ -388,7 +386,7 @@ class EventCard2Section extends StatelessWidget { fontSize: 12, fontFamily: 'Inter', fontWeight: FontWeight.w200, - height: 16/12, + height: 16 / 12, ), ), ), @@ -414,7 +412,6 @@ class EventCard2Section extends StatelessWidget { ), )),*/ //Text Beginn - ], ), ); @@ -862,8 +859,8 @@ class TagSlider extends StatelessWidget { } class MusikHeader extends StatelessWidget { - final String name; // First variable - final String icon; // Second variable + final String name; // First variable + final String icon; // Second variable const MusikHeader({ super.key, @@ -873,60 +870,57 @@ class MusikHeader extends StatelessWidget { @override Widget build(BuildContext context) { - return Column( - children: [ - SizedBox( - //width: 390, - height: 35, - child: Row( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Align( + return Column(children: [ + SizedBox( + //width: 390, + height: 35, + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Align( alignment: Alignment.centerLeft, child: IconButton( - icon: const Icon(Icons.keyboard_arrow_left), - onPressed: () { - Navigator.pop(context); - }, + icon: const Icon(Icons.keyboard_arrow_left), + onPressed: () { + Navigator.pop(context); + }, ), ), - Align( + Align( alignment: Alignment.center, child: Row( children: [ - SizedBox( - width: 32, - height: 32, - child: Image.asset( - icon, - errorBuilder: (context, error, stackTrace) { - print('Error loading image: $error'); - return const Icon(Icons.error); - }, - ), ), - Text( - name, - style: TextStyle( - color: Color(0xFF171717), - fontSize: 20, - fontFamily: 'Inter', - fontWeight: FontWeight.w800, - height: 0, - ), + SizedBox( + width: 32, + height: 32, + child: Image.asset( + icon, + errorBuilder: (context, error, stackTrace) { + print('Error loading image: $error'); + return const Icon(Icons.error); + }, ), + ), + Text( + name, + style: TextStyle( + color: Color(0xFF171717), + fontSize: 20, + fontFamily: 'Inter', + fontWeight: FontWeight.w800, + height: 0, + ), + ), ], ), ), - const SizedBox(width: 89), - - - ], - ), - ), - ] - ); + const SizedBox(width: 89), + ], + ), + ), + ]); } } @@ -1014,7 +1008,8 @@ class CardGenre extends StatelessWidget { child: Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.start, children: [ const SizedBox( width: 83, @@ -1035,8 +1030,10 @@ class CardGenre extends StatelessWidget { height: 20, child: const Row( mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: + MainAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.center, children: [ SizedBox( width: 179, @@ -1047,20 +1044,24 @@ class CardGenre extends StatelessWidget { TextSpan( text: 'Start: ', style: TextStyle( - color: Color(0xFF0A0A0A), + color: + Color(0xFF0A0A0A), fontSize: 18, fontFamily: 'Inter', - fontWeight: FontWeight.w200, + fontWeight: + FontWeight.w200, height: 0.08, ), ), TextSpan( text: '20:30', style: TextStyle( - color: Color(0xFF0A0A0A), + color: + Color(0xFF0A0A0A), fontSize: 18, fontFamily: 'Inter', - fontWeight: FontWeight.w800, + fontWeight: + FontWeight.w800, height: 0.08, ), ), @@ -1114,9 +1115,11 @@ class CardGenre extends StatelessWidget { width: 32, height: 32, decoration: ShapeDecoration( - color: Colors.white.withOpacity(0.800000011920929), + color: Colors.white + .withOpacity(0.800000011920929), shape: const OvalBorder( - side: BorderSide(width: 1, color: Color(0xFFABA9A9)), + side: BorderSide( + width: 1, color: Color(0xFFABA9A9)), ), ), ), @@ -1146,7 +1149,6 @@ class CardGenre extends StatelessWidget { } } - class CardGenre_temp extends StatelessWidget { const CardGenre_temp({super.key}); @@ -1188,9 +1190,7 @@ class CardGenre_temp extends StatelessWidget { ), borderRadius: BorderRadius.circular(10), ), - shadows: const [ - - ], + shadows: const [], ), child: Row( mainAxisSize: MainAxisSize.min, @@ -1226,7 +1226,8 @@ class CardGenre_temp extends StatelessWidget { child: Row( mainAxisSize: MainAxisSize.min, mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.start, children: [ const SizedBox( width: 83, @@ -1247,8 +1248,10 @@ class CardGenre_temp extends StatelessWidget { height: 20, child: const Row( mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: + MainAxisAlignment.start, + crossAxisAlignment: + CrossAxisAlignment.center, children: [ SizedBox( width: 179, @@ -1259,20 +1262,24 @@ class CardGenre_temp extends StatelessWidget { TextSpan( text: 'Start: ', style: TextStyle( - color: Color(0xFF0A0A0A), + color: + Color(0xFF0A0A0A), fontSize: 18, fontFamily: 'Inter', - fontWeight: FontWeight.w200, + fontWeight: + FontWeight.w200, height: 0.08, ), ), TextSpan( text: '20:30', style: TextStyle( - color: Color(0xFF0A0A0A), + color: + Color(0xFF0A0A0A), fontSize: 18, fontFamily: 'Inter', - fontWeight: FontWeight.w800, + fontWeight: + FontWeight.w800, height: 0.08, ), ), @@ -1326,9 +1333,11 @@ class CardGenre_temp extends StatelessWidget { width: 32, height: 32, decoration: ShapeDecoration( - color: Colors.white.withOpacity(0.800000011920929), + color: Colors.white + .withOpacity(0.800000011920929), shape: const OvalBorder( - side: BorderSide(width: 1, color: Color(0xFFABA9A9)), + side: BorderSide( + width: 1, color: Color(0xFFABA9A9)), ), ), ), @@ -1516,9 +1525,11 @@ class Event_Card extends StatelessWidget { width: 32, height: 32, decoration: ShapeDecoration( - color: Colors.white.withOpacity(0.800000011920929), + color: + Colors.white.withOpacity(0.800000011920929), shape: const OvalBorder( - side: BorderSide(width: 1, color: Color(0xFFABA9A9)), + side: BorderSide( + width: 1, color: Color(0xFFABA9A9)), ), ), ), @@ -1545,12 +1556,11 @@ class Event_Card extends StatelessWidget { } } - class LostEvents extends StatelessWidget { @override Widget build(BuildContext context) { return Container( - child:Column( + child: Column( children: [ Container( width: 350, @@ -1623,7 +1633,8 @@ class LostEvents extends StatelessWidget { ), ), TextSpan( - text: ' werdet Host und stellt eure Events bei uns rein. ', + text: + ' werdet Host und stellt eure Events bei uns rein. ', style: TextStyle( color: Color(0xFF0A0A0A), fontSize: 16, @@ -1657,4 +1668,221 @@ class LostEvents extends StatelessWidget { ], )); } -} \ No newline at end of file +} + +class Footer extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + //width: 390, + //height: 90, + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 12), + clipBehavior: Clip.antiAlias, + decoration: BoxDecoration( + color: Color(0xFFF2F2F2), + border: Border( + left: BorderSide(color: Color(0xFF868686)), + top: BorderSide(width: 1, color: Color(0xFF868686)), + right: BorderSide(color: Color(0xFF868686)), + bottom: BorderSide(color: Color(0xFF868686)), + ), + ), + child: Column( + children: [ + Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SizedBox( + height: 30, + //width: 63, + child: IconButton( + icon: Image.asset('assets/images/logo.png'), + onPressed: () { + // Open drawer or perform action + }, + ), + ), + const SizedBox(width: 10), + Text( + '© 2024 Alle Rechte vorbehalten', + style: TextStyle( + color: Colors.black, + fontSize: 7, + fontFamily: 'Inter', + fontWeight: FontWeight.w400, + height: 0, + ), + ), + const SizedBox(width: 50), + SizedBox( + height: 20, + width: 20, + child: IconButton( + icon: 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 SizedBox(width: 10), + SizedBox( + height: 20, + width: 20, + child: IconButton( + icon: 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 SizedBox(width: 10), + SizedBox( + height: 20, + width: 25, + child: IconButton( + icon: 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 SizedBox(width: 10), + SizedBox( + height: 20, + width: 20, + child: IconButton( + icon: 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 SizedBox(width: 10), + ], + ), + Container(height: 10), + Row( + children: [ + Text( + ' About us', + style: TextStyle( + color: Colors.black, + fontSize: 12, + fontFamily: 'Inter', + fontWeight: FontWeight.w400, + height: 0, + ), + ), + const SizedBox(width: 10), + Container( + width: 8, + height: 8, + decoration: ShapeDecoration( + shape: OvalBorder(side: BorderSide(width: 1)), + ), + ), + const SizedBox(width: 10), + Text( + 'Impressum', + style: TextStyle( + color: Colors.black, + fontSize: 12, + fontFamily: 'Inter', + fontWeight: FontWeight.w400, + height: 0, + ), + ), + const SizedBox(width: 10), + Container( + width: 8, + height: 8, + decoration: ShapeDecoration( + shape: OvalBorder(side: BorderSide(width: 1)), + ), + ), + const SizedBox(width: 10), + Text( + 'Kontakt', + style: TextStyle( + color: Colors.black, + fontSize: 12, + fontFamily: 'Inter', + fontWeight: FontWeight.w400, + height: 0, + ), + ), + const SizedBox(width: 10), + Container( + width: 8, + height: 8, + decoration: ShapeDecoration( + shape: OvalBorder(side: BorderSide(width: 1)), + ), + ), + const SizedBox(width: 10), + Text( + 'Help Service', + style: TextStyle( + color: Colors.black, + fontSize: 12, + fontFamily: 'Inter', + fontWeight: FontWeight.w400, + height: 0, + ), + ), + ], + ), + Container(height: 10), + Row( + children: [ + Text( + 'Terms and conditions ', + style: TextStyle( + color: Colors.black, + fontSize: 12, + fontFamily: 'Inter', + fontWeight: FontWeight.w400, + height: 0, + ), + ), + const SizedBox(width: 20), + Container( + width: 8, + height: 8, + decoration: ShapeDecoration( + shape: OvalBorder(side: BorderSide(width: 1)), + ), + ), + const SizedBox(width: 20), + Text( + 'sponsered by: Start up Bavaria', + style: TextStyle( + color: Colors.black, + fontSize: 12, + fontFamily: 'Inter', + fontWeight: FontWeight.w400, + height: 0, + ), + ), + ], + ), + Container(height: 20), + ], + ), + ); + } +} diff --git a/pubspec.lock b/pubspec.lock index a68c31a..56efa56 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -192,6 +192,14 @@ packages: description: flutter source: sdk version: "0.0.0" + font_awesome_flutter: + dependency: "direct main" + description: + name: font_awesome_flutter + sha256: "275ff26905134bcb59417cf60ad979136f1f8257f2f449914b2c3e05bbb4cd6f" + url: "https://pub.dev" + source: hosted + version: "10.7.0" functions_client: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 3da5b5c..9699489 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -40,6 +40,7 @@ dependencies: image_picker: ^1.1.2 provider: ^6.0.5 flutter_dotenv: ^5.2.1 + font_awesome_flutter: ^10.1.0 dev_dependencies: