Compare commits
6 Commits
master
...
clippath_p
| Author | SHA1 | Date |
|---|---|---|
|
|
86f6304826 | |
|
|
781a903e11 | |
|
|
6dfb3dfb7d | |
|
|
0e990437ef | |
|
|
880e45746c | |
|
|
315ee45015 |
|
|
@ -140,3 +140,4 @@ app.*.symbols
|
|||
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
|
||||
!/dev/ci/**/Gemfile.lock
|
||||
!.vscode/settings.json
|
||||
pubspec.lock
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
],
|
||||
|
|
|
|||
|
|
@ -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(),
|
||||
]),
|
||||
),
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
),
|
||||
]);
|
||||
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
@ -216,10 +216,10 @@ class EventCard2Section extends StatelessWidget {
|
|||
String getRandomImage() {
|
||||
final List<String> images = [
|
||||
'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/image05.jpg',
|
||||
//'assets/images/Event_Images/image02.jpg',
|
||||
//'assets/images/Event_Images/image03.jpg',
|
||||
//'assets/images/Event_Images/image04.jpg',
|
||||
//'assets/images/Event_Images/image05.jpg',
|
||||
];
|
||||
final randomIndex = Random().nextInt(images.length);
|
||||
return images[randomIndex];
|
||||
|
|
@ -313,7 +313,7 @@ class EventCard2Section extends StatelessWidget {
|
|||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
shortenText(title, 20),
|
||||
shortenText(title, 24),
|
||||
style: const TextStyle(
|
||||
color: Color(0xFF0A0A0A),
|
||||
fontSize: 18,
|
||||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
50
pubspec.lock
50
pubspec.lock
|
|
@ -37,18 +37,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: async
|
||||
sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63
|
||||
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.12.0"
|
||||
version: "2.11.0"
|
||||
boolean_selector:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: boolean_selector
|
||||
sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
|
||||
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.2"
|
||||
version: "2.1.1"
|
||||
characters:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -61,18 +61,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: clock
|
||||
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
|
||||
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.2"
|
||||
version: "1.1.1"
|
||||
collection:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: collection
|
||||
sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf
|
||||
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.19.0"
|
||||
version: "1.18.0"
|
||||
cross_file:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -101,10 +101,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: fake_async
|
||||
sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc"
|
||||
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.2"
|
||||
version: "1.3.1"
|
||||
ffi:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -324,18 +324,18 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker
|
||||
sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec
|
||||
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "10.0.8"
|
||||
version: "10.0.5"
|
||||
leak_tracker_flutter_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker_flutter_testing
|
||||
sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
|
||||
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.9"
|
||||
version: "3.0.5"
|
||||
leak_tracker_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -396,10 +396,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: path
|
||||
sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
|
||||
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.9.1"
|
||||
version: "1.9.0"
|
||||
path_provider:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -564,7 +564,7 @@ packages:
|
|||
dependency: transitive
|
||||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
version: "0.0.99"
|
||||
source_span:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -577,10 +577,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: stack_trace
|
||||
sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377"
|
||||
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.12.0"
|
||||
version: "1.11.1"
|
||||
storage_client:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -601,10 +601,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: string_scanner
|
||||
sha256: "0bd04f5bb74fcd6ff0606a888a30e917af9bd52820b178eaa464beb11dca84b6"
|
||||
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.0"
|
||||
version: "1.2.0"
|
||||
supabase:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
@ -633,10 +633,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: test_api
|
||||
sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c"
|
||||
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.3"
|
||||
version: "0.7.2"
|
||||
timeago:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
|
@ -729,10 +729,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: vm_service
|
||||
sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14"
|
||||
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "14.3.1"
|
||||
version: "14.2.5"
|
||||
web:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
|
|||
Loading…
Reference in New Issue