From e5e88385e9d0e230921cd35b5ad7b695c0abd92b Mon Sep 17 00:00:00 2001 From: Rafeek-Khoudare Date: Mon, 30 Jun 2025 13:31:38 +0300 Subject: [PATCH] change autoValidae mode to userInteraction and give some time to check validate when typing on keyboard with debouncer --- .../add_user_dialog/view/add_user_dialog.dart | 2 +- .../add_user_dialog/view/basics_view.dart | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/pages/roles_and_permission/users_page/add_user_dialog/view/add_user_dialog.dart b/lib/pages/roles_and_permission/users_page/add_user_dialog/view/add_user_dialog.dart index 0fea43d9..501cd02e 100644 --- a/lib/pages/roles_and_permission/users_page/add_user_dialog/view/add_user_dialog.dart +++ b/lib/pages/roles_and_permission/users_page/add_user_dialog/view/add_user_dialog.dart @@ -162,7 +162,7 @@ class _AddNewUserDialogState extends State { Widget _getFormContent() { switch (currentStep) { case 1: - return const BasicsView( + return BasicsView( userId: '', ); case 2: diff --git a/lib/pages/roles_and_permission/users_page/add_user_dialog/view/basics_view.dart b/lib/pages/roles_and_permission/users_page/add_user_dialog/view/basics_view.dart index fa04c051..14022cab 100644 --- a/lib/pages/roles_and_permission/users_page/add_user_dialog/view/basics_view.dart +++ b/lib/pages/roles_and_permission/users_page/add_user_dialog/view/basics_view.dart @@ -1,9 +1,12 @@ +import 'dart:async'; + import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:intl_phone_field/countries.dart'; import 'package:intl_phone_field/country_picker_dialog.dart'; import 'package:intl_phone_field/intl_phone_field.dart'; import 'package:syncrow_web/pages/roles_and_permission/users_page/add_user_dialog/bloc/users_bloc.dart'; +import 'package:syncrow_web/pages/roles_and_permission/users_page/add_user_dialog/bloc/users_event.dart'; import 'package:syncrow_web/pages/roles_and_permission/users_page/add_user_dialog/bloc/users_status.dart'; import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/extension/build_context_x.dart'; @@ -11,7 +14,9 @@ import 'package:syncrow_web/utils/style.dart'; class BasicsView extends StatelessWidget { final String? userId; - const BasicsView({super.key, this.userId = ''}); + Timer? _debounce; + + BasicsView({super.key, this.userId = ''}); @override Widget build(BuildContext context) { return BlocBuilder(builder: (context, state) { @@ -21,6 +26,7 @@ class BasicsView extends StatelessWidget { } return Form( key: _blocRole.formKey, + autovalidateMode: AutovalidateMode.onUserInteraction, child: ListView( shrinkWrap: true, children: [ @@ -208,6 +214,14 @@ class BasicsView extends StatelessWidget { fontSize: 12, color: ColorsManager.textGray), ), + + onChanged: (value) { + if (_debounce?.isActive ?? false) _debounce!.cancel(); + _debounce = Timer(const Duration(milliseconds: 800), () { + _blocRole.add(const CheckEmailEvent()); + }); + }, + validator: (value) { if (value == null || value.isEmpty) { return 'Enter Email Address';