neue Variante hab den Header nun in die Appbar eingefügt also abgewandelt. Evtl. ist das Logo zu klein. FUnktional kalppt das mit dem Header noch nicht.

This commit is contained in:
Niklas 2024-10-03 23:12:51 +02:00
parent 621400f0a2
commit 4aa6dc0bb1
4 changed files with 245 additions and 4 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 480 B

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:learn_project/screens/home.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
import 'screens/MainScreen.dart';
//import 'package:learn_project/screens/account_page.dart';
//import 'package:learn_project/screens/login_page.dart';
//import 'package:learn_project/screens/splash_page.dart';
@ -42,6 +43,7 @@ class MyApp extends StatelessWidget {
),
),
home: HomePage(),
//home: MainScreen(),
);
}
}

132
lib/screens/MainScreen.dart Normal file
View File

@ -0,0 +1,132 @@
import 'package:flutter/material.dart';
import 'subheader_Datepicker.dart';
class MainScreen extends StatefulWidget {
@override
_MainScreenState createState() => _MainScreenState();
}
class _MainScreenState extends State<MainScreen> with SingleTickerProviderStateMixin {
Widget _currentBody = HomeBody();
void _changeBody(Widget newBody) {
setState(() {
_currentBody = newBody;
});
}
late TabController _tabController;
@override
void initState() {
super.initState();
_tabController = TabController(length: 2, vsync: this);
}
@override
void dispose() {
_tabController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading:SizedBox(
height: 50,
width: 63,
child: IconButton(
icon: Image.asset('assets/images/logo.png'),
onPressed: () {
// Open drawer or perform action
},
),),
title: Row(
children: [
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(),
),
),
),
],
),
actions: [
IconButton(
icon: Icon(Icons.search),
onPressed: () {
// Perform search action
},
),
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: () {},
),
),
],
bottom: PreferredSize(
preferredSize: Size.fromHeight(1.0),
child: Container(
color: Colors.black,
height: 1.0,
),
),
flexibleSpace: Container(
),
),
body: _currentBody,
bottomNavigationBar: BottomAppBar(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
IconButton(
icon: Icon(Icons.home),
onPressed: () => _changeBody(HomeBody()),
),
IconButton(
icon: Icon(Icons.settings),
onPressed: () => _changeBody(SettingsBody()),
),
// Add more buttons as needed
],
),
),
);
}
}
class HomeBody extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(child: Text('Home Screen'));
}
}
class SettingsBody extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Center(child: Text('Settings Screen'));
}
}

View File

@ -19,16 +19,55 @@ class HomePage extends StatelessWidget {
}
Future<List<Map<String, dynamic>>> fetchEvents(String category) async {
try {
final today = DateTime.now().toUtc().toString().split(' ')[0];
final response = await supabase
.from("events")
//.innerJoin('event_category', 'events.id = event_category.event_id')
.select('id,name,description,detail,subheader,location(name),time(event_id,start_date),event_category!inner(event_id)')
.select('id,name,description,detail,subheader,location(name),time!inner(*),event_category!inner(event_id)')
.eq('event_category.category_id',category);
//.gte('time.start_date', DateTime.now().toIso8601String().split('T')[0]) // Beginn des heutigen Tages
//.lt('time.start_date', DateTime.now().add(Duration(days: 1)).toIso8601String().split('T')[0]); // Morgen;
//select('id, name, cities(id, name)')
//find all events mit Ort und zusatzinfos die die Kathegorie haben welche ausgewählt wurde am heutigen Tag dann kommender Tag usw.
final test = response[0]['time'][0]['start_date'];
//final test = response[0]['time'][0]['start_date'];
return (response as List).cast<Map<String, dynamic>>();
} catch (e) {
throw Exception('Failed to fetch data: $e');
}
}
Future<List<Map<String, dynamic>>> fetchEventsToday(String category) async {
try {
final today = DateTime.now().toUtc().toString().split(' ')[0];
final response = await supabase
.from("events")
//.innerJoin('event_category', 'events.id = event_category.event_id')
.select('id,name,description,detail,subheader,location(name),time!inner(*),event_category!inner(event_id)')
.eq('event_category.category_id',category)//;
.eq('time.start_date', today);
//.gte('time.start_date', DateTime.now().toIso8601String().split('T')[0]) // Beginn des heutigen Tages
//.lt('time.start_date', DateTime.now().add(Duration(days: 1)).toIso8601String().split('T')[0]); // Morgen;
//select('id, name, cities(id, name)')
//find all events mit Ort und zusatzinfos die die Kathegorie haben welche ausgewählt wurde am heutigen Tag dann kommender Tag usw.
//final test = response[0]['time'][0]['start_date'];
return (response as List).cast<Map<String, dynamic>>();
} catch (e) {
throw Exception('Failed to fetch data: $e');
}
}
Future<List<Map<String, dynamic>>> fetchEventsTomorrow(String category) async {
try {
final today = DateTime.now().toUtc().toString().split(' ')[0];
final response = await supabase
.from("events")
//.innerJoin('event_category', 'events.id = event_category.event_id')
.select('id,name,description,detail,subheader,location(name),time!inner(*),event_category!inner(event_id)')
.eq('event_category.category_id',category)//;
.eq('time.start_date', today);
//.gte('time.start_date', DateTime.now().toIso8601String().split('T')[0]) // Beginn des heutigen Tages
//.lt('time.start_date', DateTime.now().add(Duration(days: 1)).toIso8601String().split('T')[0]); // Morgen;
//select('id, name, cities(id, name)')
//find all events mit Ort und zusatzinfos die die Kathegorie haben welche ausgewählt wurde am heutigen Tag dann kommender Tag usw.
//final test = response[0]['time'][0]['start_date'];
return (response as List).cast<Map<String, dynamic>>();
} catch (e) {
throw Exception('Failed to fetch data: $e');
@ -41,11 +80,78 @@ class HomePage extends StatelessWidget {
/*24 is for notification bar on Android*/
final double itemHeight = (size.height - kToolbarHeight - 24) / 5;
final double itemWidth = size.width / 2.3;
var appBar = AppBar(
leading:SizedBox(
height: 60,
width: 63,
child: IconButton(
icon: Image.asset('assets/images/logo.png'),
onPressed: () {
// Open drawer or perform action
},
),),
title: Row(
children: [
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(),
),
),
),
],
),
actions: [
IconButton(
icon: Icon(Icons.search),
onPressed: () {
// Perform search action
},
),
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: () {},
),
),
],
bottom: PreferredSize(
preferredSize: Size.fromHeight(1.0),
child: Container(
color: Colors.black,
height: 1.0,
),
),
flexibleSpace: Container(
),
);
var body = SafeArea(
child: Column(
children: <Widget>[
//Header Container
HeaderSection(),
//HeaderSection(),
Container(height:10),
//Body Container
Expanded(
child: NestedScrollView(
@ -83,7 +189,7 @@ class HomePage extends StatelessWidget {
await _loadData(); */
List<Map<String, dynamic>> events2 =
await fetchEvents(Data.recipes[index].category);
Navigator.pushReplacement(
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Frame28(
@ -154,6 +260,7 @@ class HomePage extends StatelessWidget {
return Scaffold(
backgroundColor: Colors.white,
appBar: appBar,
body: body,
);
}