Bonjour,
J’ai un formulaire avec un DateTimeField. Sa valeur est initialisé sur l’init de la page.
Lorsque j’utilise FormState.save() sa modifier la valeur je récupère null au lieu de la valeur afficher. Si je modifie cette valeur je récupère bien la valeur.
Je n’est pas ce problème avec un TextFormField.
class InformationsPageState extends State<InformationsPage>
with AutomaticKeepAliveClientMixin {
InformationsPageState({this.user});
final User? user;
@override
bool get wantKeepAlive => true;
late User userSaved;
var _pseudoController = TextEditingController();
var _birthdayController = TextEditingController();
@override
void initState() {
super.initState();
_pseudoController = TextEditingController(text: widget.user.pseudo);
_birthdayController = TextEditingController(
text: widget.user.birthday != null
? DateFormat('yyyy-MM-dd').format(widget.user.birthday!)
: null);
userSaved = User.fromUser();
}
@override
void dispose() {
_pseudoController.dispose();
_birthdayController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
super.build(context);
return Column(
children: <Widget>[
TextFormField(
inputFormatters: [LowerCaseTextFormatter()],
controller: _pseudoController,
onSaved: (value) => userSaved.pseudo = value,
decoration: const InputDecoration(
icon: Icon(Icons.person),
hintText: 'Pseudo',
labelText: 'Pseudo',
),
validator: (value) =>
value!.isEmpty ? 'Le champs est obligatoire' : null),
DateTimeField(
controller: _birthdayController,
onSaved: (value) => userSaved.birthday = value,
decoration: const InputDecoration(
icon: FaIcon(FontAwesomeIcons.birthdayCake),
hintText: 'Date de naissance',
labelText: 'Anniversaire',
),
format: DateFormat("yyyy-MM-dd"),
onShowPicker: (context, currentValue) {
return showDatePicker(
context: context,
initialEntryMode: DatePickerEntryMode.calendarOnly,
helpText: 'Date de naisssance',
confirmText: 'OK',
cancelText: 'Annuler',
firstDate: DateTime(1900),
lastDate: DateTime.now(),
initialDate: currentValue ?? DateTime.now(),
);
}),
],
);
}
}