From 5947e012c5f273343b8c39bdfded3816abd5e58d Mon Sep 17 00:00:00 2001 From: Crondung <1922635@stud.hs-mannheim.de> Date: Wed, 15 Feb 2023 23:28:19 +0100 Subject: [PATCH] outsourced mood_form widgets --- lib/widgets/mood_form.dart | 42 ++++++++++++----------------- lib/widgets/submit_form_button.dart | 17 ++++++++++++ lib/widgets/text_formfield.dart | 21 +++++++++++++++ 3 files changed, 55 insertions(+), 25 deletions(-) create mode 100644 lib/widgets/submit_form_button.dart create mode 100644 lib/widgets/text_formfield.dart diff --git a/lib/widgets/mood_form.dart b/lib/widgets/mood_form.dart index 23264e9..fa7d175 100644 --- a/lib/widgets/mood_form.dart +++ b/lib/widgets/mood_form.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:smoke_cess_app/widgets/slider.dart'; +import 'package:smoke_cess_app/widgets/submit_form_button.dart'; +import 'package:smoke_cess_app/widgets/text_formfield.dart'; class MoodForm extends StatefulWidget { const MoodForm({super.key}); @@ -13,6 +14,19 @@ class _MoodFormState extends State { final GlobalKey _moodFormKey = GlobalKey(); MySlider slider = const MySlider(); String _textInput = ""; + + void submitForm() { + if (_moodFormKey.currentState!.validate()) { + _moodFormKey.currentState?.save(); //call every onSave Method + //TODO Businesslogik aufrufen! + print(_textInput); + print(slider.getSliderValue()); + _moodFormKey.currentState?.reset(); + } + } + + void onFormFieldSave(String? newValue) => _textInput = newValue!; + @override Widget build(BuildContext context) { return Form( @@ -21,30 +35,8 @@ class _MoodFormState extends State { mainAxisAlignment: MainAxisAlignment.center, children: [ slider, - TextFormField( - onSaved: (newValue) => _textInput = newValue!, - decoration: - const InputDecoration(hintText: 'Beschreibe deine Stimmung?'), - validator: (String? value) => - value == null || value.isEmpty ? 'Text eingeben' : null, - keyboardType: TextInputType.multiline, - maxLines: null, - ), - Padding( - padding: const EdgeInsets.symmetric(vertical: 16.0), - child: ElevatedButton( - onPressed: () { - if (_moodFormKey.currentState!.validate()) { - _moodFormKey.currentState - ?.save(); //call every onSave Method - print(_textInput); - print(slider.getSliderValue()); - _moodFormKey.currentState?.reset(); - } - }, - child: const Text('Speichern'), - ), - ), + MyTextFormField(onFormFieldSave), + SubmitFormButton(submitForm) ], )); } diff --git a/lib/widgets/submit_form_button.dart b/lib/widgets/submit_form_button.dart new file mode 100644 index 0000000..58f28c8 --- /dev/null +++ b/lib/widgets/submit_form_button.dart @@ -0,0 +1,17 @@ +import 'package:flutter/material.dart'; + +class SubmitFormButton extends StatelessWidget { + final VoidCallback submitCallback; + const SubmitFormButton(this.submitCallback, {super.key}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 16.0), + child: ElevatedButton( + onPressed: submitCallback, + child: const Text('Speichern'), + ), + ); + } +} diff --git a/lib/widgets/text_formfield.dart b/lib/widgets/text_formfield.dart new file mode 100644 index 0000000..b8a7d02 --- /dev/null +++ b/lib/widgets/text_formfield.dart @@ -0,0 +1,21 @@ +import 'package:flutter/material.dart'; + +class MyTextFormField extends StatelessWidget { + final Function(String?) onSaveAction; + const MyTextFormField( + this.onSaveAction, { + super.key, + }); + + @override + Widget build(BuildContext context) { + return TextFormField( + onSaved: onSaveAction, + decoration: const InputDecoration(hintText: 'Beschreibe deine Stimmung?'), + validator: (String? value) => + value == null || value.isEmpty ? 'Text eingeben' : null, + keyboardType: TextInputType.multiline, + maxLines: null, + ); + } +}