184 lines
6.4 KiB
Dart
184 lines
6.4 KiB
Dart
import 'package:dikantin/app/modules/utils/Konfirmasi.dart';
|
|
import 'package:dikantin/app/modules/utils/kirim.dart';
|
|
import 'package:dikantin/app/modules/utils/proses.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:get/get.dart';
|
|
import 'package:google_fonts/google_fonts.dart';
|
|
import 'package:badges/badges.dart' as badges;
|
|
|
|
import '../../utils/belumbayar.dart';
|
|
import '../controllers/pesanan_controller.dart';
|
|
|
|
class PesananView extends GetView<PesananController> {
|
|
PesananView({Key? key}) : super(key: key);
|
|
PesananController pesananController = Get.find<PesananController>();
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
double textScaleFactor = MediaQuery.of(context).textScaleFactor;
|
|
|
|
final mediaHeight = MediaQuery.of(context).size.height;
|
|
final myAppbar = AppBar(
|
|
elevation: 5, // Menghilangkan shadow di bawah AppBar
|
|
backgroundColor: Colors.white,
|
|
automaticallyImplyLeading: false,
|
|
actions: [
|
|
Center(
|
|
child: Padding(
|
|
padding: const EdgeInsets.all(10.0),
|
|
child: Text(
|
|
"Pesanan Saya ",
|
|
style: GoogleFonts.poppins(
|
|
textStyle: const TextStyle(
|
|
fontSize: 20,
|
|
color: Colors.black,
|
|
fontWeight: FontWeight.w600)),
|
|
),
|
|
),
|
|
),
|
|
],
|
|
title: Container(
|
|
padding: const EdgeInsets.fromLTRB(0, 5, 10, 0),
|
|
child: Image.asset(
|
|
'assets/logo_dikantin.png',
|
|
height: 90, // Sesuaikan dengan tinggi yang Anda inginkan
|
|
width: 90, // Sesuaikan dengan lebar yang Anda inginkan
|
|
fit: BoxFit.cover,
|
|
),
|
|
),
|
|
bottom: TabBar(
|
|
labelColor: Colors.black,
|
|
unselectedLabelColor: Colors.black,
|
|
controller: pesananController.tabController,
|
|
tabs: [
|
|
Tab(child: Obx(() {
|
|
final pesananProses = controller.pesananProses.data ?? [];
|
|
final jumlahTransaksi = pesananProses
|
|
.where((pesanan) =>
|
|
pesanan.transaksi!.detailTransaksi!.isNotEmpty)
|
|
.length;
|
|
final showBadge = pesananController.orderProses.isNotEmpty &&
|
|
jumlahTransaksi != 0;
|
|
|
|
return badges.Badge(
|
|
showBadge: showBadge,
|
|
badgeAnimation: const badges.BadgeAnimation.slide(),
|
|
badgeContent: Text(
|
|
jumlahTransaksi.toString(),
|
|
style: const TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 10,
|
|
),
|
|
),
|
|
position: badges.BadgePosition.topEnd(top: -10, end: -15),
|
|
badgeStyle: const badges.BadgeStyle(
|
|
shape: badges.BadgeShape.circle,
|
|
badgeColor: Colors.orange,
|
|
),
|
|
child: const Text(
|
|
"Diproses",
|
|
style: TextStyle(
|
|
fontSize: 14,
|
|
color: Colors.black,
|
|
),
|
|
),
|
|
);
|
|
})),
|
|
Tab(child: Obx(() {
|
|
return badges.Badge(
|
|
showBadge: (pesananController.orderDikirim.isNotEmpty ?? true),
|
|
badgeAnimation: const badges.BadgeAnimation.slide(),
|
|
badgeContent: Text(
|
|
(pesananController.orderDikirim.length ?? 0).toString(),
|
|
style: const TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 10,
|
|
),
|
|
),
|
|
position: badges.BadgePosition.topEnd(top: -10, end: -15),
|
|
badgeStyle: const badges.BadgeStyle(
|
|
shape: badges.BadgeShape.circle,
|
|
badgeColor: Colors.orange,
|
|
),
|
|
child: const Text(
|
|
"Dikirim",
|
|
style: TextStyle(
|
|
fontSize: 14,
|
|
color: Colors.black,
|
|
),
|
|
),
|
|
);
|
|
})),
|
|
Tab(child: Obx(() {
|
|
final pesananBelumBayar = controller.belumbayar.data ?? [];
|
|
final jumlahTransaksi = pesananBelumBayar
|
|
.where((pesanan) =>
|
|
pesanan.transaksi!.detailTransaksi!.isNotEmpty)
|
|
.length;
|
|
final showBadge = pesananController.belumBayar.isNotEmpty &&
|
|
jumlahTransaksi != 0;
|
|
|
|
return badges.Badge(
|
|
showBadge: showBadge,
|
|
badgeAnimation: const badges.BadgeAnimation.slide(),
|
|
badgeContent: Text(
|
|
jumlahTransaksi.toString(),
|
|
style: const TextStyle(
|
|
color: Colors.white,
|
|
fontSize: 10,
|
|
),
|
|
),
|
|
position: badges.BadgePosition.topEnd(top: -10, end: -15),
|
|
badgeStyle: const badges.BadgeStyle(
|
|
shape: badges.BadgeShape.circle,
|
|
badgeColor: Colors.orange,
|
|
),
|
|
child: const Text(
|
|
"Belum bayar",
|
|
style: TextStyle(
|
|
fontSize: 14,
|
|
color: Colors.black,
|
|
),
|
|
),
|
|
);
|
|
})),
|
|
],
|
|
labelStyle: GoogleFonts.poppins(
|
|
textStyle: const TextStyle(
|
|
fontSize: 14,
|
|
color: Colors.black,
|
|
fontWeight: FontWeight.bold, // Font Weight untuk yang terpilih
|
|
),
|
|
),
|
|
unselectedLabelStyle: GoogleFonts.poppins(
|
|
textStyle: const TextStyle(
|
|
fontSize: 14,
|
|
fontWeight:
|
|
FontWeight.normal, // Font Weight untuk yang tidak terpilih
|
|
),
|
|
)),
|
|
);
|
|
final query = MediaQuery.of(context);
|
|
|
|
return MediaQuery(
|
|
data: query.copyWith(
|
|
textScaler:
|
|
TextScaler.linear(query.textScaleFactor.clamp(1.0, 1.15))),
|
|
child: DefaultTabController(
|
|
length: 3,
|
|
child: Scaffold(
|
|
appBar: myAppbar,
|
|
body: Container(
|
|
decoration: const BoxDecoration(
|
|
color: Colors.white,
|
|
),
|
|
child: TabBarView(
|
|
controller: pesananController.tabController,
|
|
children: const [Proses(), Kirim(), belumbayar()]),
|
|
)),
|
|
),
|
|
);
|
|
}
|
|
}
|