Commit 33466091 authored by Jasa Digital's avatar Jasa Digital

trigger refresh pada menu saat pickup time

parent fd2ad158
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
// bloc ini kepaksa dibuat untuk trigger refres di confirmation page, mungkin dibutuhkan juga untuk trigger di tempat lain nantinya // bloc ini kepaksa dibuat untuk trigger refres di confirmation page, mungkin dibutuhkan juga untuk trigger di tempat lain nantinya
class TriggerRefreshInConfirmationPage extends Cubit<bool> { class TriggerRefresh extends Cubit<bool> {
TriggerRefreshInConfirmationPage() : super(false); TriggerRefresh() : super(false);
void trigger(bool status) { void trigger(bool status) {
emit(status); emit(status);
......
...@@ -198,7 +198,7 @@ class _MyAppState extends State<MyApp> { ...@@ -198,7 +198,7 @@ class _MyAppState extends State<MyApp> {
BlocProvider(create: (_) => AddressUser()), BlocProvider(create: (_) => AddressUser()),
BlocProvider(create: (_) => ExpandDetailOutlet()), BlocProvider(create: (_) => ExpandDetailOutlet()),
BlocProvider(create: (_) => ChangeDeliveryPickupBloc()), BlocProvider(create: (_) => ChangeDeliveryPickupBloc()),
BlocProvider(create: (_) => TriggerRefreshInConfirmationPage()), BlocProvider(create: (_) => TriggerRefresh()),
], ],
child: MaterialApp( child: MaterialApp(
title: (widget.title == null) ? defaultTitle : widget.title, title: (widget.title == null) ? defaultTitle : widget.title,
......
...@@ -45,7 +45,7 @@ class CoreConfirm extends StatelessWidget { ...@@ -45,7 +45,7 @@ class CoreConfirm extends StatelessWidget {
double widthScreen = responsiveWidthScreen(context); double widthScreen = responsiveWidthScreen(context);
double widthRowForNote = double widthRowForNote =
MediaQuery.of(context).size.width - 20 - 12 - 80 - 20; MediaQuery.of(context).size.width - 20 - 12 - 80 - 20;
return BlocBuilder<TriggerRefreshInConfirmationPage, bool>( return BlocBuilder<TriggerRefresh, bool>(
builder: (_, trigger) { builder: (_, trigger) {
return BlocBuilder<OrdersBloc, List<Orders>>( return BlocBuilder<OrdersBloc, List<Orders>>(
builder: (ctx, listOrders) { builder: (ctx, listOrders) {
...@@ -1050,7 +1050,7 @@ class _VariantOrderState extends State<VariantOrder> { ...@@ -1050,7 +1050,7 @@ class _VariantOrderState extends State<VariantOrder> {
}; };
context.read<OrdersBloc>().insertData(insertData); context.read<OrdersBloc>().insertData(insertData);
context context
.read<TriggerRefreshInConfirmationPage>() .read<TriggerRefresh>()
.trigger(!widget.trigger); .trigger(!widget.trigger);
// setState(() {}); // setState(() {});
}, },
...@@ -1102,7 +1102,7 @@ class _VariantOrderState extends State<VariantOrder> { ...@@ -1102,7 +1102,7 @@ class _VariantOrderState extends State<VariantOrder> {
}; };
context.read<OrdersBloc>().insertData(insertData); context.read<OrdersBloc>().insertData(insertData);
context context
.read<TriggerRefreshInConfirmationPage>() .read<TriggerRefresh>()
.trigger(!widget.trigger); .trigger(!widget.trigger);
// setState(() {}); // setState(() {});
}, },
......
...@@ -25,6 +25,7 @@ import '../../bloc/branch_exist.dart'; ...@@ -25,6 +25,7 @@ import '../../bloc/branch_exist.dart';
import '../../bloc/change_delivery_pickup.dart'; import '../../bloc/change_delivery_pickup.dart';
import '../../bloc/feedback_option.dart'; import '../../bloc/feedback_option.dart';
import '../../bloc/outlet_detail.dart'; import '../../bloc/outlet_detail.dart';
import '../../bloc/trigger_refresh_in_confirmation_page.dart';
import '../../bloc/view_bill.dart'; import '../../bloc/view_bill.dart';
import '../../bloc/voucher_list.dart'; import '../../bloc/voucher_list.dart';
import '../../helper/logger.dart'; import '../../helper/logger.dart';
...@@ -1807,21 +1808,25 @@ class DeliveryPickupDetail extends StatelessWidget { ...@@ -1807,21 +1808,25 @@ class DeliveryPickupDetail extends StatelessWidget {
const SizedBox( const SizedBox(
height: 5, height: 5,
), ),
Row( BlocBuilder<TriggerRefresh, bool>(
children: [ builder: (_, trigger) {
defaultText( return Row(
context, children: [
"Pickup: ", defaultText(
maxLines: 1, context,
overFlow: TextOverflow.ellipsis, "Pickup: ",
), maxLines: 1,
defaultText( overFlow: TextOverflow.ellipsis,
context, ),
getPickupTime(), defaultText(
maxLines: 1, context,
overFlow: TextOverflow.ellipsis, getPickupTime(),
), maxLines: 1,
], overFlow: TextOverflow.ellipsis,
),
],
);
},
), ),
const SizedBox( const SizedBox(
height: 5, height: 5,
...@@ -1832,133 +1837,139 @@ class DeliveryPickupDetail extends StatelessWidget { ...@@ -1832,133 +1837,139 @@ class DeliveryPickupDetail extends StatelessWidget {
width: 12, width: 12,
), ),
const Spacer(), const Spacer(),
Column( BlocBuilder<TriggerRefresh, bool>(
children: [ builder: (_, trigger) {
changeOutlet(context), return Column(
const SizedBox( children: [
height: 5, changeOutlet(context),
), const SizedBox(
GestureDetector( height: 5,
onTap: () { ),
showTimePicker( GestureDetector(
context: context, onTap: () {
initialTime: timeOfDayPickup, showTimePicker(
).then((value) { context: context,
if (value == null) { initialTime: timeOfDayPickup,
return; ).then((value) {
} else { if (value == null) {
void ontapClose() { return;
Navigator.pop(context); } else {
} void ontapClose() {
Navigator.pop(context);
}
String closeOutlet = getCloseTime(); String closeOutlet = getCloseTime();
String hourClose = closeOutlet.split(':')[0]; String hourClose = closeOutlet.split(':')[0];
String minuteClose = closeOutlet.split(':')[1]; String minuteClose = closeOutlet.split(':')[1];
String openOutlet = getOpenTime(); String openOutlet = getOpenTime();
String hourOpen = openOutlet.split(':')[0]; String hourOpen = openOutlet.split(':')[0];
String minuteOpen = openOutlet.split(':')[1]; String minuteOpen = openOutlet.split(':')[1];
// TimeOfDay timeClose = TimeOfDay( // TimeOfDay timeClose = TimeOfDay(
// hour: int.parse(hourClose), // hour: int.parse(hourClose),
// minute: int.parse(minuteClose), // minute: int.parse(minuteClose),
// ); // );
var now = DateTime.now().toLocal(); var now = DateTime.now().toLocal();
var dateNow = DateFormat('yyyy-MM-dd').format(now); var dateNow = DateFormat('yyyy-MM-dd').format(now);
String dateTimeCloseOutletString = String dateTimeCloseOutletString =
"$dateNow $hourClose:$minuteClose:00"; "$dateNow $hourClose:$minuteClose:00";
String dateTimeOpenOutletString = String dateTimeOpenOutletString =
"$dateNow $hourOpen:$minuteOpen:00"; "$dateNow $hourOpen:$minuteOpen:00";
DateTime dateTimeCloseOutlet = DateTime dateTimeCloseOutlet =
DateTime.parse(dateTimeCloseOutletString); DateTime.parse(dateTimeCloseOutletString);
DateTime dateTimeOpenOutlet = DateTime dateTimeOpenOutlet =
DateTime.parse(dateTimeOpenOutletString); DateTime.parse(dateTimeOpenOutletString);
DateTime dateSelectedPickupTime = DateTime( DateTime dateSelectedPickupTime = DateTime(now.year,
now.year, now.month, now.day, value.hour, value.minute); now.month, now.day, value.hour, value.minute);
final differenceClose = final differenceClose = dateTimeCloseOutlet
dateTimeCloseOutlet.difference(dateSelectedPickupTime); .difference(dateSelectedPickupTime);
final differenceOpen = final differenceOpen = dateSelectedPickupTime
dateSelectedPickupTime.difference(dateTimeOpenOutlet); .difference(dateTimeOpenOutlet);
final differenceFromNow = final differenceFromNow =
dateSelectedPickupTime.difference(now); dateSelectedPickupTime.difference(now);
if (differenceFromNow.inMinutes < 0) { if (differenceFromNow.inMinutes < 0) {
buttonDialogGlobal( buttonDialogGlobal(
context, context,
'Informasi', 'Informasi',
'Pickup time tidak dapat dipilih pada waktu yang sudah berlalu', 'Pickup time tidak dapat dipilih pada waktu yang sudah berlalu',
'OK', 'OK',
'Close', 'Close',
ontapClose, ontapClose,
ontapClose, ontapClose,
isOkeButtonShow: false, isOkeButtonShow: false,
); );
return; return;
} }
if (differenceClose.inMinutes < 59) { if (differenceClose.inMinutes < 59) {
buttonDialogGlobal( buttonDialogGlobal(
context, context,
'Informasi', 'Informasi',
'Pickup Hanya Bisa Dilakukan 1 Jam sebelum outlet tutup', 'Pickup Hanya Bisa Dilakukan 1 Jam sebelum outlet tutup',
'OK', 'OK',
'Close', 'Close',
ontapClose, ontapClose,
ontapClose, ontapClose,
isOkeButtonShow: false, isOkeButtonShow: false,
); );
return; return;
} }
if (differenceOpen.inMinutes < 0) { if (differenceOpen.inMinutes < 0) {
buttonDialogGlobal( buttonDialogGlobal(
context,
'Informasi',
'Pickup Hanya Bisa Dilakukan Setelah Outlet Buka',
'OK',
'Close',
ontapClose,
ontapClose,
isOkeButtonShow: false,
);
return;
}
// String timeToset = value.format(context);
final hourString =
value.hour.toString().padLeft(2, '0');
final minuteString =
value.minute.toString().padLeft(2, '0');
// String amPM = timeToset.split(' ')[1];
String setPickup = "$hourString:$minuteString";
setPickupTime(setPickup);
context.read<TriggerRefresh>().trigger(!trigger);
context.read<ViewBillBloc>().getBill();
}
});
// ketika user click OK
},
child: Container(
width: 98,
height: 30,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(40),
color: (isFromMenu) ? backgroundColor : backgroundWhite,
border: Border.all(
color: buttonColor,
),
),
child: Center(
child: defaultText(
context, context,
'Informasi', 'Pickup Time',
'Pickup Hanya Bisa Dilakukan Setelah Outlet Buka', style: addButton(
'OK', font: 8,
'Close', color: buttonColor,
ontapClose, ),
ontapClose, ),
isOkeButtonShow: false,
);
return;
}
// String timeToset = value.format(context);
final hourString = value.hour.toString().padLeft(2, '0');
final minuteString =
value.minute.toString().padLeft(2, '0');
// String amPM = timeToset.split(' ')[1];
String setPickup = "$hourString:$minuteString";
setPickupTime(setPickup);
context.read<ViewBillBloc>().getBill();
}
});
// ketika user click OK
},
child: Container(
width: 98,
height: 30,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(40),
color: (isFromMenu) ? backgroundColor : backgroundWhite,
border: Border.all(
color: buttonColor,
),
),
child: Center(
child: defaultText(
context,
'Pickup Time',
style: addButton(
font: 8,
color: buttonColor,
), ),
), ),
), ),
), const SizedBox(
), height: 5,
const SizedBox( ),
height: 5, detailOutlet(context),
), ],
detailOutlet(context), );
], },
) )
], ],
); );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment