Initial commit: Penyerahan final Source code Tugas Akhir
This commit is contained in:
317
lib/screens/checkout/components/atm.dart
Normal file
317
lib/screens/checkout/components/atm.dart
Normal file
@ -0,0 +1,317 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:initial_folder/size_config.dart';
|
||||
import 'package:initial_folder/theme.dart';
|
||||
import 'package:styled_text/styled_text.dart';
|
||||
|
||||
class ATMBNI extends StatelessWidget {
|
||||
final TextStyle baris = thirdTextStyle.copyWith(
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(14),
|
||||
letterSpacing: 0.5,
|
||||
);
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(horizontal: getProportionateScreenWidth(12)),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
StyledText(
|
||||
// text: '1. Open the <bold>BNI Mobile Banking</bold> app and login',
|
||||
text: '1. Masukkan kartu anda',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '2. Choose menu <bold>Transfer</bold>',
|
||||
text: '2. Pilih Bahasa',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '3. Choose menu <bold>Virtual Account Billing</bold>',
|
||||
text: '3. Masukkan <bold>PIN ATM</bold> Anda',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "4. Pilih \"Menu Lainnya\"",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '5. Enter the 16 digits <bold>virtual account number</bold>',
|
||||
text: "5. Pilih \"Transfer\"",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
text:
|
||||
// '6. The billing information will appear on the payment validation page',
|
||||
'6. Pilih Jenis rekening yang akan Anda gunakan',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
text:
|
||||
// '7. If the information is correct, enter your password to proceed the payment',
|
||||
'7. Pilih \"Virtual Account Billing\"',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '8. Your transaction will be processed',
|
||||
text: '8. Masukkan nomor Virtual Account Anda',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
SizedBox(height: getProportionateScreenHeight(10)),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class ATMBCA extends StatelessWidget {
|
||||
final TextStyle baris = thirdTextStyle.copyWith(
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(14),
|
||||
letterSpacing: 0.5,
|
||||
);
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(horizontal: getProportionateScreenWidth(12)),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
StyledText(
|
||||
// text: '1. Open the <bold>BNI Mobile Banking</bold> app and login',
|
||||
text: '1. Masukkan kartu anda ATM dan PIN BCA anda',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '2. Choose menu <bold>Transfer</bold>',
|
||||
text: "2. Pada menu utama, pilih menu \"Transaksi lainnya\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '3. Choose menu <bold>Virtual Account Billing</bold>',
|
||||
text:
|
||||
"3. Pilih menu \"Transfer\" dan kemudian pilih \"BCA Virtual Account\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "4. Masukkan no. BCA Virtual Account & klik \"Lanjutkan\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '5. Enter the 16 digits <bold>virtual account number</bold>',
|
||||
text: "5. Periksa kembali rincian pembayaran anda, lalu pilih Ya",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
SizedBox(height: getProportionateScreenHeight(10)),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class AtmMandiri extends StatelessWidget {
|
||||
final TextStyle baris = thirdTextStyle.copyWith(
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(14),
|
||||
letterSpacing: 0.5,
|
||||
);
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(horizontal: getProportionateScreenWidth(12)),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
StyledText(
|
||||
// text: '1. Open the <bold>BNI Mobile Banking</bold> app and login',
|
||||
text: '1. Masukkan kartu anda ATM dan PIN anda',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '2. Choose menu <bold>Transfer</bold>',
|
||||
text: "2. Pada menu utama, pilih menu \"Bayar/Beli\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '3. Choose menu <bold>Virtual Account Billing</bold>',
|
||||
text:
|
||||
"3. Pilih menu \"Multi Payment\" (jika di layar belum tersedia tekan menu \"Lainnya\" dan pilih \"Multi Payment\") ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text:
|
||||
"4. Masukkan nomor Biller Code pada kode perusahaan & klik \"Benar\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '5. Enter the 16 digits <bold>virtual account number</bold>',
|
||||
text:
|
||||
"5. Masukkan kode pembayaran (kode pembayaran Mandiri billpayment anda)",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
StyledText(
|
||||
// text: '5. Enter the 16 digits <bold>virtual account number</bold>',
|
||||
text:
|
||||
"6. Periksa kembali data transaksi anda dan selesaikan proses pembayaran.",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
SizedBox(height: getProportionateScreenHeight(10)),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class AtmPermata extends StatelessWidget {
|
||||
final TextStyle baris = thirdTextStyle.copyWith(
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(14),
|
||||
letterSpacing: 0.5,
|
||||
);
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(horizontal: getProportionateScreenWidth(12)),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
StyledText(
|
||||
// text: '1. Open the <bold>BNI Mobile Banking</bold> app and login',
|
||||
text: '1. Masukkan kartu ATM dan PIN anda',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '2. Choose menu <bold>Transfer</bold>',
|
||||
text: "2. Pada menu \"Transaksi Lainnya\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '3. Choose menu <bold>Virtual Account Billing</bold>',
|
||||
text:
|
||||
"3. Pilih menu \"Pembayaran\" kemudian Pilih \"Menu Pembayaran Lainnya\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "4. Pilih menu \"VIRTUAL ACCOUNT\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '5. Enter the 16 digits <bold>virtual account number</bold>',
|
||||
text: "5. Masukkan nomor \"VIRTUAL ACCOUNT\", dan tekan \"BENAR\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '5. Enter the 16 digits <bold>virtual account number</bold>',
|
||||
text:
|
||||
"6. Pilih rekening yang menjadi sumber dana yang akan didebet, lalu tekan YA untuk konfirmasi transaksi",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
SizedBox(height: getProportionateScreenHeight(10)),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
61
lib/screens/checkout/components/bar_batas_bayar.dart
Normal file
61
lib/screens/checkout/components/bar_batas_bayar.dart
Normal file
@ -0,0 +1,61 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:initial_folder/size_config.dart';
|
||||
import 'package:initial_folder/theme.dart';
|
||||
import 'package:styled_text/styled_text.dart';
|
||||
|
||||
class BarBatasBayar extends StatelessWidget {
|
||||
String storeName;
|
||||
BarBatasBayar(this.storeName);
|
||||
final TextStyle baris = thirdTextStyle.copyWith(
|
||||
fontFamily: "Poppins",
|
||||
fontSize: getProportionateScreenWidth(13),
|
||||
);
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
String store = storeName == 'indomaret' ? 'Indomaret' : 'Alfamart';
|
||||
return Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
horizontal: getProportionateScreenWidth(12),
|
||||
vertical: getProportionateScreenHeight(12),
|
||||
),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
StyledText(
|
||||
text: '1. Datang ke<bold> $store</bold>',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
text: '2. Tunjukkan <bold>kode pembayaran</bold> ke kasir',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
text:
|
||||
'3. Bayar dengan uang tunai sesuai dengan total pembayaran (sudah termasuk biaya layanan)',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
text: '4. Transaksi selesai, simpan bukti pembayaran Anda',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
SizedBox(height: 4)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
263
lib/screens/checkout/components/bottom_sheet_detail.dart
Normal file
263
lib/screens/checkout/components/bottom_sheet_detail.dart
Normal file
@ -0,0 +1,263 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:initial_folder/providers/order_provider.dart' as orderProvider;
|
||||
import 'package:initial_folder/providers/payments_provider.dart';
|
||||
import 'package:initial_folder/providers/user_info_provider.dart'
|
||||
as userInfoProvider;
|
||||
import 'package:initial_folder/size_config.dart';
|
||||
import 'package:initial_folder/theme.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class BottomSheetDetail extends StatelessWidget {
|
||||
Map<String, String> paymentMethod = {
|
||||
'echannel': 'Bank Transfer',
|
||||
'bank_transfer': 'Bank Transfer',
|
||||
'credit_card': 'Kartu Kredit',
|
||||
'gopay': 'GoPay',
|
||||
'cstore': 'Gerai'
|
||||
};
|
||||
|
||||
Widget listCourse({String? title, String? instructor, String? price}) {
|
||||
return Container(
|
||||
padding: EdgeInsets.symmetric(vertical: 8),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Flexible(
|
||||
flex: 7,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
title!,
|
||||
// "428 Menit Menjadi Pengusaha Sukses",
|
||||
maxLines: 2,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: primaryTextStyle.copyWith(
|
||||
letterSpacing: 0.5,
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(11),
|
||||
color: tenthColor,
|
||||
),
|
||||
),
|
||||
SizedBox(height: 4),
|
||||
Text(
|
||||
'Oleh $instructor',
|
||||
// 'Oleh Farid Subkhan',
|
||||
|
||||
style: primaryTextStyle.copyWith(
|
||||
letterSpacing: 0.5,
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(9.5),
|
||||
color: secondaryColor,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Flexible(
|
||||
flex: 3,
|
||||
child: Text(
|
||||
'Rp. ${NumberFormat.currency(locale: 'id', symbol: '', decimalDigits: 0).format(double.parse(price!))}',
|
||||
// 'Rp. ${NumberFormat.currency(locale: 'id', symbol: '', decimalDigits: 0).format(50000.0)}',
|
||||
|
||||
style: primaryTextStyle.copyWith(
|
||||
letterSpacing: 0.5,
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(12),
|
||||
color: tenthColor,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var dataOrder =
|
||||
Provider.of<PaymentsProvider>(context, listen: false).detailOrder;
|
||||
var dataCourse =
|
||||
Provider.of<orderProvider.OrderProvider>(context, listen: false).orders;
|
||||
var dataUser =
|
||||
Provider.of<userInfoProvider.UserInfoProvider>(context, listen: false)
|
||||
.result;
|
||||
return Container(
|
||||
decoration: BoxDecoration(
|
||||
// color: Colors.red,
|
||||
borderRadius: BorderRadius.vertical(top: Radius.circular(20))),
|
||||
foregroundDecoration: BoxDecoration(
|
||||
// color: Colors.red,
|
||||
borderRadius: BorderRadius.all(Radius.circular(20))),
|
||||
child: ListView(
|
||||
shrinkWrap: true,
|
||||
physics: NeverScrollableScrollPhysics(),
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
icon: Icon(Icons.keyboard_arrow_down)),
|
||||
Text('Detail Pembayaran')
|
||||
],
|
||||
),
|
||||
Container(
|
||||
height: 6,
|
||||
color: Color(0xff181818),
|
||||
),
|
||||
Container(
|
||||
height: MediaQuery.of(context).size.height * 0.4,
|
||||
child: ListView(
|
||||
shrinkWrap: true,
|
||||
children: [
|
||||
Container(
|
||||
padding: EdgeInsets.symmetric(horizontal: 15, vertical: 20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text('Informasi Pembeli'),
|
||||
Divider(),
|
||||
Text(
|
||||
'Order ID',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 10, color: Color(0xffbfbfbf)),
|
||||
),
|
||||
Text(
|
||||
dataOrder[0].idOrder,
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 12, color: Color(0xffF4f4f4)),
|
||||
),
|
||||
SizedBox(
|
||||
height: 15,
|
||||
),
|
||||
Text(
|
||||
'Nama Lengkap',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 10, color: Color(0xffbfbfbf)),
|
||||
),
|
||||
Text(
|
||||
dataUser!.data[0].fullname!,
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 12, color: Color(0xffF4f4f4)),
|
||||
),
|
||||
SizedBox(
|
||||
height: 15,
|
||||
),
|
||||
Text(
|
||||
'Email',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 10, color: Color(0xffbfbfbf)),
|
||||
),
|
||||
Text(
|
||||
dataUser.data[0].email!,
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 12, color: Color(0xffF4f4f4)),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
height: 6,
|
||||
color: Color(0xff181818),
|
||||
),
|
||||
Container(
|
||||
padding: EdgeInsets.symmetric(horizontal: 15, vertical: 20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text('Informasi Pembayaran'),
|
||||
Divider(),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text('Metode Pembayaran',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 12, color: Color(0xffbfbfbf))),
|
||||
Text(paymentMethod[dataOrder[0].paymentType]!,
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 12, color: Color(0xffF4f4f4))),
|
||||
],
|
||||
),
|
||||
Divider(),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text('Total Harga',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 10, color: Color(0xffbfbfbf))),
|
||||
Text(
|
||||
'Rp. ${NumberFormat.currency(locale: 'id', symbol: '', decimalDigits: 0).format(double.parse(dataOrder[0].totalPayment))}',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 12, color: Color(0xffF4f4f4))),
|
||||
],
|
||||
),
|
||||
SizedBox(height: 15),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text('Potongan Kupon',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 10, color: Color(0xffbfbfbf))),
|
||||
Text('Rp. 0',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 12, color: Color(0xffF4f4f4))),
|
||||
],
|
||||
),
|
||||
Divider(),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text('Total Bayar',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 12, color: Color(0xffbfbfbf))),
|
||||
Text(
|
||||
'Rp. ${NumberFormat.currency(locale: 'id', symbol: '', decimalDigits: 0).format(double.parse(dataOrder[0].totalPayment))}',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 12, color: Color(0xffF4f4f4))),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
height: 6,
|
||||
color: Color(0xff181818),
|
||||
),
|
||||
Container(
|
||||
padding: EdgeInsets.symmetric(horizontal: 15, vertical: 20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text('Kursus Yang Dibeli'),
|
||||
Divider(),
|
||||
Column(
|
||||
children: dataCourse.map((course) {
|
||||
return listCourse(
|
||||
title: course.title,
|
||||
instructor: course.instructor,
|
||||
price: course.discountPrice == "0"
|
||||
? course.price
|
||||
: course.discountPrice,
|
||||
);
|
||||
}).toList()),
|
||||
// listCourse(),
|
||||
// listCourse(),
|
||||
// listCourse(),
|
||||
// Text('Halo'),
|
||||
// Text('Halo'),
|
||||
// Text('Halo'),
|
||||
// Text('Halo')
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
262
lib/screens/checkout/components/bottom_sheet_history.dart
Normal file
262
lib/screens/checkout/components/bottom_sheet_history.dart
Normal file
@ -0,0 +1,262 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:initial_folder/providers/order_provider.dart' as orderProvider;
|
||||
import 'package:initial_folder/providers/payments_provider.dart';
|
||||
import 'package:initial_folder/providers/total_price_provider.dart';
|
||||
import 'package:initial_folder/providers/user_info_provider.dart'
|
||||
as userInfoProvider;
|
||||
import 'package:initial_folder/size_config.dart';
|
||||
import 'package:initial_folder/theme.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class BottomSheetHistory extends StatelessWidget {
|
||||
Map<String, String> paymentMethod = {
|
||||
'echannel': 'Bank Transfer',
|
||||
'bank_transfer': 'Bank Transfer',
|
||||
'credit_card': 'Kartu Kredit',
|
||||
'gopay': 'GoPay',
|
||||
'cstore': 'Gerai'
|
||||
};
|
||||
|
||||
Widget listCourse({String? title, String? instructor, String? price}) {
|
||||
return Container(
|
||||
padding: EdgeInsets.symmetric(vertical: 8),
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Flexible(
|
||||
flex: 7,
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
title!,
|
||||
// "428 Menit Menjadi Pengusaha Sukses",
|
||||
maxLines: 2,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
style: primaryTextStyle.copyWith(
|
||||
letterSpacing: 0.5,
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(11),
|
||||
color: tenthColor,
|
||||
),
|
||||
),
|
||||
SizedBox(height: 4),
|
||||
Text(
|
||||
'Oleh $instructor',
|
||||
// 'Oleh Farid Subkhan',
|
||||
|
||||
style: primaryTextStyle.copyWith(
|
||||
letterSpacing: 0.5,
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(9.5),
|
||||
color: secondaryColor,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Flexible(
|
||||
flex: 3,
|
||||
child: Text(
|
||||
'Rp. ${NumberFormat.currency(locale: 'id', symbol: '', decimalDigits: 0).format(double.parse(price!))}',
|
||||
// 'Rp. ${NumberFormat.currency(locale: 'id', symbol: '', decimalDigits: 0).format(50000.0)}',
|
||||
|
||||
style: primaryTextStyle.copyWith(
|
||||
letterSpacing: 0.5,
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(12),
|
||||
color: tenthColor,
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var dataOrder =
|
||||
Provider.of<PaymentsProvider>(context, listen: false).detailOrder;
|
||||
var dataCourse =
|
||||
Provider.of<orderProvider.OrderProvider>(context, listen: false).orders;
|
||||
var dataUser =
|
||||
Provider.of<userInfoProvider.UserInfoProvider>(context, listen: false)
|
||||
.result;
|
||||
int totalPrices = Provider.of<TotalPriceProvider>(context).totalPrices!;
|
||||
return Container(
|
||||
decoration: BoxDecoration(
|
||||
// color: Colors.red,
|
||||
borderRadius: BorderRadius.vertical(top: Radius.circular(20))),
|
||||
foregroundDecoration: BoxDecoration(
|
||||
// color: Colors.red,
|
||||
borderRadius: BorderRadius.all(Radius.circular(20))),
|
||||
child: ListView(
|
||||
shrinkWrap: true,
|
||||
physics: NeverScrollableScrollPhysics(),
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
Navigator.pop(context);
|
||||
},
|
||||
icon: Icon(Icons.keyboard_arrow_down)),
|
||||
Text('Detail Pembayaran')
|
||||
],
|
||||
),
|
||||
Container(
|
||||
height: 6,
|
||||
color: Color(0xff181818),
|
||||
),
|
||||
Container(
|
||||
height: MediaQuery.of(context).size.height * 0.4,
|
||||
child: ListView(
|
||||
shrinkWrap: true,
|
||||
children: [
|
||||
Container(
|
||||
padding: EdgeInsets.symmetric(horizontal: 15, vertical: 20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text('Informasi Pembeli'),
|
||||
Divider(),
|
||||
Text(
|
||||
'Order ID',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 10, color: Color(0xffbfbfbf)),
|
||||
),
|
||||
Text(
|
||||
dataOrder[0].idOrder,
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 12, color: Color(0xffF4f4f4)),
|
||||
),
|
||||
SizedBox(
|
||||
height: 15,
|
||||
),
|
||||
Text(
|
||||
'Nama Lengkap',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 10, color: Color(0xffbfbfbf)),
|
||||
),
|
||||
Text(
|
||||
dataUser!.data[0].fullname!,
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 12, color: Color(0xffF4f4f4)),
|
||||
),
|
||||
SizedBox(
|
||||
height: 15,
|
||||
),
|
||||
Text(
|
||||
'Email',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 10, color: Color(0xffbfbfbf)),
|
||||
),
|
||||
Text(
|
||||
dataUser.data[0].email!,
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 12, color: Color(0xffF4f4f4)),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
height: 6,
|
||||
color: Color(0xff181818),
|
||||
),
|
||||
Container(
|
||||
padding: EdgeInsets.symmetric(horizontal: 15, vertical: 20),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text('Informasi Pembayaran'),
|
||||
Divider(),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text('Metode Pembayaran',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 12, color: Color(0xffbfbfbf))),
|
||||
Text(paymentMethod[dataOrder[0].paymentType]!,
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 12, color: Color(0xffF4f4f4))),
|
||||
],
|
||||
),
|
||||
Divider(),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text('Total Harga',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 10, color: Color(0xffbfbfbf))),
|
||||
Text(
|
||||
'Rp. ${NumberFormat.currency(locale: 'id', symbol: '', decimalDigits: 0).format(double.parse(Provider.of<TotalPriceProvider>(context).totalPrices.toString()))}',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 12, color: Color(0xffF4f4f4))),
|
||||
],
|
||||
),
|
||||
SizedBox(height: 15),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text('Potongan Kupon',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 10, color: Color(0xffbfbfbf))),
|
||||
Text('Rp. 0',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 12, color: Color(0xffF4f4f4))),
|
||||
],
|
||||
),
|
||||
Divider(),
|
||||
Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text('Total Bayar',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 12, color: Color(0xffbfbfbf))),
|
||||
Text(
|
||||
'Rp. ${NumberFormat.currency(locale: 'id', symbol: '', decimalDigits: 0).format(double.parse(Provider.of<TotalPriceProvider>(context).totalPrices.toString()))}',
|
||||
style: primaryTextStyle.copyWith(
|
||||
fontSize: 12, color: Color(0xffF4f4f4))),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
Container(
|
||||
height: 6,
|
||||
color: Color(0xff181818),
|
||||
),
|
||||
// Container(
|
||||
// padding: EdgeInsets.symmetric(horizontal: 15, vertical: 20),
|
||||
// child: Column(
|
||||
// crossAxisAlignment: CrossAxisAlignment.start,
|
||||
// children: [
|
||||
// Text('Kursus Yang Dibeli'),
|
||||
// Divider(),
|
||||
// Column(
|
||||
// children: dataCourse.map((course) {
|
||||
// return listCourse(
|
||||
// title: course.title,
|
||||
// instructor: course.instructor,
|
||||
// price: course.discountPrice);
|
||||
// }).toList()),
|
||||
// listCourse(),
|
||||
// listCourse(),
|
||||
// listCourse(),
|
||||
// Text('Halo'),
|
||||
// Text('Halo'),
|
||||
// Text('Halo'),
|
||||
// Text('Halo')
|
||||
// ],
|
||||
// ),
|
||||
// )
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
29
lib/screens/checkout/components/cardmonth.dart
Normal file
29
lib/screens/checkout/components/cardmonth.dart
Normal file
@ -0,0 +1,29 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
class CardMonthInputFormatter extends TextInputFormatter {
|
||||
@override
|
||||
TextEditingValue formatEditUpdate(
|
||||
TextEditingValue oldValue, TextEditingValue newValue) {
|
||||
var masaController = newValue.text;
|
||||
if (newValue.selection.baseOffset == 0) {
|
||||
return newValue;
|
||||
}
|
||||
|
||||
var buffer = new StringBuffer();
|
||||
|
||||
for (int i = 0; i < masaController.length; i++) {
|
||||
buffer.write(masaController[i]);
|
||||
var nonZeroIndex = i + 1;
|
||||
|
||||
if (nonZeroIndex % 2 == 0 && nonZeroIndex != masaController.length) {
|
||||
buffer.write('/');
|
||||
}
|
||||
}
|
||||
|
||||
var string = buffer.toString();
|
||||
return newValue.copyWith(
|
||||
text: string,
|
||||
selection: new TextSelection.collapsed(offset: string.length));
|
||||
}
|
||||
}
|
28
lib/screens/checkout/components/cardnumber.dart
Normal file
28
lib/screens/checkout/components/cardnumber.dart
Normal file
@ -0,0 +1,28 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
class CardNumberInputFormatter extends TextInputFormatter {
|
||||
@override
|
||||
TextEditingValue formatEditUpdate(
|
||||
TextEditingValue oldValue, TextEditingValue newValue) {
|
||||
var text = newValue.text;
|
||||
|
||||
if (newValue.selection.baseOffset == 0) {
|
||||
return newValue;
|
||||
}
|
||||
|
||||
var buffer = new StringBuffer();
|
||||
for (int i = 0; i < text.length; i++) {
|
||||
buffer.write(text[i]);
|
||||
var nonZeroIndex = i + 1;
|
||||
if (nonZeroIndex % 4 == 0 && nonZeroIndex != text.length) {
|
||||
buffer.write(' '); // Add double spaces.
|
||||
}
|
||||
}
|
||||
|
||||
var string = buffer.toString();
|
||||
return newValue.copyWith(
|
||||
text: string,
|
||||
selection: new TextSelection.collapsed(offset: string.length));
|
||||
}
|
||||
}
|
159
lib/screens/checkout/components/course_list.dart
Normal file
159
lib/screens/checkout/components/course_list.dart
Normal file
@ -0,0 +1,159 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:initial_folder/size_config.dart';
|
||||
import 'package:initial_folder/theme.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
|
||||
class CourseList extends StatelessWidget {
|
||||
const CourseList({
|
||||
Key? key,
|
||||
required this.idCourse,
|
||||
required this.title,
|
||||
required this.price,
|
||||
required this.discountPrice,
|
||||
required this.imageUrl,
|
||||
this.isDetailCourse,
|
||||
}) : super(key: key);
|
||||
|
||||
final String idCourse;
|
||||
final String title;
|
||||
final String price;
|
||||
final String discountPrice;
|
||||
final String imageUrl;
|
||||
final bool? isDetailCourse;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
print("Ini price ${price}");
|
||||
print("Ini discountPrice ${discountPrice}");
|
||||
return Column(
|
||||
children: [
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Flexible(
|
||||
flex: 10,
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
width: getProportionateScreenWidth(70),
|
||||
height: getProportionateScreenWidth(39),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(5),
|
||||
image: DecorationImage(
|
||||
fit: BoxFit.cover,
|
||||
image: NetworkImage(imageUrl),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
)),
|
||||
SizedBox(width: getProportionateScreenWidth(10)),
|
||||
Expanded(
|
||||
flex: 15,
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
title,
|
||||
style: thirdTextStyle.copyWith(
|
||||
letterSpacing: 0.5,
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(12),
|
||||
),
|
||||
maxLines: 2,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
],
|
||||
)),
|
||||
Spacer(),
|
||||
Flexible(
|
||||
flex: 10,
|
||||
child: Align(
|
||||
alignment: Alignment.centerRight,
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
crossAxisAlignment: CrossAxisAlignment.end,
|
||||
children: [
|
||||
if (isDetailCourse == null)
|
||||
discountPrice == "0"
|
||||
? Text(
|
||||
'Rp. ${NumberFormat.currency(locale: 'id', symbol: '', decimalDigits: 0).format(double.parse(price))}',
|
||||
style: thirdTextStyle.copyWith(
|
||||
letterSpacing: 0.5,
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(11),
|
||||
),
|
||||
)
|
||||
: Text(
|
||||
'Rp. ${NumberFormat.currency(locale: 'id', symbol: '', decimalDigits: 0).format(double.parse(price))}',
|
||||
style: thirdTextStyle.copyWith(
|
||||
letterSpacing: 0.5,
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(11),
|
||||
),
|
||||
)
|
||||
else
|
||||
discountPrice == "0"
|
||||
? Text(
|
||||
'Rp. ${NumberFormat.currency(locale: 'id', symbol: '', decimalDigits: 0).format(double.parse(price))}',
|
||||
style: thirdTextStyle.copyWith(
|
||||
letterSpacing: 0.5,
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(11),
|
||||
),
|
||||
)
|
||||
: Text(
|
||||
'Rp. ${NumberFormat.currency(locale: 'id', symbol: '', decimalDigits: 0).format(double.parse(price == "0" ? discountPrice : price))}',
|
||||
style: thirdTextStyle.copyWith(
|
||||
letterSpacing: 0.5,
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(11),
|
||||
),
|
||||
),
|
||||
if (isDetailCourse == null)
|
||||
if (discountPrice != "0" && discountPrice != price)
|
||||
Text(
|
||||
'Rp ${NumberFormat.currency(locale: 'id', symbol: '', decimalDigits: 0).format(double.parse(discountPrice))}',
|
||||
style: thirdTextStyle.copyWith(
|
||||
letterSpacing: 0.5,
|
||||
decoration: TextDecoration.lineThrough,
|
||||
color: fourthColor,
|
||||
fontWeight: reguler,
|
||||
fontSize: SizeConfig.blockHorizontal! * 2.7,
|
||||
),
|
||||
)
|
||||
else
|
||||
SizedBox.shrink()
|
||||
else if (price != "0")
|
||||
Text(
|
||||
'Rp ${NumberFormat.currency(locale: 'id', symbol: '', decimalDigits: 0).format(double.parse(discountPrice))}',
|
||||
style: thirdTextStyle.copyWith(
|
||||
letterSpacing: 0.5,
|
||||
decoration: TextDecoration.lineThrough,
|
||||
color: fourthColor,
|
||||
fontWeight: reguler,
|
||||
fontSize: SizeConfig.blockHorizontal! * 2.7,
|
||||
),
|
||||
)
|
||||
else
|
||||
SizedBox.shrink(),
|
||||
SizedBox(height: getProportionateScreenHeight(2)),
|
||||
discountPrice != "0" && discountPrice != price
|
||||
? SizedBox()
|
||||
: SizedBox(),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(height: getProportionateScreenHeight(10)),
|
||||
Divider(color: fourthColor),
|
||||
SizedBox(height: getProportionateScreenHeight(5)),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
130
lib/screens/checkout/components/course_list_coupon.dart
Normal file
130
lib/screens/checkout/components/course_list_coupon.dart
Normal file
@ -0,0 +1,130 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:initial_folder/providers/total_price_provider.dart';
|
||||
import 'package:initial_folder/size_config.dart';
|
||||
import 'package:initial_folder/theme.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CourseListCoupon extends StatelessWidget {
|
||||
final String idCourse;
|
||||
final String title;
|
||||
final String price;
|
||||
final String discountPrice;
|
||||
final String imageUrl;
|
||||
const CourseListCoupon({
|
||||
Key? key,
|
||||
required this.idCourse,
|
||||
required this.title,
|
||||
required this.price,
|
||||
required this.discountPrice,
|
||||
required this.imageUrl,
|
||||
}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final priceCoupon = Provider.of<TotalPriceProvider>(context).priceCoupon;
|
||||
return Column(
|
||||
children: [
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Flexible(
|
||||
flex: 10,
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Container(
|
||||
width: getProportionateScreenWidth(70),
|
||||
height: getProportionateScreenWidth(39),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(5),
|
||||
image: DecorationImage(
|
||||
fit: BoxFit.cover,
|
||||
image: NetworkImage(imageUrl),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
)),
|
||||
SizedBox(width: getProportionateScreenWidth(10)),
|
||||
Expanded(
|
||||
flex: 15,
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
title,
|
||||
style: primaryTextStyle.copyWith(
|
||||
letterSpacing: 0.5,
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(12),
|
||||
),
|
||||
maxLines: 2,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
),
|
||||
],
|
||||
)),
|
||||
Spacer(),
|
||||
Flexible(
|
||||
flex: 10,
|
||||
child: Align(
|
||||
alignment: Alignment.centerRight,
|
||||
child: Column(
|
||||
mainAxisAlignment: MainAxisAlignment.end,
|
||||
crossAxisAlignment: CrossAxisAlignment.end,
|
||||
children: [
|
||||
discountPrice == "0"
|
||||
? Text(
|
||||
'Rp. ${NumberFormat.currency(locale: 'id', symbol: '', decimalDigits: 0).format(double.parse(price))}',
|
||||
style: primaryTextStyle.copyWith(
|
||||
letterSpacing: 0.5,
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(12),
|
||||
),
|
||||
)
|
||||
: Text(
|
||||
'Rp. ${NumberFormat.currency(locale: 'id', symbol: '', decimalDigits: 0).format(double.parse(discountPrice))}',
|
||||
style: primaryTextStyle.copyWith(
|
||||
letterSpacing: 0.5,
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(12),
|
||||
),
|
||||
),
|
||||
// Text(
|
||||
// 'Rp ${NumberFormat.currency(locale: 'id', symbol: '', decimalDigits: 0).format(double.parse(price))}',
|
||||
// style: primaryTextStyle.copyWith(
|
||||
// letterSpacing: 0.5,
|
||||
// fontWeight: reguler,
|
||||
// fontSize: getProportionateScreenWidth(12),
|
||||
// ),
|
||||
// ),
|
||||
SizedBox(
|
||||
height: getProportionateScreenHeight(2),
|
||||
),
|
||||
priceCoupon.toString() != "0"
|
||||
? Text(
|
||||
'Rp. ${NumberFormat.currency(locale: 'id', symbol: '', decimalDigits: 0).format(double.parse(priceCoupon.toString()))}',
|
||||
style: primaryTextStyle.copyWith(
|
||||
decoration: TextDecoration.lineThrough,
|
||||
color: secondaryColor,
|
||||
letterSpacing: 0.5,
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(10),
|
||||
),
|
||||
)
|
||||
: SizedBox(),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(height: getProportionateScreenHeight(10)),
|
||||
Divider(color: fourthColor),
|
||||
SizedBox(height: getProportionateScreenHeight(5)),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
105
lib/screens/checkout/components/field_kupon.dart
Normal file
105
lib/screens/checkout/components/field_kupon.dart
Normal file
@ -0,0 +1,105 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import '../../../../theme.dart';
|
||||
import '../../../../size_config.dart';
|
||||
|
||||
class FieldKupon extends StatelessWidget {
|
||||
final TextEditingController controler;
|
||||
final IconButton? prefix;
|
||||
const FieldKupon({Key? key, required this.controler, this.prefix})
|
||||
: super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
OutlineInputBorder outlineInputBorder = OutlineInputBorder(
|
||||
borderSide: BorderSide(color: Colors.transparent),
|
||||
gapPadding: 10,
|
||||
);
|
||||
// width: SizeConfig.screenWidth * 0.9,
|
||||
// height: 33,
|
||||
// decoration: BoxDecoration(
|
||||
// color: Colors.white,
|
||||
// borderRadius: BorderRadius.circular(15),
|
||||
// border: Border.all(
|
||||
// color: kSecondaryColor.withOpacity(0.5),
|
||||
// width: 2,
|
||||
|
||||
// return Scaffold(
|
||||
// body: Container(
|
||||
// height: 36,
|
||||
// //padding: EdgeInsets.only(top: getProportionateScreenWidth(20)),
|
||||
// child: TextField(
|
||||
// controller: controler,
|
||||
// cursorColor: secondaryColor,
|
||||
// enabled: true,
|
||||
// //obscureText: true,
|
||||
// textAlignVertical: TextAlignVertical.center,
|
||||
// style: TextStyle(fontSize: 12, color: Colors.white),
|
||||
// onChanged: (value) => print(value),
|
||||
// decoration: InputDecoration(
|
||||
// //isDense: true,
|
||||
// contentPadding: EdgeInsets.only(top: 10, left: 15),
|
||||
// filled: true,
|
||||
// fillColor: Colors.transparent,
|
||||
// enabledBorder: outlineInputBorder,
|
||||
// focusedBorder: outlineInputBorder,
|
||||
// border: outlineInputBorder,
|
||||
// hintText: "Masukkan kode kupon",
|
||||
// hintStyle: primaryTextStyle.copyWith(
|
||||
// fontSize: 12,
|
||||
// color: fourthColor,
|
||||
// fontWeight: reguler,
|
||||
// letterSpacing: 0.5),
|
||||
// ),
|
||||
// ),
|
||||
// ),
|
||||
|
||||
// // SizedBox(height: getProportionateScreenHeight(16)),
|
||||
// );
|
||||
return Column(
|
||||
children: [
|
||||
Container(
|
||||
height: getProportionateScreenHeight(32),
|
||||
decoration: BoxDecoration(
|
||||
borderRadius: BorderRadius.circular(10),
|
||||
color: Theme.of(context).brightness == Brightness.dark
|
||||
? seventeenColor.withOpacity(0.9)
|
||||
: secondaryColor.withOpacity(0.2),
|
||||
),
|
||||
child: TextField(
|
||||
controller: controler,
|
||||
cursorColor: Theme.of(context).colorScheme.onPrimary,
|
||||
enabled: true,
|
||||
textAlignVertical: TextAlignVertical.center,
|
||||
style: TextStyle(
|
||||
fontSize: 14,
|
||||
color: Theme.of(context).colorScheme.onPrimary,
|
||||
),
|
||||
onChanged: (value) => print(value),
|
||||
decoration: InputDecoration(
|
||||
prefix: prefix,
|
||||
contentPadding: EdgeInsets.only(
|
||||
top: getProportionateScreenHeight(10),
|
||||
left: getProportionateScreenWidth(15),
|
||||
),
|
||||
filled: true,
|
||||
fillColor: Colors.transparent,
|
||||
enabledBorder: outlineInputBorder,
|
||||
focusedBorder: outlineInputBorder,
|
||||
border: outlineInputBorder,
|
||||
hintText: "Masukkan kode kupon",
|
||||
hintStyle: thirdTextStyle.copyWith(
|
||||
fontSize: getProportionateScreenWidth(10),
|
||||
color: Theme.of(context).brightness == Brightness.dark
|
||||
? baruTextutih.withOpacity(0.5)
|
||||
: Colors.grey,
|
||||
fontWeight: reguler,
|
||||
letterSpacing: 0.5,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
SizedBox(height: getProportionateScreenHeight(16)),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
337
lib/screens/checkout/components/internet_banking.dart
Normal file
337
lib/screens/checkout/components/internet_banking.dart
Normal file
@ -0,0 +1,337 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:initial_folder/size_config.dart';
|
||||
import 'package:initial_folder/theme.dart';
|
||||
import 'package:styled_text/styled_text.dart';
|
||||
|
||||
class InternetBankBNI extends StatelessWidget {
|
||||
final TextStyle baris = thirdTextStyle.copyWith(
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(14),
|
||||
letterSpacing: 0.5,
|
||||
);
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(horizontal: getProportionateScreenWidth(12)),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
StyledText(
|
||||
// text: '1. Open the <bold>BNI Mobile Banking</bold> app and login',
|
||||
text: '1. Masuk ke https://ibank.bni.co.id',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '2. Choose menu <bold>Transfer</bold>',
|
||||
text: '2. Masukkan User ID dan Password',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '3. Choose menu <bold>Virtual Account Billing</bold>',
|
||||
text:
|
||||
"3. Pilih menu \"Transfer\", lalu pilih \"Tambah Rekening Favorit\". Jika menggunakan Desktop. tambah rekening pada menu \"Transaksi\" kemudian \"Atur Rekening Tujuan\" lalu pilih \"Tambah Rekening Tujuan\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "4. Masukkan nomor Virtual Account",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '5. Enter the 16 digits <bold>virtual account number</bold>',
|
||||
text:
|
||||
"5. Masukkan Kode Otentikasi dan Nomor Rekening berhasil ditambahkan",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
text:
|
||||
// '6. The billing information will appear on the payment validation page',
|
||||
"6. Pilih menu \"Transfer\", lalu pilih \"Transfer Antar Rekening BNI\", pilih \"Rekening Tujuan\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
text:
|
||||
// '7. If the information is correct, enter your password to proceed the payment',
|
||||
"7. Pilih Rekening Debit",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '8. Your transaction will be processed',
|
||||
text: "8. Masukkan jumlah pembayaran sesuai tagihan",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '8. Your transaction will be processed',
|
||||
text: "9. Masukkan Kode Otentikasi",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
SizedBox(height: getProportionateScreenHeight(10)),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class InternetBankBCA extends StatelessWidget {
|
||||
final TextStyle baris = thirdTextStyle.copyWith(
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(14),
|
||||
letterSpacing: 0.5,
|
||||
);
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(horizontal: getProportionateScreenWidth(12)),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
StyledText(
|
||||
// text: '1. Open the <bold>BNI Mobile Banking</bold> app and login',
|
||||
text: '1. Login pada aplikasi KlikBCA, masukkan user ID & PIN.',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '2. Choose menu <bold>Transfer</bold>',
|
||||
text:
|
||||
"2. Pilih \"Transfer Dana\", kemudian pilih \"Transfer ke BCA Virtual Account\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '3. Choose menu <bold>Virtual Account Billing</bold>',
|
||||
text: "3. Masukkan no. BCA Virtual Account & klik \"Lanjutkan\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text:
|
||||
"4. Pastikan data yang dimasukkan sudah benar, dan Input \"Respon KeyBCA\", lalu klik \"Kirim\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
SizedBox(height: getProportionateScreenHeight(10)),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class InternetBankMandiri extends StatelessWidget {
|
||||
final TextStyle baris = thirdTextStyle.copyWith(
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(14),
|
||||
letterSpacing: 0.5,
|
||||
);
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(horizontal: getProportionateScreenWidth(12)),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
StyledText(
|
||||
// text: '1. Open the <bold>BNI Mobile Banking</bold> app and login',
|
||||
text: '1. Lakukan Login ke Internet Banking Mandiri kamu.',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '2. Choose menu <bold>Transfer</bold>',
|
||||
text:
|
||||
"2. Pada menu utama, pilih menu \"Bayar\" lalu pilih menu \"Multi Payment\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '3. Choose menu <bold>Virtual Account Billing</bold>',
|
||||
text:
|
||||
"3. Pilih akun anda di bagian Dari Rekening, kemudian di Penyedia Jasa ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text:
|
||||
"4. Masukkan kode pembayaran (kode pembayaran Mandiri billpayment kamu), dan klik \"Lanjutkan\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text:
|
||||
"5. Periksa kembali nama perusahaan, nomor pesanan, dan jumlah pembayaran anda ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "6. Selesaikan pembayaran dengan menggunakan Token Mandiri ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
SizedBox(height: getProportionateScreenHeight(10)),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class InternetBankPermata extends StatelessWidget {
|
||||
final TextStyle baris = thirdTextStyle.copyWith(
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(14),
|
||||
letterSpacing: 0.5,
|
||||
);
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(horizontal: getProportionateScreenWidth(12)),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
StyledText(
|
||||
// text: '1. Open the <bold>BNI Mobile Banking</bold> app and login',
|
||||
text: '1. Buka Website PermataNet',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '2. Choose menu <bold>Transfer</bold>',
|
||||
text: "2. Masukan User ID dan Password ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '3. Choose menu <bold>Virtual Account Billing</bold>',
|
||||
text: "3. Pilih Pembayaran Tagihan ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "4. Pilih Virtual Account ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "5. Masukkan 16 digit kode bayar ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "6. Masukkan nominal pembayaran ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "7. Muncul konfirmasi pembayaran ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "8. Masukan Mobile PIN",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
SizedBox(height: getProportionateScreenHeight(10)),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
351
lib/screens/checkout/components/mobile_banking.dart
Normal file
351
lib/screens/checkout/components/mobile_banking.dart
Normal file
@ -0,0 +1,351 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:initial_folder/size_config.dart';
|
||||
import 'package:initial_folder/theme.dart';
|
||||
import 'package:styled_text/styled_text.dart';
|
||||
|
||||
class MobileBankBNI extends StatelessWidget {
|
||||
final TextStyle baris = thirdTextStyle.copyWith(
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(14),
|
||||
letterSpacing: 0.5,
|
||||
);
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(horizontal: getProportionateScreenWidth(12)),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
StyledText(
|
||||
// text: '1. Open the <bold>BNI Mobile Banking</bold> app and login',
|
||||
text: "1. Akses BNI Mobile Banking melalui handphone",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '2. Choose menu <bold>Transfer</bold>',
|
||||
text: "2. Masukkan User ID dan Password",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '3. Choose menu <bold>Virtual Account Billing</bold>',
|
||||
text:
|
||||
"3. Pilih menu \"Transfer\", lalu pilih \"Antar Rekening BNI\", pilih \"Input Rekening Baru\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "4. Masukkan nomor Virtual Account",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '5. Enter the 16 digits <bold>virtual account number</bold>',
|
||||
text:
|
||||
"5.Di halaman konfirmasi, pastikan data transaksi sudah benar kemudian pilih \"Ya\"",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
text:
|
||||
// '6. The billing information will appear on the payment validation page',
|
||||
"6. Masukkan password anda ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
SizedBox(height: getProportionateScreenHeight(10)),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class MobileBankBCA extends StatelessWidget {
|
||||
final TextStyle baris = thirdTextStyle.copyWith(
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(14),
|
||||
letterSpacing: 0.5,
|
||||
);
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(horizontal: getProportionateScreenWidth(12)),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
StyledText(
|
||||
// text: '1. Open the <bold>BNI Mobile Banking</bold> app and login',
|
||||
text: '1. Lakukan log in pada aplikasi BCA mobile.',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '2. Choose menu <bold>Transfer</bold>',
|
||||
text: "2. Pilih \"m-BCA\" masukan kode akses m-BCA. ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '3. Choose menu <bold>Virtual Account Billing</bold>',
|
||||
text: "3. Pilih \"m-Transfer\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "4. Pilih \"BCA Virtual Account\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "5. Masukkan nomor BCA Virtual Account dan klik \"OK\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "6. Konfirmasi no virtual account dan rekening pendebetan ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text:
|
||||
"7. Periksa kembalian rincian pembayaran kamu, lalu klik \"Ya\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "8. Masukan pin m-BCA ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
SizedBox(height: getProportionateScreenHeight(10)),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class MobileBankMandiri extends StatelessWidget {
|
||||
final TextStyle baris = thirdTextStyle.copyWith(
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(14),
|
||||
letterSpacing: 0.5,
|
||||
);
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(horizontal: getProportionateScreenWidth(12)),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
StyledText(
|
||||
// text: '1. Open the <bold>BNI Mobile Banking</bold> app and login',
|
||||
text: '1. Lakukan Login ke Mandiri Online kamu',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '2. Choose menu <bold>Transfer</bold>',
|
||||
text: "2. Pada menu utama, pilih menu \"Bayar\"",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '3. Choose menu <bold>Virtual Account Billing</bold>',
|
||||
text: "3. Lalu pilih menu \"Multi Payment\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "4. kemudian pilih Penyedia Jasa ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text:
|
||||
"5. Masukkan kode pembayaran [Kode pembayaran Mandiri billpayment], dan klik \"Lanjutkan\" ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text:
|
||||
"6. Periksa kembali data transaksi kamu dan selesaikan proses pembayaran ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
SizedBox(height: getProportionateScreenHeight(10)),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class MobileBankPermata extends StatelessWidget {
|
||||
final TextStyle baris = thirdTextStyle.copyWith(
|
||||
fontWeight: reguler,
|
||||
fontSize: getProportionateScreenWidth(14),
|
||||
letterSpacing: 0.5,
|
||||
);
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Padding(
|
||||
padding:
|
||||
EdgeInsets.symmetric(horizontal: getProportionateScreenWidth(12)),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
StyledText(
|
||||
// text: '1. Open the <bold>BNI Mobile Banking</bold> app and login',
|
||||
text: '1. Buka aplikasi PermataMobile X',
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '2. Choose menu <bold>Transfer</bold>',
|
||||
text: "2. Masukan Password ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '3. Choose menu <bold>Virtual Account Billing</bold>',
|
||||
text: "3. Pilih Pembayaran Tagihan ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "4. Pilih Virtual Account ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "5. Masukan Nomor Virtual Account ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "6. Pilih Rekening",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "7. Masukkan nominal pembayaran ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "8. Muncul konfirmasi pembayaran ",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
Divider(color: Color(0xff2D2D2D), thickness: 0.5, height: 35),
|
||||
StyledText(
|
||||
// text: '4. Choose the bank account you want to use',
|
||||
text: "9. Masukan Mobile PIN",
|
||||
style: baris,
|
||||
tags: {
|
||||
'bold': StyledTextTag(style: TextStyle(fontWeight: bold)),
|
||||
},
|
||||
),
|
||||
SizedBox(height: getProportionateScreenHeight(10)),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
145
lib/screens/checkout/components/tab_bar_batas_bayar.dart
Normal file
145
lib/screens/checkout/components/tab_bar_batas_bayar.dart
Normal file
@ -0,0 +1,145 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:initial_folder/models/detail_order_model.dart';
|
||||
import 'package:initial_folder/providers/payments_provider.dart' as payProv;
|
||||
import 'package:initial_folder/providers/tab_provider.dart';
|
||||
import 'package:initial_folder/screens/checkout/components/atm.dart';
|
||||
import 'package:initial_folder/screens/checkout/components/internet_banking.dart';
|
||||
import 'package:initial_folder/screens/checkout/components/mobile_banking.dart';
|
||||
import 'package:initial_folder/size_config.dart';
|
||||
import 'package:initial_folder/theme.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class TabBarBatasBayar extends StatelessWidget {
|
||||
TabBarBatasBayar({
|
||||
Key? key,
|
||||
this.bank,
|
||||
}) : super(key: key);
|
||||
|
||||
final String? bank;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
print("Apa hayoo ${bank}");
|
||||
List<DetailOrderModel> detailOrder =
|
||||
Provider.of<payProv.PaymentsProvider>(context).detailOrder;
|
||||
String? bankName = detailOrder.isNotEmpty ? detailOrder[0].bankName : null;
|
||||
print("Apa hayoo2 ${bankName}");
|
||||
TabProvider tab = Provider.of<TabProvider>(context);
|
||||
|
||||
Widget buildContent(int currentIndex) {
|
||||
switch (currentIndex) {
|
||||
case 0:
|
||||
switch (bank ?? bankName) {
|
||||
case 'bni':
|
||||
return ATMBNI();
|
||||
case 'bca':
|
||||
return ATMBCA();
|
||||
case 'mandiri':
|
||||
case 'echannel':
|
||||
return AtmMandiri();
|
||||
case 'permata':
|
||||
return AtmPermata();
|
||||
default:
|
||||
return SizedBox();
|
||||
}
|
||||
case 1:
|
||||
switch (bank ?? bankName) {
|
||||
case 'bni':
|
||||
return InternetBankBNI();
|
||||
case 'bca':
|
||||
return InternetBankBCA();
|
||||
case 'mandiri':
|
||||
case 'echannel':
|
||||
return InternetBankMandiri();
|
||||
case 'permata':
|
||||
return InternetBankPermata();
|
||||
default:
|
||||
return SizedBox();
|
||||
}
|
||||
case 2:
|
||||
switch (bank ?? bankName) {
|
||||
case 'bni':
|
||||
return MobileBankBNI();
|
||||
case 'bca':
|
||||
return MobileBankBCA();
|
||||
case 'mandiri':
|
||||
case 'echannel':
|
||||
return MobileBankMandiri();
|
||||
case 'permata':
|
||||
return MobileBankPermata();
|
||||
default:
|
||||
return SizedBox();
|
||||
}
|
||||
default:
|
||||
return SizedBox();
|
||||
}
|
||||
}
|
||||
|
||||
return Column(
|
||||
children: [
|
||||
ExpansionTile(
|
||||
title: Text(
|
||||
'ATM',
|
||||
style: thirdTextStyle.copyWith(
|
||||
fontSize: getProportionateScreenWidth(13)),
|
||||
),
|
||||
children: [
|
||||
buildContent(0),
|
||||
],
|
||||
),
|
||||
Container(
|
||||
margin:
|
||||
EdgeInsets.symmetric(horizontal: getProportionateScreenWidth(8)),
|
||||
height: getProportionateScreenHeight(3),
|
||||
decoration: BoxDecoration(
|
||||
color: secondaryColor.withOpacity(0.1),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: secondaryColor.withOpacity(0.1),
|
||||
spreadRadius: 1,
|
||||
blurRadius: 1,
|
||||
offset: Offset(0, 1),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
ExpansionTile(
|
||||
title: Text(
|
||||
'Internet Banking',
|
||||
style: thirdTextStyle.copyWith(
|
||||
fontSize: getProportionateScreenWidth(13)),
|
||||
),
|
||||
children: [
|
||||
buildContent(1),
|
||||
],
|
||||
),
|
||||
Container(
|
||||
margin:
|
||||
EdgeInsets.symmetric(horizontal: getProportionateScreenWidth(8)),
|
||||
height: getProportionateScreenHeight(3),
|
||||
decoration: BoxDecoration(
|
||||
color: secondaryColor.withOpacity(0.1),
|
||||
boxShadow: [
|
||||
BoxShadow(
|
||||
color: secondaryColor.withOpacity(0.1),
|
||||
spreadRadius: 1,
|
||||
blurRadius: 1,
|
||||
offset: Offset(0, 1),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
ExpansionTile(
|
||||
title: Text(
|
||||
'Mobile Banking',
|
||||
style: thirdTextStyle.copyWith(
|
||||
fontSize: getProportionateScreenWidth(13)),
|
||||
),
|
||||
children: [
|
||||
buildContent(2),
|
||||
],
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user