diff --git a/lib/pages/main_page.dart b/lib/pages/main_page.dart index 48859bd..3241a4c 100644 --- a/lib/pages/main_page.dart +++ b/lib/pages/main_page.dart @@ -14,6 +14,13 @@ class MyHomePage extends StatefulWidget { class MyHomePageState extends State { int _selectedIndex = 2; + final List _titles = [ + 'Stimmung', + 'Schlaf', + 'Timer', + 'Rückfall', + 'Einstellungen' + ]; static const List _widgetOptions = [ MoodPage(), SleepPage(), @@ -29,7 +36,7 @@ class MyHomePageState extends State { @override Widget build(BuildContext context) { return Scaffold( - appBar: AppBar(title: const Text('ZI Rauchentwöhnung')), + appBar: AppBar(title: Text(_titles[_selectedIndex])), body: _widgetOptions.elementAt(_selectedIndex), bottomNavigationBar: NavigationBar( onDestinationSelected: _onItemTapped, diff --git a/lib/pages/mood_page.dart b/lib/pages/mood_page.dart index a8c4a4e..bd1b36b 100644 --- a/lib/pages/mood_page.dart +++ b/lib/pages/mood_page.dart @@ -1,10 +1,13 @@ import 'package:flutter/material.dart'; +import 'package:smoke_cess_app/widgets/mood_form.dart'; class MoodPage extends StatelessWidget { const MoodPage({super.key}); @override Widget build(BuildContext context) { - return const Center(child: Text('Hier Fragen wir die Stimmung ab')); + return const Center( + child: MoodForm(), + ); } } diff --git a/lib/widgets/mood_form.dart b/lib/widgets/mood_form.dart new file mode 100644 index 0000000..fa7d175 --- /dev/null +++ b/lib/widgets/mood_form.dart @@ -0,0 +1,43 @@ +import 'package:flutter/material.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}); + + @override + State createState() => _MoodFormState(); +} + +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( + key: _moodFormKey, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + slider, + MyTextFormField(onFormFieldSave), + SubmitFormButton(submitForm) + ], + )); + } +} diff --git a/lib/widgets/slider.dart b/lib/widgets/slider.dart new file mode 100644 index 0000000..fb8e063 --- /dev/null +++ b/lib/widgets/slider.dart @@ -0,0 +1,37 @@ +import 'package:flutter/material.dart'; + +double _currentSliderValue = 50; + +class MySlider extends StatefulWidget { + const MySlider({super.key}); + + @override + State createState() => SliderState(); + + double getSliderValue() { + return _currentSliderValue; + } +} + +class SliderState extends State { + @override + Widget build(BuildContext context) { + return Column( + children: [ + const Text('Bewerte deine Stimmung'), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Slider( + value: _currentSliderValue, + max: 100, + label: _currentSliderValue.round().toString(), + onChanged: (double value) => + {setState((() => _currentSliderValue = value))}), + Text(_currentSliderValue.round().toString()) + ], + ) + ], + ); + } +} 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, + ); + } +}