import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; class NewTransaction extends StatefulWidget { final Function addTransactionCallback; const NewTransaction(this.addTransactionCallback, {super.key}); @override State createState() => _NewTransactionState(); } class _NewTransactionState extends State { final _titleController = TextEditingController(); final _amourtController = TextEditingController(); DateTime? _selectedDate; void _showDatePicker() { showDatePicker( context: context, initialDate: DateTime.now(), firstDate: DateTime.now().subtract(Duration(days: 7)), lastDate: DateTime.now()) .then((date) { if (date == null) { return; } setState(() { _selectedDate = date; }); }); } void _sumbitData() { final enteredTitle = _titleController.text; final enteredAmount = double.parse(_amourtController.text); if (enteredTitle.isEmpty || enteredAmount <= 0 || _selectedDate == null) { return; } widget.addTransactionCallback(enteredTitle, enteredAmount, _selectedDate); Navigator.of(context).pop(); } @override Widget build(BuildContext context) { return SingleChildScrollView( child: Card( elevation: 5, child: Container( padding: EdgeInsets.only( top: 10, left: 10, right: 10, bottom: MediaQuery.of(context).viewInsets.bottom + 20, ), child: Column( crossAxisAlignment: CrossAxisAlignment.end, children: [ TextField( decoration: const InputDecoration(labelText: 'Titre'), controller: _titleController, onSubmitted: (_) => _sumbitData(), ), TextField( decoration: const InputDecoration(labelText: 'Montant'), controller: _amourtController, keyboardType: TextInputType.number, onSubmitted: (_) => _sumbitData(), ), Container( height: 70, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( _selectedDate == null ? 'Pas de date sélectionnée' : DateFormat.yMd() .format((_selectedDate as DateTime)), style: TextStyle(fontWeight: FontWeight.bold), ), ElevatedButton( style: ElevatedButton.styleFrom( backgroundColor: Colors.purple[300]), onPressed: _showDatePicker, child: Text( _selectedDate == null ? 'Sélectionner une date' : 'Sélectionner une autre date', )), ], ), ), ElevatedButton( onPressed: _sumbitData, child: const Text('Ajouter')) ], ), ), ), ); } }