From 2ed4b35eeb8d4fec005c9c92baf720cfbd80fc61 Mon Sep 17 00:00:00 2001 From: Peter Kyeyune Date: Sun, 15 Dec 2024 15:21:44 +0300 Subject: [PATCH 1/3] Refactor login page state management and update dependencies --- .../lib/src/app/auth/pages/login_page.dart | 20 +++++++------------ mobile-v3/pubspec.lock | 12 +++++------ mobile-v3/pubspec.yaml | 4 ++-- 3 files changed, 15 insertions(+), 21 deletions(-) diff --git a/mobile-v3/lib/src/app/auth/pages/login_page.dart b/mobile-v3/lib/src/app/auth/pages/login_page.dart index fba3d4d152..a997bd52b8 100644 --- a/mobile-v3/lib/src/app/auth/pages/login_page.dart +++ b/mobile-v3/lib/src/app/auth/pages/login_page.dart @@ -17,13 +17,9 @@ class LoginPage extends StatefulWidget { class _LoginPageState extends State { String? error; - AuthBloc? authBloc; - TextEditingController emailController = TextEditingController( - // text: "joxowo9726@godsigma.com", - ); - TextEditingController passwordController = TextEditingController( - // text: "0134t34%Wer", - ); + late AuthBloc authBloc; + TextEditingController emailController = TextEditingController(); + TextEditingController passwordController = TextEditingController(); GlobalKey formKey = GlobalKey(); @override @@ -46,8 +42,6 @@ class _LoginPageState extends State { setState(() { error = state.message.replaceAll("Exception: ", ""); }); - // ScaffoldMessenger.of(context) - // .showSnackBar(SnackBar(content: Text(state.message))); } }, child: Scaffold( @@ -82,7 +76,7 @@ class _LoginPageState extends State { ), ), validator: (value) { - if (value!.length == 0) { + if (value!.isEmpty) { return "This field cannot be blank."; } return null; @@ -100,7 +94,7 @@ class _LoginPageState extends State { ), ), validator: (value) { - if (value!.length == 0) { + if (value!.isEmpty) { return "This field cannot be blank."; } return null; @@ -130,8 +124,8 @@ class _LoginPageState extends State { onTap: loading ? null : () { - if (formKey.currentState!.validate()) { - authBloc!.add(LoginUser( + if (formKey.currentState?.validate() ?? false) { + authBloc.add(LoginUser( emailController.text.trim(), passwordController.text.trim())); } diff --git a/mobile-v3/pubspec.lock b/mobile-v3/pubspec.lock index 10a070b52a..c05818983e 100644 --- a/mobile-v3/pubspec.lock +++ b/mobile-v3/pubspec.lock @@ -295,10 +295,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: "9e8c3858111da373efc5aa341de011d9bd23e2c5c5e0c62bccf32438e192d7b1" + sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "5.0.0" flutter_loggy: dependency: "direct main" description: @@ -473,10 +473,10 @@ packages: dependency: "direct main" description: name: intl - sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf + sha256: "00f33b908655e606b86d2ade4710a231b802eec6f11e87e4ea3783fd72077a50" url: "https://pub.dev" source: hosted - version: "0.19.0" + version: "0.20.1" io: dependency: transitive description: @@ -537,10 +537,10 @@ packages: dependency: transitive description: name: lints - sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290 + sha256: "3315600f3fb3b135be672bf4a178c55f274bebe368325ae18462c89ac1e3b413" url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "5.0.0" logger: dependency: "direct main" description: diff --git a/mobile-v3/pubspec.yaml b/mobile-v3/pubspec.yaml index 4acc6406dc..e4171322c1 100644 --- a/mobile-v3/pubspec.yaml +++ b/mobile-v3/pubspec.yaml @@ -49,7 +49,7 @@ dependencies: shimmer: ^3.0.0 flutter_sticky_header: ^0.7.0 flutter_dotenv: ^5.1.0 - intl: ^0.19.0 + intl: ^0.20.1 google_maps_flutter: ^2.7.1 flutter_card_swiper: ^7.0.1 logger: ^2.5.0 @@ -65,7 +65,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^3.0.0 + flutter_lints: ^5.0.0 build_runner: json_serializable: From 430c3f6d23801ad90ee52bf299e910c6a51665b3 Mon Sep 17 00:00:00 2001 From: Peter Kyeyune Date: Sun, 15 Dec 2024 15:34:39 +0300 Subject: [PATCH 2/3] Refactor LoginPage state management: initialize controllers in initState and dispose of them properly --- .../lib/src/app/auth/pages/login_page.dart | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/mobile-v3/lib/src/app/auth/pages/login_page.dart b/mobile-v3/lib/src/app/auth/pages/login_page.dart index d0d6ddd622..7124eacec5 100644 --- a/mobile-v3/lib/src/app/auth/pages/login_page.dart +++ b/mobile-v3/lib/src/app/auth/pages/login_page.dart @@ -19,20 +19,32 @@ class LoginPage extends StatefulWidget { class _LoginPageState extends State { String? error; late AuthBloc authBloc; - TextEditingController emailController = TextEditingController(); - TextEditingController passwordController = TextEditingController(); - GlobalKey formKey = GlobalKey(); + late TextEditingController emailController = TextEditingController(); + late TextEditingController passwordController = TextEditingController(); + late GlobalKey formKey = GlobalKey(); @override void initState() { super.initState(); + authBloc = context.read(); + emailController = TextEditingController(); + passwordController = TextEditingController(); + try { authBloc = context.read(); + } catch (e) { logError('Failed to initialize AuthBloc: $e'); } } + @override + void dispose() { + emailController.dispose(); + passwordController.dispose(); + super.dispose(); + } + @override Widget build(BuildContext context) { return BlocListener( @@ -133,7 +145,7 @@ class _LoginPageState extends State { final currentForm = formKey.currentState; if (currentForm != null && currentForm.validate()) { - authBloc?.add(LoginUser( + authBloc.add(LoginUser( emailController.text.trim(), passwordController.text.trim())); } From cf065ac0fb8dc325aec8f4f133c7fd526ec0358e Mon Sep 17 00:00:00 2001 From: Peter Kyeyune Date: Sun, 15 Dec 2024 16:31:43 +0300 Subject: [PATCH 3/3] Remove unnecessary authBloc initialization from LoginPage's initState --- mobile-v3/lib/src/app/auth/pages/login_page.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/mobile-v3/lib/src/app/auth/pages/login_page.dart b/mobile-v3/lib/src/app/auth/pages/login_page.dart index 7124eacec5..d71ab24f04 100644 --- a/mobile-v3/lib/src/app/auth/pages/login_page.dart +++ b/mobile-v3/lib/src/app/auth/pages/login_page.dart @@ -26,7 +26,6 @@ class _LoginPageState extends State { @override void initState() { super.initState(); - authBloc = context.read(); emailController = TextEditingController(); passwordController = TextEditingController();