From 430ddaab20dab3af8a2d6f70699ab02b34d7f7d2 Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Sun, 30 Jan 2022 14:54:18 +0100 Subject: [PATCH] Pass keys to the individual forms --- lib/providers/add_excercise_provider.dart | 19 +++-- lib/screens/add_exercise_screen.dart | 92 +++++++++++++---------- 2 files changed, 64 insertions(+), 47 deletions(-) diff --git a/lib/providers/add_excercise_provider.dart b/lib/providers/add_excercise_provider.dart index 6b1e4305..1198fa1a 100644 --- a/lib/providers/add_excercise_provider.dart +++ b/lib/providers/add_excercise_provider.dart @@ -1,3 +1,4 @@ +import 'dart:developer'; import 'dart:io'; import 'package:flutter/foundation.dart'; @@ -39,20 +40,22 @@ class AddExcerciseProvider with ChangeNotifier { } //Just to Debug Provider - printValues() { - print('Name $_name'); - print('alternate names : $_alternativeNames'); - print('target area : $_targetArea'); - print('primary mucsles'); + void printValues() { + log('Collected exercise data'); + log('------------------------'); + log('Name $_name'); + log('alternate names : $_alternativeNames'); + log('target area : $_targetArea'); + log('primary muscles'); if (_primaryMuscles != null) { for (final a in _primaryMuscles!) { - print(a); + log(a!); } } - print('seconday mucsles'); + log('seconday mucsles'); if (_secondaryMuscles != null) { for (final a in _secondaryMuscles!) { - print(a); + log(a!); } } } diff --git a/lib/screens/add_exercise_screen.dart b/lib/screens/add_exercise_screen.dart index 9ce3fd21..254ca28f 100644 --- a/lib/screens/add_exercise_screen.dart +++ b/lib/screens/add_exercise_screen.dart @@ -1,3 +1,5 @@ +import 'dart:developer'; + import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:provider/provider.dart'; @@ -54,7 +56,9 @@ class _AddExerciseScreenState extends State { ); } - void _addExercise() {} + void _addExercise() { + log('Adding exercise...'); + } @override Widget build(BuildContext context) { @@ -67,21 +71,19 @@ class _AddExerciseScreenState extends State { steps: [ Step( title: Text(AppLocalizations.of(context).baseData), - content: _BasicStepContent( - formkey: _keys[0], - ), + content: _BasicStepContent(formkey: _keys[0]), ), Step( title: Text(AppLocalizations.of(context).variations), - content: _DuplicatesAndVariationsStepContent(), + content: _DuplicatesAndVariationsStepContent(formkey: _keys[1]), ), Step( title: Text(AppLocalizations.of(context).images), - content: _ImagesStepContent(), + content: _ImagesStepContent(formkey: _keys[2]), ), Step( title: Text(AppLocalizations.of(context).description), - content: _DescriptionStepContent(), + content: _DescriptionStepContent(formkey: _keys[3]), ) ], currentStep: _currentStep, @@ -89,6 +91,8 @@ class _AddExerciseScreenState extends State { if (_currentStep == lastStepIndex) { _addExercise(); } else { + log('Validation for step ${_currentStep}: ${_keys[_currentStep].currentState?.validate()}'); + if (_keys[_currentStep].currentState?.validate() ?? false) { _keys[_currentStep].currentState?.save(); context.read().printValues(); @@ -107,9 +111,9 @@ class _AddExerciseScreenState extends State { } class _BasicStepContent extends StatelessWidget { - // final GlobalKey _basicStepFormKey = GlobalKey(); final GlobalKey formkey; - _BasicStepContent({required this.formkey}); + const _BasicStepContent({required this.formkey}); + @override Widget build(BuildContext context) { final addExercideProvider = context.read(); @@ -160,11 +164,14 @@ class _BasicStepContent extends StatelessWidget { } class _DuplicatesAndVariationsStepContent extends StatelessWidget { - final GlobalKey _duplicatesAndVariationsFormKey = GlobalKey(); + final GlobalKey formkey; + + const _DuplicatesAndVariationsStepContent({required this.formkey}); + @override Widget build(BuildContext context) { return Form( - key: _duplicatesAndVariationsFormKey, + key: formkey, child: Column( children: [ Text(AppLocalizations.of(context).whatVariationsExist), @@ -176,52 +183,59 @@ class _DuplicatesAndVariationsStepContent extends StatelessWidget { } class _ImagesStepContent extends StatefulWidget { + final GlobalKey formkey; + const _ImagesStepContent({required this.formkey}); + @override State<_ImagesStepContent> createState() => _ImagesStepContentState(); } class _ImagesStepContentState extends State<_ImagesStepContent> with ExcerciseImagePickerMixin { - final GlobalKey _imagesStepFormKey = GlobalKey(); @override Widget build(BuildContext context) { - return Column( - children: [ - Text( - AppLocalizations.of(context).add_exercise_image_license, - style: Theme.of(context).textTheme.caption, - ), - Consumer( - builder: (ctx, provider, __) => provider.excerciseImages.isNotEmpty - ? PreviewExcercizeImages( - selectedimages: provider.excerciseImages, - ) - : ElevatedButton( - onPressed: () => pickImages(context), - child: const Text('BROWSE FOR FILES'), - style: ButtonStyle( - backgroundColor: MaterialStateProperty.resolveWith((states) => Colors.black)), - ), - ), - RichText( - text: TextSpan( + return Form( + key: widget.formkey, + child: Column( + children: [ + Text( + AppLocalizations.of(context).add_exercise_image_license, style: Theme.of(context).textTheme.caption, - children: const [ - TextSpan(text: 'Only JPEG, PNG and WEBP files below 20 MB are supported'), - ], ), - ) - ], + Consumer( + builder: (ctx, provider, __) => provider.excerciseImages.isNotEmpty + ? PreviewExcercizeImages( + selectedimages: provider.excerciseImages, + ) + : ElevatedButton( + onPressed: () => pickImages(context), + child: const Text('BROWSE FOR FILES'), + style: ButtonStyle( + backgroundColor: + MaterialStateProperty.resolveWith((states) => Colors.black)), + ), + ), + RichText( + text: TextSpan( + style: Theme.of(context).textTheme.caption, + children: const [ + TextSpan(text: 'Only JPEG, PNG and WEBP files below 20 MB are supported'), + ], + ), + ) + ], + ), ); } } class _DescriptionStepContent extends StatelessWidget { - final GlobalKey _descriptionStepFormKey = GlobalKey(); + final GlobalKey formkey; + const _DescriptionStepContent({required this.formkey}); @override Widget build(BuildContext context) { return Form( - key: _descriptionStepFormKey, + key: formkey, child: Column( children: [ AddExerciseTextArea(