Files
absensi_sas_flutter/lib/screen/approval/approval_screen.dart
2024-02-22 10:38:38 +07:00

160 lines
6.0 KiB
Dart

import 'package:absensi_sas/app/constant.dart';
import 'package:absensi_sas/app/route.dart';
import 'package:absensi_sas/model/approval_model.dart';
import 'package:absensi_sas/provider/approval_filter_provider.dart';
import 'package:absensi_sas/screen/approval/approval_mockup.dart';
import 'package:absensi_sas/screen/approval/widget/approval_card_cuti.dart';
import 'package:absensi_sas/screen/approval/widget/approval_card_lembur.dart';
import 'package:absensi_sas/screen/approval/widget/approval_card_presensi.dart';
import 'package:absensi_sas/screen/approval/widget/approval_filter_chip_widget.dart';
import 'package:absensi_sas/screen/approval/widget/approval_filter_widget.dart';
import 'package:flutter/material.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
class ApprovalScreen extends HookConsumerWidget {
const ApprovalScreen({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final approvalFilterTempProvider = ref.watch(approvalFilterProvider);
final approvalTypeList = approvalFilterTempProvider.approvalTypeList;
final scrollCtr = useScrollController();
final List<ApprovalModel> dataMockup = approvalCardList;
onTap(String tipeID) {
if (tipeID == "1") {
print("Tipe Id 1");
Navigator.pushNamed(context, approvalDetailRoute);
}
}
return SafeArea(
minimum: EdgeInsets.only(
top: Constant.getActualYPhone(context: context, y: 30)),
child: Scaffold(
backgroundColor: Constant.textWhite,
appBar: AppBar(
backgroundColor: Colors.white,
shadowColor: Colors.white,
surfaceTintColor: Colors.white,
scrolledUnderElevation: 0,
elevation: 0,
leading: Container(
child: IconButton(
onPressed: () {
Navigator.pop(context);
},
icon: Icon(Icons.arrow_back_ios_new_rounded)),
),
centerTitle: true,
title: Text(
"Approval",
style: Constant.title_screen(context: context),
),
),
body: Padding(
padding: EdgeInsets.symmetric(
horizontal: Constant.getActualXPhone(context: context, x: 20)),
child: Column(
children: [
Container(
color: Colors.white,
child: Row(
children: [
ApprovalFilterWidget(),
Expanded(
child: LayoutBuilder(
builder: (context, constraints) {
return Container(
width: constraints.maxWidth,
child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Row(
children: [
...approvalTypeList.map(
(e) => ApprovalFilterChipWidget(data: e))
],
),
),
);
},
),
)
],
),
),
SizedBox(
height: Constant.getActualYPhone(context: context, y: 27),
),
Expanded(child: Container(
// color: Colors.red,
child: LayoutBuilder(builder: (context, Constraints) {
return Container(
height: Constraints.maxWidth,
child: RefreshIndicator(
onRefresh: () async {
print("Refresh");
},
child: ListView(
controller: scrollCtr,
children: [
Container(
margin: EdgeInsets.only(bottom: 28),
width: MediaQuery.of(context).size.width,
child: Row(
children: [
Container(
child: Text(
"Februari 2024",
style: Constant.body_16(context: context)
.copyWith(fontWeight: FontWeight.w600),
),
),
Expanded(
child: Container(
margin: EdgeInsets.only(left: 10),
child: Divider(
height: 10,
),
),
)
],
),
),
...dataMockup.map((e) {
switch (e.typeID) {
case "1":
return ApprovalCardPresensi(
data: e,
onTap: onTap,
);
case "2":
return ApprovalCardCuti(
data: e,
);
case "3":
return ApprovalCardLembur(
data: e,
);
default:
return Container();
}
}).toList()
],
),
),
);
}),
))
],
),
),
),
);
}
}