From 7d86393425174ae39421fb64bf2d71fabd79573b Mon Sep 17 00:00:00 2001 From: orangdeso Date: Wed, 23 Apr 2025 21:26:49 +0700 Subject: [PATCH] Feat: update add field location porter for collection porterOnline in firestore --- .../screens/home/pages/home_screen.dart | 57 ++++++++++++++++++- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/lib/presentation/screens/home/pages/home_screen.dart b/lib/presentation/screens/home/pages/home_screen.dart index fb01da7..0d7d0dd 100644 --- a/lib/presentation/screens/home/pages/home_screen.dart +++ b/lib/presentation/screens/home/pages/home_screen.dart @@ -4,6 +4,7 @@ import 'package:e_porter/_core/component/appbar/appbar_component.dart'; import 'package:e_porter/_core/component/button/button_list_tile.dart'; import 'package:e_porter/_core/component/card/custome_shadow_cotainner.dart'; import 'package:e_porter/_core/component/icons/icons_library.dart'; +import 'package:e_porter/_core/component/text_field/text_input/text_field_component.dart'; import 'package:e_porter/_core/constants/colors.dart'; import 'package:e_porter/_core/constants/typography.dart'; import 'package:e_porter/_core/service/preferences_service.dart'; @@ -35,6 +36,7 @@ class _HomeScreenState extends State { late Future _userDataFuture; late PorterQueueController _porterQueueController; final CarouselSliderController _carouselController = CarouselSliderController(); + final TextEditingController _locationController = TextEditingController(); final List imageList = [ Container( @@ -61,6 +63,9 @@ class _HomeScreenState extends State { } Future _handlePorterQueueCreation() async { + final lokasiPorter = await _showLocationInputDialog(); + if (lokasiPorter == null || lokasiPorter.trim().isEmpty) return; + try { final userData = await PreferencesService.getUserData(); if (userData?.uid == null) { @@ -77,7 +82,10 @@ class _HomeScreenState extends State { _showLoadingDialog(); - await _porterQueueController.createPorterQueue(userData!.uid); + await _porterQueueController.createPorterQueue( + userData!.uid, + lokasiPorter, + ); if (Get.isDialogOpen == true) { Get.back(); @@ -93,7 +101,6 @@ class _HomeScreenState extends State { if (Get.isDialogOpen == true) { Get.back(); } - SnackbarHelper.showError( 'Gagal', 'Gagal masuk antrian porter: ${e.toString()}', @@ -528,6 +535,52 @@ class _HomeScreenState extends State { false; } + Future _showLocationInputDialog() async { + _locationController.clear(); + + return await Get.dialog( + Dialog( + backgroundColor: Colors.white, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + TypographyStyles.h6('Masukkan lokasi Anda!', color: GrayColors.gray800), + SizedBox(height: 20.h), + TextFieldComponent( + controller: _locationController, + hintText: 'Contoh: Gate Pintu Masuk', + textInputType: TextInputType.text, + ), + SizedBox(height: 16), + ZoomTapAnimation( + child: GestureDetector( + onTap: () { + final lokasi = _locationController.text.trim(); + Get.back(result: lokasi); + }, + child: Container( + width: double.infinity, + padding: EdgeInsets.symmetric(vertical: 12.h), + decoration: BoxDecoration( + color: PrimaryColors.primary800, + borderRadius: BorderRadius.circular(20.r), + ), + child: Center(child: TypographyStyles.caption('Ok', color: Colors.white)), + ), + ), + ) + ], + ), + ), + ), + barrierDismissible: false, + ); + } + void _showLoadingDialog() { Get.dialog( Dialog(