From 1b44798ef029cac7177a87c432c419a19e0c294e Mon Sep 17 00:00:00 2001 From: Niklas Date: Sun, 15 Sep 2024 22:24:51 +0200 Subject: [PATCH] Detailpage updated aber noch nicht automatisch. --- assets/images/Vector01.png | Bin 0 -> 21056 bytes ios/Podfile.lock | 8 +- lib/screens/detail_widget.dart | 597 ++++++++++++++++++++++++++ lib/screens/details_db.dart | 3 + lib/screens/home copy.dart | 244 +++++++++++ lib/screens/home.dart | 131 ++---- lib/screens/subheader_Datepicker.dart | 87 ++++ 7 files changed, 966 insertions(+), 104 deletions(-) create mode 100644 assets/images/Vector01.png create mode 100644 lib/screens/detail_widget.dart create mode 100644 lib/screens/home copy.dart diff --git a/assets/images/Vector01.png b/assets/images/Vector01.png new file mode 100644 index 0000000000000000000000000000000000000000..78abcc3ad7e0e55ae019c8d4117f3df7de905f7e GIT binary patch literal 21056 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 LNkvXXu0mjfDpRsV literal 0 HcmV?d00001 diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 7dc59b0..9dff2ee 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -39,10 +39,10 @@ SPEC CHECKSUMS: app_links: e70ca16b4b0f88253b3b3660200d4a10b4ea9795 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1 - path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c - shared_preferences_foundation: b4c3b4cddf1c21f02770737f147a3f5da9d39695 - url_launcher_ios: 6116280ddcfe98ab8820085d8d76ae7449447586 + path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46 + shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 + url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796 -COCOAPODS: 1.14.3 +COCOAPODS: 1.15.2 diff --git a/lib/screens/detail_widget.dart b/lib/screens/detail_widget.dart new file mode 100644 index 0000000..43b7704 --- /dev/null +++ b/lib/screens/detail_widget.dart @@ -0,0 +1,597 @@ +import 'package:flutter/material.dart'; +import 'package:learn_project/screens/subheader_Datepicker.dart'; + + +class Frame28 extends StatelessWidget { + @override + Widget build(BuildContext context) { + var body = SafeArea( + child: Column( + children: [ + //Header Container + HeaderSection(), + Container( + height: 35, + padding: const EdgeInsets.all(0), + child: ButtonSection(), // Dein Button-Bereich + ), + Container(height: 10,), + Column( + children: [ + Container( + width: 380, + //height: 259, + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // TODO: muss noch angepasst werden jedes mal wenn ein neuer Tag ist wieder diesen Text anzeigen + Text( + 'Heute', + style: TextStyle( + color: Color(0xFF171717), + fontSize: 12, + fontFamily: 'Inter', + fontWeight: FontWeight.w600, + height: 0, + ), + ), + //Kurze Zwischenbereich zum trennen + const SizedBox(height: 4), + + Container( + width: 379, + height: 120, + child: Stack( + children: [ + Positioned( + left: 0, + top: 0, + child: Container( + width: 360, + height: 110, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(10), + border: 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(0xFFF8AB14), + blurRadius: 0, + offset: Offset(0, 10), + spreadRadius: 0, + ) + ], + ), + ), + ), + Positioned( + left: 230, + top: 1, + child: Image.asset( + 'assets/images/Vector01.png', // Pfad zum Bild + height: 110, // Höhe des Bildes + width: 130, // Breite des Bildes + ), + ), + Positioned( + right: 30, + top: 12, + child: Container( + width: 32, + height: 32, + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: 32, + height: 32, + decoration: BoxDecoration( + color: Color.fromARGB(196, 171, 170, 170), // Hintergrundfarbe des Buttons + shape: BoxShape.circle, // Runde Form + ), + child: IconButton( + padding: EdgeInsets.zero, // Entfernt zusätzlichen Abstand + icon: Icon(Icons.bookmark_border_outlined), + color: Colors.white, // Icon-Farbe + iconSize: 16, // Größe des Icons + onPressed: () { + // Aktion beim Drücken des Buttons + }, + ), + ), + ], + ), + ), + ), + + Positioned( + left: 15, + top: 14, + child: SizedBox( + //width: 55, + //height: 24, + child: Text( + 'Suxul', + style: TextStyle( + color: Color(0xFF0A0A0A), + fontSize: 18, + fontFamily: 'Inter', + fontWeight: FontWeight.w800, + height: 0, + ), + ), + ), + ), + Positioned( + left: 92, + top: 14, + child: Text( + 'Weiberfasching', + style: TextStyle( + color: Color(0xFF0A0A0A), + fontSize: 18, + fontFamily: 'Inter', + fontWeight: FontWeight.w400, + height: 0, + ), + ), + ), + Positioned( + left: 15, + top: 90, + child: SizedBox( + //width: 196, + //height: 15, + child: Text( + 'Eintritt: Bis 21 Uhr frei', + style: TextStyle( + color: Color(0xFF0A0A0A), + fontSize: 12, + fontFamily: 'Inter', + fontWeight: FontWeight.w400, + height: 0, + ), + ), + ), + ), + Positioned( + left: 15, + top: 70, + child: SizedBox( + width: 72.79, + height: 44.40, + child: Text.rich( + TextSpan( + children: [ + TextSpan( + text: '20:30', + style: TextStyle( + color: Color(0xFF0A0A0A), + fontSize: 18, + fontFamily: 'Inter', + fontWeight: FontWeight.w800, + height: 0.06, + ), + ), + ])))), + Positioned( + left: 15, + top: 45, + child: SizedBox( + width: 72.79, + height: 44.40, + child: Text.rich( + TextSpan( + children: [ + TextSpan( + text: 'Beginn\n', + style: TextStyle( + color: Color(0xFF0A0A0A), + fontSize: 12, + fontFamily: 'Inter', + fontWeight: FontWeight.w200, + height: 0.14, + ), + ), + ], + ), + ), + ), + ), + ], + ), + ), + const SizedBox(height: 20), + Container( + width: 379, + height: 120, + child: Stack( + children: [ + Positioned( + left: 0, + top: 0, + child: Container( + width: 360, + height: 110, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(10), + border: 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(0xFFF8AB14), + blurRadius: 0, + offset: Offset(0, 10), + spreadRadius: 0, + ) + ], + ), + ), + ), + Positioned( + left: 230, + top: 1, + child: Image.asset( + 'assets/images/Vector01.png', // Pfad zum Bild + height: 110, // Höhe des Bildes + width: 130, // Breite des Bildes + ), + ), + Positioned( + right: 30, + top: 12, + child: Container( + width: 32, + height: 32, + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: 32, + height: 32, + decoration: BoxDecoration( + color: Color.fromARGB(196, 171, 170, 170), // Hintergrundfarbe des Buttons + shape: BoxShape.circle, // Runde Form + ), + child: IconButton( + padding: EdgeInsets.zero, // Entfernt zusätzlichen Abstand + icon: Icon(Icons.bookmark_border_outlined), + color: Colors.white, // Icon-Farbe + iconSize: 16, // Größe des Icons + onPressed: () { + // Aktion beim Drücken des Buttons + }, + ), + ), + ], + ), + ), + ), + + Positioned( + left: 15, + top: 14, + child: SizedBox( + //width: 55, + //height: 24, + child: Text( + 'Suxul', + style: TextStyle( + color: Color(0xFF0A0A0A), + fontSize: 18, + fontFamily: 'Inter', + fontWeight: FontWeight.w800, + height: 0, + ), + ), + ), + ), + Positioned( + left: 92, + top: 14, + child: Text( + 'Weiberfasching', + style: TextStyle( + color: Color(0xFF0A0A0A), + fontSize: 18, + fontFamily: 'Inter', + fontWeight: FontWeight.w400, + height: 0, + ), + ), + ), + Positioned( + left: 15, + top: 90, + child: SizedBox( + //width: 196, + //height: 15, + child: Text( + 'Eintritt: Bis 21 Uhr frei', + style: TextStyle( + color: Color(0xFF0A0A0A), + fontSize: 12, + fontFamily: 'Inter', + fontWeight: FontWeight.w400, + height: 0, + ), + ), + ), + ), + Positioned( + left: 15, + top: 70, + child: SizedBox( + width: 72.79, + height: 44.40, + child: Text.rich( + TextSpan( + children: [ + TextSpan( + text: '20:30', + style: TextStyle( + color: Color(0xFF0A0A0A), + fontSize: 18, + fontFamily: 'Inter', + fontWeight: FontWeight.w800, + height: 0.06, + ), + ), + ])))), + Positioned( + left: 15, + top: 45, + child: SizedBox( + width: 72.79, + height: 44.40, + child: Text.rich( + TextSpan( + children: [ + TextSpan( + text: 'Beginn\n', + style: TextStyle( + color: Color(0xFF0A0A0A), + fontSize: 12, + fontFamily: 'Inter', + fontWeight: FontWeight.w200, + height: 0.14, + ), + ), + ], + ), + ), + ), + ), + ], + ), + ), + + ], + ), + ), + const SizedBox(height: 20), + Container( + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // TODO: muss noch angepasst werden jedes mal wenn ein neuer Tag ist wieder diesen Text anzeigen + Text( + 'Morgen', + style: TextStyle( + color: Color(0xFF171717), + fontSize: 12, + fontFamily: 'Inter', + fontWeight: FontWeight.w600, + height: 0, + ), + ), + //Kurze Zwischenbereich zum trennen + const SizedBox(height: 4), + + Container( + width: 379, + height: 120, + child: Stack( + children: [ + Positioned( + left: 0, + top: 0, + child: Container( + width: 360, + height: 110, + decoration: BoxDecoration( + color: Colors.white, + borderRadius: BorderRadius.circular(10), + border: 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(0xFFF8AB14), + blurRadius: 0, + offset: Offset(0, 10), + spreadRadius: 0, + ) + ], + ), + ), + ), + Positioned( + left: 230, + top: 1, + child: Image.asset( + 'assets/images/Vector01.png', // Pfad zum Bild + height: 110, // Höhe des Bildes + width: 130, // Breite des Bildes + ), + ), + Positioned( + right: 30, + top: 12, + child: Container( + width: 32, + height: 32, + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: 32, + height: 32, + decoration: BoxDecoration( + color: Color.fromARGB(196, 171, 170, 170), // Hintergrundfarbe des Buttons + shape: BoxShape.circle, // Runde Form + ), + child: IconButton( + padding: EdgeInsets.zero, // Entfernt zusätzlichen Abstand + icon: Icon(Icons.bookmark_border_outlined), + color: Colors.white, // Icon-Farbe + iconSize: 16, // Größe des Icons + onPressed: () { + // Aktion beim Drücken des Buttons + }, + ), + ), + ], + ), + ), + ), + + Positioned( + left: 15, + top: 14, + child: SizedBox( + //width: 55, + //height: 24, + child: Text( + 'Suxul', + style: TextStyle( + color: Color(0xFF0A0A0A), + fontSize: 18, + fontFamily: 'Inter', + fontWeight: FontWeight.w800, + height: 0, + ), + ), + ), + ), + Positioned( + left: 92, + top: 14, + child: Text( + 'Weiberfasching', + style: TextStyle( + color: Color(0xFF0A0A0A), + fontSize: 18, + fontFamily: 'Inter', + fontWeight: FontWeight.w400, + height: 0, + ), + ), + ), + Positioned( + left: 15, + top: 90, + child: SizedBox( + //width: 196, + //height: 15, + child: Text( + 'Eintritt: Bis 21 Uhr frei', + style: TextStyle( + color: Color(0xFF0A0A0A), + fontSize: 12, + fontFamily: 'Inter', + fontWeight: FontWeight.w400, + height: 0, + ), + ), + ), + ), + Positioned( + left: 15, + top: 70, + child: SizedBox( + width: 72.79, + height: 44.40, + child: Text.rich( + TextSpan( + children: [ + TextSpan( + text: '20:30', + style: TextStyle( + color: Color(0xFF0A0A0A), + fontSize: 18, + fontFamily: 'Inter', + fontWeight: FontWeight.w800, + height: 0.06, + ), + ), + ])))), + Positioned( + left: 15, + top: 45, + child: SizedBox( + width: 72.79, + height: 44.40, + child: Text.rich( + TextSpan( + children: [ + TextSpan( + text: 'Beginn\n', + style: TextStyle( + color: Color(0xFF0A0A0A), + fontSize: 12, + fontFamily: 'Inter', + fontWeight: FontWeight.w200, + height: 0.14, + ), + ), + ], + ), + ), + ), + ), + ], + ), + ), + ], + ), + ), + ], + ), + ), + ], + )],),); + return Scaffold(backgroundColor: Colors.white, + body: body, + ); + } +} \ No newline at end of file diff --git a/lib/screens/details_db.dart b/lib/screens/details_db.dart index c3b6978..96a1323 100644 --- a/lib/screens/details_db.dart +++ b/lib/screens/details_db.dart @@ -12,6 +12,9 @@ class DetailsPage extends StatelessWidget { final _future2 = Supabase.instance.client .from('events') .select(); + // 1. Daten anahdn von Filter einstellungen abrufen + // 2. Frontend asynchron diesbezüglich aufbauen + // 3. testen ob durchs scrollen daten nachgeladen werden können? return Scaffold( body: FutureBuilder( diff --git a/lib/screens/home copy.dart b/lib/screens/home copy.dart new file mode 100644 index 0000000..988d46f --- /dev/null +++ b/lib/screens/home copy.dart @@ -0,0 +1,244 @@ +import 'package:flutter/material.dart'; +import 'package:learn_project/screens/details_db.dart'; +import 'package:learn_project/utils/data.dart'; +import 'package:learn_project/screens/subheader_Datepicker.dart'; + +class HomePage extends StatelessWidget { + const HomePage({super.key}); + + @override + Widget build(BuildContext context) { + var body = SafeArea( + child: Column( + children: [ + //Header Container + HeaderSection(), + + //Body Container + Expanded( + child: NestedScrollView( + headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) { + return [ + SliverToBoxAdapter( + child: Container( + height: 35, + padding: const EdgeInsets.all(0), + child: ButtonSection(), // Dein Button-Bereich + ), + ), + ]; + }, + body:Column( + children:[ + GridView.builder( + shrinkWrap: true, // Damit der GridView korrekt in die Column passt + //physics: NeverScrollableScrollPhysics(), // Deaktiviert das Scrolling des GridView + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, // Anzahl der Spalten im Grid + ), + itemCount: Data.recipes.length, // Anzahl der Elemente im Grid + itemBuilder: (BuildContext context, int index) { + return Padding( + padding: const EdgeInsets.all(6.0), + child: InkWell( + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => DetailsPage( + //recipe: Data.recipes[index], + ))); + }, + child: Card( + color: Color.fromARGB(255, 249, 171, 21), + //color: Color.fromARGB(255, 253, 73, 73), //FD4949 //Nachtleben + //color: Color.fromARGB(255, 80, 168, 250), //50A8FA//Kunst + //color: Color.fromARGB(255, 80, 240, 250), //50F0FA //Sport + //color: Color.fromARGB(255, 130, 73, 253), //8249FD //Gesundheit + //color: Color.fromARGB(255, 253, 73, 73), //FD4949//Essen + //color: Color.fromARGB(255, 255, 0, 199), //FF00C7//Soziales + //color: Color.fromARGB(255, 66, 255, 0), //42FF00//Familie + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(6.0), + ), + child: Container( + width: MediaQuery.of(context).size.width / 2.5, + height: 20, + child: Column( + children: [ + Expanded( + child: ClipRRect( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(6.0), + topRight: Radius.circular(6.0), + ), + child: Hero( + tag: Data.recipes[index].id, + child: FadeInImage( + image: AssetImage( + Data.recipes[index].imageUrl, + ), + fit: BoxFit.cover, + placeholder: AssetImage( + 'assets/images/loading.gif', ), + ), + ), + ), + ), + Text( + Data.recipes[index].title, + style: TextStyle( + color: Colors.white, + fontSize: 20, + fontWeight: FontWeight.bold), + ), + Padding( + padding: const EdgeInsets.all(1.0), + ), + ], + ), + ), + ), + ), + ); + }, + ), + Image.asset( + 'assets/images/FooterFooter.png', // Pfad zum Bild + height: 127, // Höhe des Bildes + width: 390, // Breite des Bildes + ), + ], + ), + ), + ), + + + /* Expanded( + child: Column( + children:[ + Container( + padding: const EdgeInsets.fromLTRB(0, 0, 0, 0), + height: 35, + child: ButtonSection(), + ), + Expanded( + child:GridView.builder( + shrinkWrap: false, + itemCount: Data.recipes.length, + gridDelegate: + const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2), + itemBuilder: (BuildContext context, int index) { + return Padding( + padding: const EdgeInsets.all(6.0), + child: InkWell( + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => DetailsPage( + //recipe: Data.recipes[index], + ))); + }, + child: Card( + color: Color.fromARGB(255, 249, 171, 21), + //color: Color.fromARGB(255, 253, 73, 73), //FD4949 //Nachtleben + //color: Color.fromARGB(255, 80, 168, 250), //50A8FA//Kunst + //color: Color.fromARGB(255, 80, 240, 250), //50F0FA //Sport + //color: Color.fromARGB(255, 130, 73, 253), //8249FD //Gesundheit + //color: Color.fromARGB(255, 253, 73, 73), //FD4949//Essen + //color: Color.fromARGB(255, 255, 0, 199), //FF00C7//Soziales + //color: Color.fromARGB(255, 66, 255, 0), //42FF00//Familie + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(6.0), + ), + child: Container( + width: MediaQuery.of(context).size.width / 2, + height: 50, + child: Column( + children: [ + Expanded( + child: ClipRRect( + borderRadius: BorderRadius.only( + topLeft: Radius.circular(6.0), + topRight: Radius.circular(6.0), + ), + child: Hero( + tag: Data.recipes[index].id, + child: FadeInImage( + image: AssetImage( + Data.recipes[index].imageUrl), + fit: BoxFit.cover, + placeholder: AssetImage( + 'assets/images/loading.gif'), + ), + ), + ), + ), + Text( + Data.recipes[index].title, + style: TextStyle( + color: Colors.white, + fontSize: 20, + fontWeight: FontWeight.bold), + ), + Padding( + padding: const EdgeInsets.all(2.0), + ), + ], + ), + ), + ), + ), + ); + }), + ),Image.asset( + 'assets/images/FooterFooter.png', // Pfad zum Bild + height: 127, // Höhe des Bildes + width: 390, // Breite des Bildes + ),], + + ), + + ), */ + + + + //Footer Container + //Here you will get unexpected behaviour when keyboard pops-up. + //So its better to use `bottomNavigationBar` to avoid this. + /* Container( + padding: const EdgeInsets.all(8.0), + color: Colors.white, + alignment: Alignment.center, + child: + Image.asset( + 'assets/images/FooterFooter.png', // Pfad zum Bild + height: 127, // Höhe des Bildes + width: 390, // Breite des Bildes + ), + ), */ + ], + ), + ); + + return Scaffold( + /* appBar: AppBar( + centerTitle: true, + title: Text('Recipes'), + titleTextStyle: TextStyle( + color: Colors.white, fontWeight: FontWeight.bold, fontSize: 20), + backgroundColor: Color(0xff263341), + actions: [ + IconButton( + icon: Icon(Icons.search), + onPressed: () {}, + ) + ], + ), */ + backgroundColor: Colors.white, + body: body, + ); + } +} diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 384f897..90b97b5 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:learn_project/screens/details_db.dart'; import 'package:learn_project/utils/data.dart'; import 'package:learn_project/screens/subheader_Datepicker.dart'; - +import 'package:learn_project/screens/detail_widget.dart'; class HomePage extends StatelessWidget { const HomePage({super.key}); @@ -12,101 +12,25 @@ class HomePage extends StatelessWidget { child: Column( children: [ //Header Container - Container( - padding: const EdgeInsets.fromLTRB(5, 10, 5, 5), - height: 80, - color: Colors.white, - alignment: Alignment.bottomLeft, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const SizedBox(height: 10), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - SizedBox( - height: 50, //height of button - //width of button - child: IconButton( - icon: Image.asset('assets/images/logo.png'), - onPressed: () {}, - ), - ), - const SizedBox( - //width of button - width: 10, - ), - SizedBox( - height: 10, //height of button - width: 20, //width of button - child: Icon(Icons.keyboard_arrow_down), - ), - const SizedBox( - //width of button - width: 10, - ), - SizedBox( - width: 100.0, - child: TextField( - controller: TextEditingController(text: "Ingolstadt"), - decoration: InputDecoration( - border: UnderlineInputBorder(), - ), - ), - ), - // const SizedBox( - // //width of button - // width: 40, - // ), - Spacer(), - SizedBox( - height: 41, //height of button - //width of button - child: IconButton( - icon: const Icon(Icons.search), - onPressed: () {}, - ), - ), - const SizedBox( - height: 40, - child: VerticalDivider( - thickness: 1, - width: 20, - color: Colors.black, - ), - ), - SizedBox( - height: 50, //height of button - //width of button - child: IconButton( - icon: Image.asset('assets/images/Login.png'), - onPressed: () {}, - ), - ), - ]), - const Divider( - height: 1, - thickness: 1, - indent: 0, - endIndent: 0, - color: Colors.black, - ), - - ], - ), - ), + HeaderSection(), //Body Container Expanded( - child: SingleChildScrollView( - child: Column( - children: [ - Container( - padding: const EdgeInsets.all(0), - height: 35, - child: ButtonSection(), - ), - GridView.builder( + child: NestedScrollView( + headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) { + return [ + SliverToBoxAdapter( + child: Container( + height: 35, + padding: const EdgeInsets.all(0), + child: ButtonSection(), // Dein Button-Bereich + ), + ), + ]; + }, + body:Column( + children:[ + GridView.builder( shrinkWrap: true, // Damit der GridView korrekt in die Column passt //physics: NeverScrollableScrollPhysics(), // Deaktiviert das Scrolling des GridView gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( @@ -121,7 +45,7 @@ class HomePage extends StatelessWidget { Navigator.push( context, MaterialPageRoute( - builder: (context) => DetailsPage( + builder: (context) => Frame28( //recipe: Data.recipes[index], ))); }, @@ -138,8 +62,8 @@ class HomePage extends StatelessWidget { borderRadius: BorderRadius.circular(6.0), ), child: Container( - width: MediaQuery.of(context).size.width / 2, - height: 50, + width: MediaQuery.of(context).size.width / 2.5, + height: 20, child: Column( children: [ Expanded( @@ -152,10 +76,11 @@ class HomePage extends StatelessWidget { tag: Data.recipes[index].id, child: FadeInImage( image: AssetImage( - Data.recipes[index].imageUrl), + Data.recipes[index].imageUrl, + ), fit: BoxFit.cover, placeholder: AssetImage( - 'assets/images/loading.gif'), + 'assets/images/loading.gif', ), ), ), ), @@ -168,7 +93,7 @@ class HomePage extends StatelessWidget { fontWeight: FontWeight.bold), ), Padding( - padding: const EdgeInsets.all(2.0), + padding: const EdgeInsets.all(1.0), ), ], ), @@ -178,10 +103,16 @@ class HomePage extends StatelessWidget { ); }, ), + Image.asset( + 'assets/images/FooterFooter.png', // Pfad zum Bild + height: 127, // Höhe des Bildes + width: 390, // Breite des Bildes + ), ], + ), ), ), -), + /* Expanded( child: Column( diff --git a/lib/screens/subheader_Datepicker.dart b/lib/screens/subheader_Datepicker.dart index 3b97b38..5c7dae2 100644 --- a/lib/screens/subheader_Datepicker.dart +++ b/lib/screens/subheader_Datepicker.dart @@ -55,6 +55,93 @@ class ButtonSection extends StatelessWidget { } } +class HeaderSection extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.fromLTRB(5, 2, 5, 5), + height: 76, + color: Colors.white, + alignment: Alignment.bottomLeft, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 10), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + SizedBox( + height: 50, //height of button + //width of button + child: IconButton( + icon: Image.asset('assets/images/logo.png'), + onPressed: () {}, + ), + ), + const SizedBox( + //width of button + width: 10, + ), + SizedBox( + height: 10, //height of button + width: 20, //width of button + child: Icon(Icons.keyboard_arrow_down), + ), + const SizedBox( + //width of button + width: 10, + ), + SizedBox( + width: 100.0, + child: TextField( + controller: TextEditingController(text: "Ingolstadt"), + decoration: InputDecoration( + border: UnderlineInputBorder(), + ), + ), + ), + // const SizedBox( + // //width of button + // width: 40, + // ), + SizedBox(width:3), + Spacer(), + SizedBox( + height: 41, //height of button + //width of button + child: IconButton( + icon: const Icon(Icons.search), + onPressed: () {}, + ), + ), + const SizedBox( + height: 40, + child: VerticalDivider( + thickness: 1, + width: 20, + color: Colors.black, + ), + ), + SizedBox( + height: 50, //height of button + //width of button + child: IconButton( + icon: Image.asset('assets/images/Login.png'), + onPressed: () {}, + ), + ), + ]), + const Divider( + height: 1, + thickness: 1, + indent: 0, + endIndent: 0, + color: Colors.black, + ), + + ], + ), + );}} /* child: SingleChildScrollView( padding: const EdgeInsets.symmetric(horizontal: 30.0), child: Column(