From 324200218274e0ca8cab54a62068a9f69c25a897 Mon Sep 17 00:00:00 2001 From: Stein Milder Date: Tue, 27 Sep 2022 12:00:03 +0200 Subject: [PATCH] feat: go back to first page on error - hide keyboard on nextStep --- lib/src/auth_screen.dart | 16 ++++++++++++++-- lib/src/registration_screen.dart | 11 +++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/lib/src/auth_screen.dart b/lib/src/auth_screen.dart index 657b7fc..0ef61aa 100644 --- a/lib/src/auth_screen.dart +++ b/lib/src/auth_screen.dart @@ -15,7 +15,10 @@ class AuthScreen extends StatefulWidget { }) : assert(steps.length > 0, 'At least one step is required'); final String title; - final Function(HashMap) onFinish; + final Function({ + required HashMap values, + required VoidCallback onError, + }) onFinish; final List steps; final String submitBtnTitle; final String nextBtnTitle; @@ -119,6 +122,8 @@ class _AuthScreenState extends State { return; } + FocusScope.of(context).unfocus(); + if (widget.steps.last == step) { var values = HashMap(); @@ -128,7 +133,14 @@ class _AuthScreenState extends State { } } - widget.onFinish(values); + widget.onFinish( + values: values, + onError: () => _pageController.animateToPage( + 0, + duration: _animationDuration, + curve: _animationCurve, + ), + ); return; } diff --git a/lib/src/registration_screen.dart b/lib/src/registration_screen.dart index c9eea7f..f8d391b 100644 --- a/lib/src/registration_screen.dart +++ b/lib/src/registration_screen.dart @@ -1,3 +1,5 @@ +import 'dart:collection'; + import 'package:flutter/material.dart'; import 'package:flutter_registration/flutter_registration.dart'; import 'package:flutter_registration/src/auth_screen.dart'; @@ -14,14 +16,19 @@ class RegistrationScreen extends StatelessWidget { Widget build(BuildContext context) { var translations = registrationOptions.registrationTranslations; - void register(values) => + void register({ + required HashMap values, + required VoidCallback onError, + }) => registrationOptions.registrationRepository.register(values).then( (response) { if (response) { registrationOptions.afterRegistration(); } }, - ); + ).catchError((_) { + onError(); + }); return AuthScreen( steps: registrationOptions.registrationSteps,