Files
afterwork/lib/presentation/screens/dialogs/add_event_dialog.dart
2024-11-02 22:37:47 +00:00

119 lines
4.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'dart:io';
import '../../widgets/category_field.dart';
import '../../widgets/date_picker.dart';
import '../../widgets/description_field.dart';
import '../../widgets/link_field.dart';
import '../../widgets/location_field.dart';
import '../../widgets/submit_button.dart';
import '../../widgets/title_field.dart';
import '../../widgets/image_preview_picker.dart';
class AddEventPage extends StatefulWidget {
final String userId;
final String userFirstName;
final String userLastName;
const AddEventPage({
super.key,
required this.userId,
required this.userFirstName,
required this.userLastName,
});
@override
_AddEventPageState createState() => _AddEventPageState();
}
class _AddEventPageState extends State<AddEventPage> {
final _formKey = GlobalKey<FormState>(); // Form key for validation
String _title = '';
String _description = '';
DateTime? _selectedDate;
String _location = 'Abidjan';
String _category = '';
String _link = '';
LatLng? _selectedLatLng = const LatLng(5.348722, -3.985038); // Default coordinates
File? _selectedImageFile; // Store the selected image
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Ajouter un événement'),
backgroundColor: const Color(0xFF1E1E2C),
leading: IconButton(
icon: const Icon(Icons.arrow_back),
onPressed: () {
Navigator.of(context).pop();
},
),
),
backgroundColor: const Color(0xFF1E1E2C),
body: Column(
children: [
Expanded(
child: SingleChildScrollView(
padding: const EdgeInsets.all(16.0),
child: Form(
key: _formKey,
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
ImagePreviewPicker(
onImagePicked: (File? imageFile) {
setState(() {
_selectedImageFile = imageFile;
});
},
),
const SizedBox(height: 20),
TitleField(onSaved: (value) => setState(() => _title = value ?? '')),
const SizedBox(height: 12),
DescriptionField(onSaved: (value) => setState(() => _description = value ?? '')),
const SizedBox(height: 12),
DatePickerField(
selectedDate: _selectedDate,
onDatePicked: (picked) => setState(() {
_selectedDate = picked;
}),
),
const SizedBox(height: 12),
LocationField(
location: _location,
selectedLatLng: _selectedLatLng,
onLocationPicked: (pickedLocation) => setState(() {
_selectedLatLng = pickedLocation;
_location = '${pickedLocation?.latitude}, ${pickedLocation?.longitude}';
}),
),
const SizedBox(height: 12),
CategoryField(onSaved: (value) => setState(() => _category = value ?? '')),
const SizedBox(height: 12),
LinkField(onSaved: (value) => setState(() => _link = value ?? '')),
],
),
),
),
),
// Bouton en bas de l'écran
Padding(
padding: const EdgeInsets.all(16.0),
child: SubmitButton(
onPressed: () async {
if (_formKey.currentState!.validate()) {
_formKey.currentState!.save();
// Logic to add the event goes here
}
},
),
),
],
),
);
}
}