Files
kdr_kurir_app_v2/lib/widget/konfirmasi_kurir_dialog.dart

340 lines
13 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import '/widget/chip_type.dart';
import '../app/constant.dart';
showConfirmCourierDialog(
{required BuildContext context,
required int tipeid,
required String tipe,
required String tipee,
required String tujuann,
required String penerimaa,
required TextEditingController noteKurir,
required VoidCallback okCallback}) {
return showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
insetPadding: EdgeInsets.symmetric(
horizontal: Constant.getActualX(context: context, x: 35),
),
title: const Text(
"Konfirmasi Pekerjaan",
style: TextStyle(fontWeight: FontWeight.bold),
),
content: tipe == "Tolak"
? TolakDialog(
tipeid: tipeid,
tipee: tipee,
tujuann: tujuann,
penerimaa: penerimaa,
noteKurir: noteKurir,
)
: TerimaDialog(
tipeid: tipeid,
tipee: tipee,
tujuann: tujuann,
penerimaa: penerimaa),
actions: [
Container(
padding: EdgeInsets.symmetric(
horizontal: Constant.getActualX(context: context, x: 15),
vertical: Constant.getActualY(context: context, y: 8)),
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
OutlinedButton(
onPressed: () => Navigator.pop(context, 'Cancel'),
style: OutlinedButton.styleFrom(
side: BorderSide(
style: BorderStyle.solid,
color: Constant.textGrey),
shape: RoundedRectangleBorder(
side: BorderSide(
style: BorderStyle.solid,
color: Constant.textPrimary),
borderRadius: BorderRadius.circular(8),
),
),
child: const Text(
"Batal",
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.black),
)),
tipe == "Tolak"
? ElevatedButton(
onPressed: () {
okCallback();
Navigator.of(context).pop();
},
// onPressed: {} () => Navigator.pop(context, 'OK'),
style: ElevatedButton.styleFrom(
backgroundColor: Colors.red,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
),
),
child: const Text(
"Tolak",
style: TextStyle(fontWeight: FontWeight.bold),
),
)
: ElevatedButton(
onPressed: () {
okCallback();
Navigator.pop(context);
},
style: ElevatedButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(8),
),
),
child: const Text(
"Terima",
style: TextStyle(fontWeight: FontWeight.bold),
),
),
]),
],
),
)
],
shape: RoundedRectangleBorder(
side: BorderSide(
color: Theme.of(context).colorScheme.outline,
),
borderRadius: const BorderRadius.all(Radius.circular(12)),
),
);
});
}
class TerimaDialog extends StatelessWidget {
const TerimaDialog({
super.key,
required this.tipeid,
required this.tipee,
required this.tujuann,
required this.penerimaa,
});
final int tipeid;
final String tipee;
final String tujuann;
final String penerimaa;
@override
Widget build(BuildContext context) {
return Container(
child: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
"Anda menerima pekerjaan ini ?",
style: Constant.body2(context: context).copyWith(
fontWeight: FontWeight.w400, color: Constant.textPrimary),
),
Container(
margin: const EdgeInsets.fromLTRB(0, 16, 0, 0),
width: double.infinity,
child: Card(
elevation: 2,
shape: RoundedRectangleBorder(
side: BorderSide(
color: Theme.of(context).colorScheme.outline,
),
borderRadius: const BorderRadius.all(Radius.circular(12)),
),
child: Container(
padding: const EdgeInsets.all(16),
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(
flex: 3,
child: Text("Tipe",
style: Constant.caption1(context: context))),
Expanded(
flex: 5,
child: ChipType(
tipe: tipeid,
name: tipee,
isDetailHistory: false,
),
)
],
),
SizedBox(
height: Constant.getActualY(context: context, y: 5),
),
Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(
flex: 3,
child: Text("Tujuan",
style: Constant.caption1(context: context))),
Expanded(
flex: 5,
child: Text(tujuann,
style: TextStyle(
color: Constant.textGrey, fontSize: 12)))
],
),
SizedBox(
height: Constant.getActualY(context: context, y: 5),
),
Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(
flex: 3,
child: Text("Penerima",
style: Constant.caption1(context: context))),
Expanded(
flex: 5,
child: Text(penerimaa,
style: TextStyle(
color: Constant.textGrey, fontSize: 12)))
],
),
],
),
),
),
),
],
),
),
);
}
}
class TolakDialog extends StatelessWidget {
const TolakDialog({
super.key,
required this.tipeid,
required this.tipee,
required this.tujuann,
required this.penerimaa,
required this.noteKurir,
});
final int tipeid;
final String tipee;
final String tujuann;
final String penerimaa;
final TextEditingController noteKurir;
@override
Widget build(BuildContext context) {
return Container(
child: SingleChildScrollView(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
"Anda menolak pekerjaan ini ?",
style: Constant.body2(context: context).copyWith(
fontWeight: FontWeight.w400, color: Constant.textPrimary),
),
Container(
margin: const EdgeInsets.fromLTRB(0, 16, 0, 25),
width: double.infinity,
child: Card(
elevation: 2,
shape: RoundedRectangleBorder(
side: BorderSide(
color: Theme.of(context).colorScheme.outline,
),
borderRadius: const BorderRadius.all(Radius.circular(12)),
),
child: Container(
padding: const EdgeInsets.all(16),
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(
flex: 3,
child: Text("Tipe",
style: Constant.caption1(context: context))),
Expanded(
flex: 5,
child: ChipType(
tipe: tipeid,
name: tipee,
isDetailHistory: false,
),
)
],
),
SizedBox(
height: Constant.getActualY(context: context, y: 5),
),
Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(
flex: 3,
child: Text("Tujuan",
style: Constant.caption1(context: context))),
Expanded(
flex: 5,
child: Text(tujuann,
style: TextStyle(
color: Constant.textGrey, fontSize: 12)))
],
),
SizedBox(
height: Constant.getActualY(context: context, y: 5),
),
Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(
flex: 3,
child: Text("Penerima",
style: Constant.caption1(context: context))),
Expanded(
flex: 5,
child: Text(penerimaa,
style: TextStyle(
color: Constant.textGrey, fontSize: 12)))
],
),
],
),
),
),
),
TextField(
controller: noteKurir,
maxLines: 1,
decoration: const InputDecoration(
labelStyle: TextStyle(color: Colors.grey),
border: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey),
borderRadius: BorderRadius.all(Radius.circular(12))),
labelText: 'Alasan',
),
)
],
),
));
}
}