diff --git a/lib/core/router.dart b/lib/core/router.dart index 2bea9aa..bbf6fd4 100644 --- a/lib/core/router.dart +++ b/lib/core/router.dart @@ -55,5 +55,20 @@ final router = GoRouter( return ArticleDetailScreen(data: data); }, ), + + GoRoute( + path: '/pickupmethod', + builder: (context, state) { + dynamic data = state.extra; + return PickupScreen(data: data); + }, + ), + + GoRoute( + path: '/pilihpengepul', + builder: (context, state) { + return SelectCollectorScreen(); + }, + ), ], ); diff --git a/lib/core/utils/exportimportview.dart b/lib/core/utils/exportimportview.dart index 6f10e45..776d02c 100644 --- a/lib/core/utils/exportimportview.dart +++ b/lib/core/utils/exportimportview.dart @@ -13,3 +13,5 @@ export 'package:rijig_mobile/features/launch/screen/onboardingpage_screen.dart'; export 'package:rijig_mobile/features/launch/screen/splash_screen.dart'; export 'package:rijig_mobile/features/home/presentation/components/about_detail_comp.dart'; export 'package:rijig_mobile/features/home/presentation/components/article_content.dart'; +export 'package:rijig_mobile/features/pickup/presentation/screen/pickup_screen.dart'; +export 'package:rijig_mobile/features/pickup/presentation/screen/selectcollector_screen.dart'; diff --git a/lib/features/cart/presentation/screens/cart_screen.dart b/lib/features/cart/presentation/screens/cart_screen.dart index a10baba..63a1fcd 100644 --- a/lib/features/cart/presentation/screens/cart_screen.dart +++ b/lib/features/cart/presentation/screens/cart_screen.dart @@ -6,6 +6,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:gap/gap.dart'; import 'package:iconsax_flutter/iconsax_flutter.dart'; import 'package:provider/provider.dart'; +import 'package:rijig_mobile/core/router.dart'; import 'package:rijig_mobile/core/utils/guide.dart'; import 'package:rijig_mobile/features/cart/model/cartitem_model.dart'; import 'package:rijig_mobile/features/cart/presentation/viewmodel/cartitem_vmod.dart'; @@ -435,20 +436,23 @@ class _CartScreenState extends State with WidgetsBindingObserver { borderRadius: 9, horizontal: double.infinity, vertical: 50, - onTap: () async { - final vmod = Provider.of( - context, - listen: false, - ); - await vmod.flushCartToServer(); + // onTap: () async { + // final vmod = Provider.of( + // context, + // listen: false, + // ); + // await vmod.flushCartToServer(); - ScaffoldMessenger.of(context).showSnackBar( - const SnackBar( - content: Text( - "Keranjang berhasil dikirim ke server!", - ), - ), - ); + // ScaffoldMessenger.of(context).showSnackBar( + // const SnackBar( + // content: Text( + // "Keranjang berhasil dikirim ke server!", + // ), + // ), + // ); + // }, + onTap: () { + router.push("/pickupmethod", extra: ''); }, ), ), diff --git a/lib/features/pickup/presentation/screen/pickup_screen.dart b/lib/features/pickup/presentation/screen/pickup_screen.dart new file mode 100644 index 0000000..cbec098 --- /dev/null +++ b/lib/features/pickup/presentation/screen/pickup_screen.dart @@ -0,0 +1,59 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:gap/gap.dart'; +import 'package:rijig_mobile/core/router.dart'; +import 'package:rijig_mobile/core/utils/guide.dart'; +import 'package:rijig_mobile/widget/appbar.dart'; +import 'package:rijig_mobile/widget/buttoncard.dart'; + +class PickupScreen extends StatefulWidget { + final dynamic data; + const PickupScreen({super.key, required this.data}); + + @override + State createState() => _PickupScreenState(); +} + +class _PickupScreenState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: CustomAppBar(judul: "Request Method"), + body: SafeArea( + child: Padding( + padding: PaddingCustom().paddingHorizontal(20), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + CardButtonOne( + textButton: "otomatis", + fontSized: 16.sp, + color: primaryColor, + colorText: whiteColor, + borderRadius: 9, + horizontal: double.infinity, + vertical: 50, + onTap: () { + router.go('/navigasi', extra: '/activity'); + }, + ), + Gap(30), + CardButtonOne( + textButton: "manual pilih driver", + fontSized: 16.sp, + color: primaryColor, + colorText: whiteColor, + borderRadius: 9, + horizontal: double.infinity, + vertical: 50, + onTap: () { + router.push('/pilihpengepul'); + }, + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/features/pickup/presentation/screen/selectcollector_screen.dart b/lib/features/pickup/presentation/screen/selectcollector_screen.dart new file mode 100644 index 0000000..b5adc97 --- /dev/null +++ b/lib/features/pickup/presentation/screen/selectcollector_screen.dart @@ -0,0 +1,117 @@ +import 'package:flutter/material.dart'; +import 'dart:math'; +import 'package:rijig_mobile/core/utils/guide.dart'; +import 'package:rijig_mobile/widget/appbar.dart'; + +class Collector { + final String name; + final String address; + final double rating; + + Collector({required this.name, required this.address, required this.rating}); +} + +class SelectCollectorScreen extends StatefulWidget { + const SelectCollectorScreen({super.key}); + + @override + State createState() => _SelectCollectorScreenState(); +} + +class _SelectCollectorScreenState extends State { + final List collectors = List.generate(6, (index) { + final names = [ + "Dimas Aditya", + "Siti Nurhaliza", + "Rizky Hidayat", + "Indah Lestari", + "Ahmad Fauzi", + "Mega Putri", + ]; + final addresses = [ + "Jl. Merdeka No. ${index + 1}, Jakarta", + "Jl. Kebangsaan No. ${index + 2}, Bandung", + "Jl. Kartini No. ${index + 3}, Surabaya", + "Jl. Pancasila No. ${index + 4}, Yogyakarta", + "Jl. Garuda No. ${index + 5}, Semarang", + "Jl. Bhayangkara No. ${index + 6}, Medan", + ]; + final random = Random(); + return Collector( + name: names[index % names.length], + address: addresses[index % addresses.length], + rating: (random.nextDouble() * 2) + 3, + ); + }); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: whiteColor, + appBar: CustomAppBar(judul: "Pilih Pengepul"), + body: SafeArea( + child: Padding( + padding: PaddingCustom().paddingHorizontalVertical(20, 10), + child: ListView.separated( + itemCount: collectors.length, + separatorBuilder: (_, __) => GapCustom().gapValue(10, true), + itemBuilder: (context, index) { + final collector = collectors[index]; + return Card( + shadowColor: Colors.transparent, + color: whiteColor, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + side: BorderSide(width: 1, color: greyColor), + ), + child: Padding( + padding: PaddingCustom().paddingAll(16), + child: Row( + children: [ + CircleAvatar( + radius: 28, + backgroundColor: greyAbsolutColor, + child: Icon(Icons.person, color: whiteColor, size: 28), + ), + GapCustom().gapValue(16, false), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + collector.name, + style: Tulisan.subheading(fontsize: 16), + ), + GapCustom().gapValue(5, true), + Text( + collector.address, + style: TextStyle( + color: greyAbsolutColor, + fontSize: 14, + ), + ), + GapCustom().gapValue(5, true), + Row( + children: [ + Icon(Icons.star, color: Colors.amber, size: 18), + GapCustom().gapValue(5, false), + Text( + collector.rating.toStringAsFixed(1), + style: Tulisan.customText(fontsize: 12), + ), + ], + ), + ], + ), + ), + ], + ), + ), + ); + }, + ), + ), + ), + ); + } +}