Commit 257cb66a authored by Dio Maulana's avatar Dio Maulana

fixed design

parent 77a3594d
...@@ -8,6 +8,7 @@ import 'package:excelso_attendance/models/branch.dart'; ...@@ -8,6 +8,7 @@ import 'package:excelso_attendance/models/branch.dart';
import 'package:excelso_attendance/models/profile.dart'; import 'package:excelso_attendance/models/profile.dart';
import 'package:excelso_attendance/models/shift.dart'; import 'package:excelso_attendance/models/shift.dart';
import 'package:excelso_attendance/resource/strings.dart'; import 'package:excelso_attendance/resource/strings.dart';
import 'package:geolocator/geolocator.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
class Api { class Api {
...@@ -135,14 +136,14 @@ class Api { ...@@ -135,14 +136,14 @@ class Api {
static Future<ApiResponse> shiftIn( static Future<ApiResponse> shiftIn(
String branchId, String nik, String shiftId, String photoBase64) async { String branchId, String nik, String shiftId, String photoBase64) async {
String apiUrl = "$baseUrl${endPoint}clock_in"; String apiUrl = "$baseUrl${endPoint}clock_in";
Position position = await Geolocator.getCurrentPosition();
try { try {
Map<String, dynamic> data = { Map<String, dynamic> data = {
"branch_id": branchId, "branch_id": branchId,
"nik": nik, "nik": nik,
"shift_id": shiftId, "shift_id": shiftId,
"user_lat": getLatitude(), "user_lat": position.latitude,
"user_long": getLongitude(), "user_long": position.longitude,
"photo_base64": "data:image/jpeg;base64,$photoBase64", "photo_base64": "data:image/jpeg;base64,$photoBase64",
}; };
String bodies = jsonEncode(data); String bodies = jsonEncode(data);
...@@ -183,12 +184,13 @@ class Api { ...@@ -183,12 +184,13 @@ class Api {
String branchId, String nik, String photoBase64) async { String branchId, String nik, String photoBase64) async {
String apiUrl = "$baseUrl${endPoint}clock_out"; String apiUrl = "$baseUrl${endPoint}clock_out";
Position position = await Geolocator.getCurrentPosition();
try { try {
Map<String, dynamic> data = { Map<String, dynamic> data = {
"branch_id": branchId, "branch_id": branchId,
"nik": nik, "nik": nik,
"user_lat": getLatitude(), "user_lat": position.latitude,
"user_long": getLongitude(), "user_long": position.longitude,
"photo_base64": photoBase64, "photo_base64": photoBase64,
}; };
String bodies = jsonEncode(data); String bodies = jsonEncode(data);
......
import 'package:excelso_attendance/models/absent.dart'; import 'package:excelso_attendance/models/absent.dart';
import 'package:excelso_attendance/models/branch.dart'; import 'package:excelso_attendance/models/branch.dart';
import 'package:excelso_attendance/models/profile.dart';
import 'package:excelso_attendance/models/shift.dart'; import 'package:excelso_attendance/models/shift.dart';
class AbsentCameraArguments { class AbsentCameraArguments {
final bool isIn; final bool isIn;
final BranchModel branchModel; final BranchModel branchModel;
final ShiftModel? shiftModel; final ShiftModel? shiftModel;
final ProfileModel profile;
final String nik; final String nik;
AbsentCameraArguments({ AbsentCameraArguments({
required this.isIn, required this.isIn,
required this.branchModel, required this.branchModel,
required this.nik, required this.nik,
required this.profile,
this.shiftModel, this.shiftModel,
}); });
} }
...@@ -28,10 +31,14 @@ class HomeArguments { ...@@ -28,10 +31,14 @@ class HomeArguments {
class AbsentSuccessArguments { class AbsentSuccessArguments {
final AbsentSuccessModel absentSuccess; final AbsentSuccessModel absentSuccess;
final ProfileModel profil;
final String nik;
final bool isIn; final bool isIn;
AbsentSuccessArguments({ AbsentSuccessArguments({
required this.absentSuccess, required this.absentSuccess,
required this.profil,
required this.nik,
required this.isIn, required this.isIn,
}); });
} }
...@@ -11,6 +11,7 @@ import 'package:excelso_attendance/helper/widget_responsive.dart'; ...@@ -11,6 +11,7 @@ import 'package:excelso_attendance/helper/widget_responsive.dart';
import 'package:excelso_attendance/main.dart'; import 'package:excelso_attendance/main.dart';
import 'package:excelso_attendance/models/absent.dart'; import 'package:excelso_attendance/models/absent.dart';
import 'package:excelso_attendance/models/branch.dart'; import 'package:excelso_attendance/models/branch.dart';
import 'package:excelso_attendance/models/profile.dart';
import 'package:excelso_attendance/models/shift.dart'; import 'package:excelso_attendance/models/shift.dart';
import 'package:excelso_attendance/resource/routes.dart'; import 'package:excelso_attendance/resource/routes.dart';
import 'package:excelso_attendance/resource/strings.dart'; import 'package:excelso_attendance/resource/strings.dart';
...@@ -35,12 +36,14 @@ class AbsentCameraView extends StatefulWidget { ...@@ -35,12 +36,14 @@ class AbsentCameraView extends StatefulWidget {
required this.isIn, required this.isIn,
required this.branchModel, required this.branchModel,
required this.nik, required this.nik,
required this.profile,
this.shiftModel, this.shiftModel,
}); });
final bool isIn; final bool isIn;
final BranchModel branchModel; final BranchModel branchModel;
final ShiftModel? shiftModel; final ShiftModel? shiftModel;
final ProfileModel profile;
final String nik; final String nik;
@override @override
...@@ -91,7 +94,7 @@ class _AbsentCameraViewState extends State<AbsentCameraView> { ...@@ -91,7 +94,7 @@ class _AbsentCameraViewState extends State<AbsentCameraView> {
print("JUMLAH CAMERA TEDETEKSI: ${cameras!.length}"); print("JUMLAH CAMERA TEDETEKSI: ${cameras!.length}");
} }
if (cameras!.length > 1) { if (cameras!.length > 1) {
_cameraDescription = cameras![1]; _cameraDescription = cameras![0];
} else { } else {
if (cameras!.isNotEmpty) { if (cameras!.isNotEmpty) {
_cameraDescription = cameras![0]; _cameraDescription = cameras![0];
...@@ -358,16 +361,18 @@ class _AbsentCameraViewState extends State<AbsentCameraView> { ...@@ -358,16 +361,18 @@ class _AbsentCameraViewState extends State<AbsentCameraView> {
), ),
WidgetAbsentAndTime( WidgetAbsentAndTime(
isIn: widget.isIn, isIn: widget.isIn,
outletName: widget.branchModel.code, outletName: widget.branchModel.name,
), ),
const Spacer(), const Spacer(),
(pictureIsTaken) (pictureIsTaken)
? Column( ? Container(
margin: EdgeInsets.symmetric(
horizontal: AppMargin.m20,
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Container( CustomButton(
width: 100,
child: CustomButton(
text: "Submit", text: "Submit",
onTap: () async { onTap: () async {
// startTimer(); // startTimer();
...@@ -398,6 +403,8 @@ class _AbsentCameraViewState extends State<AbsentCameraView> { ...@@ -398,6 +403,8 @@ class _AbsentCameraViewState extends State<AbsentCameraView> {
(route) => false, (route) => false,
arguments: AbsentSuccessArguments( arguments: AbsentSuccessArguments(
absentSuccess: absentSuccess, absentSuccess: absentSuccess,
profil: widget.profile,
nik: widget.nik,
isIn: true, isIn: true,
), ),
); );
...@@ -425,6 +432,8 @@ class _AbsentCameraViewState extends State<AbsentCameraView> { ...@@ -425,6 +432,8 @@ class _AbsentCameraViewState extends State<AbsentCameraView> {
(route) => false, (route) => false,
arguments: AbsentSuccessArguments( arguments: AbsentSuccessArguments(
absentSuccess: absentSuccess, absentSuccess: absentSuccess,
profil: widget.profile,
nik: widget.nik,
isIn: false, isIn: false,
), ),
); );
...@@ -432,14 +441,15 @@ class _AbsentCameraViewState extends State<AbsentCameraView> { ...@@ -432,14 +441,15 @@ class _AbsentCameraViewState extends State<AbsentCameraView> {
} }
}, },
), ),
SizedBox(
height: AppMargin.m8,
), ),
Container( CustomButton(
width: 100, text: "Foto Ulang",
margin: const EdgeInsets.only( colorButton: Colors.red,
top: 10,
),
child: GestureDetector(
onTap: () { onTap: () {
_controller?.dispose().then((_) {
setState(() {});
setState(() { setState(() {
pictureIsTaken = false; pictureIsTaken = false;
_controller = CameraController( _controller = CameraController(
...@@ -453,14 +463,109 @@ class _AbsentCameraViewState extends State<AbsentCameraView> { ...@@ -453,14 +463,109 @@ class _AbsentCameraViewState extends State<AbsentCameraView> {
); );
initCamera(_controller!); initCamera(_controller!);
}); });
});
}, },
child: CustomButton( )
text: "Foto Ulang", // Container(
colorButton: ColorManager.grey, // width: 100,
), // child: CustomButton(
), // text: "Submit",
), // onTap: () async {
// // startTimer();
// await EasyLoading.show(
// status: Strings.pleaseWait,
// maskType: EasyLoadingMaskType.none,
// );
// if (widget.isIn) {
// Api.shiftIn(
// widget.branchModel.id,
// widget.nik,
// widget.shiftModel!.id,
// imageBase64!,
// ).then((apiResponse) {
// // stopTimer();
// EasyLoading.dismiss();
// if (apiResponse.error) {
// EasyLoading.showToast(
// apiResponse.msg);
// return;
// }
// AbsentSuccessModel absentSuccess =
// apiResponse.data
// as AbsentSuccessModel;
// Navigator.pushNamedAndRemoveUntil(
// context,
// Routes.absentSuccess,
// (route) => false,
// arguments: AbsentSuccessArguments(
// absentSuccess: absentSuccess,
// isIn: true,
// ),
// );
// });
// } else {
// Api.shiftOut(
// widget.branchModel.id,
// widget.nik,
// imageBase64!,
// ).then((apiResponse) {
// // stopTimer();
// EasyLoading.dismiss();
// if (apiResponse.error) {
// EasyLoading.showToast(
// apiResponse.msg,
// );
// return;
// }
// AbsentSuccessModel absentSuccess =
// apiResponse.data
// as AbsentSuccessModel;
// Navigator.pushNamedAndRemoveUntil(
// context,
// Routes.absentSuccess,
// (route) => false,
// arguments: AbsentSuccessArguments(
// absentSuccess: absentSuccess,
// isIn: false,
// ),
// );
// });
// }
// },
// ),
// ),
// Container(
// width: 100,
// margin: const EdgeInsets.only(
// top: 10,
// ),
// child: GestureDetector(
// onTap: () async {
// _controller?.dispose().then((_) {
// setState(() {});
// setState(() {
// pictureIsTaken = false;
// _controller = CameraController(
// // Get a specific camera from the list of available cameras.
// _cameraDescription!,
// // Define the resolution to use.
// ResolutionPreset.medium,
// imageFormatGroup:
// ImageFormatGroup.jpeg,
// enableAudio: false,
// );
// initCamera(_controller!);
// });
// });
// },
// child: CustomButton(
// text: "Foto Ulang",
// colorButton: ColorManager.grey,
// ),
// ),
// ),
], ],
),
) )
: Stack( : Stack(
children: [ children: [
...@@ -543,29 +648,30 @@ class _AbsentCameraViewState extends State<AbsentCameraView> { ...@@ -543,29 +648,30 @@ class _AbsentCameraViewState extends State<AbsentCameraView> {
width: 60, width: 60,
), ),
GestureDetector( GestureDetector(
onTap: () { onTap: () async {
if (cameras!.length > 1) { if (cameras!.length > 1) {
setState(() { _controller
isCameraLoading = true; ?.dispose()
.then((value) {
setState(() {});
CameraDescription? switchTo;
if (_cameraDescription == if (_cameraDescription ==
cameras![0]) { cameras![0]) {
_cameraDescription = _cameraDescription =
cameras![1]; cameras![1];
switchTo = cameras![1];
} else { } else {
_cameraDescription = _cameraDescription =
cameras![0]; cameras![0];
switchTo = cameras![0];
} }
_controller = CameraController( _controller = CameraController(
// Get a specific camera from the list of available cameras. switchTo,
_cameraDescription!,
// Define the resolution to use.
ResolutionPreset.medium, ResolutionPreset.medium,
imageFormatGroup: imageFormatGroup:
ImageFormatGroup.jpeg, ImageFormatGroup.jpeg,
enableAudio: false, enableAudio: false,
); );
initCamera(_controller!); initCamera(_controller!);
}); });
} else { } else {
...@@ -1037,20 +1143,21 @@ class _WidgetAbsentAndTimeState extends State<WidgetAbsentAndTime> { ...@@ -1037,20 +1143,21 @@ class _WidgetAbsentAndTimeState extends State<WidgetAbsentAndTime> {
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(12),
color: Colors.white, color: Colors.white,
), ),
padding: const EdgeInsets.all(20), padding: EdgeInsets.symmetric(
height: 105, horizontal: AppPadding.p20, vertical: AppPadding.p12),
width: double.infinity, width: double.infinity,
height: 138,
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisSize: MainAxisSize.min,
children: [ children: [
Text( Image(
(widget.isIn) ? "Absen Masuk" : "Absen Keluar", image: AssetImage(
style: getRegularStyle( Assets.excelsoLogoGreen,
color: Colors.black,
fontSize: FontSize.s16,
fontFamily: FontConstants.poppins,
), ),
width: 111,
height: 42,
), ),
Expanded( Expanded(
child: Text( child: Text(
...@@ -1059,10 +1166,19 @@ class _WidgetAbsentAndTimeState extends State<WidgetAbsentAndTime> { ...@@ -1059,10 +1166,19 @@ class _WidgetAbsentAndTimeState extends State<WidgetAbsentAndTime> {
)}", )}",
style: getSemiBoldStyle( style: getSemiBoldStyle(
color: Colors.black, color: Colors.black,
fontSize: FontSize.s24, fontSize: FontSize.s16,
), ),
maxLines: 3, maxLines: 3,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
textAlign: TextAlign.center,
),
),
Text(
(widget.isIn) ? "Absen Masuk" : "Absen Keluar",
style: getSemiBoldStyle(
color: Colors.black,
fontSize: FontSize.s16,
fontFamily: FontConstants.poppins,
), ),
), ),
], ],
......
import 'package:excelso_attendance/helper/component/button.dart'; import 'package:excelso_attendance/helper/component/button.dart';
import 'package:excelso_attendance/helper/global_function/date_time.dart'; import 'package:excelso_attendance/helper/global_function/date_time.dart';
import 'package:excelso_attendance/models/absent.dart'; import 'package:excelso_attendance/models/absent.dart';
import 'package:excelso_attendance/models/profile.dart';
import 'package:excelso_attendance/resource/assets.dart'; import 'package:excelso_attendance/resource/assets.dart';
import 'package:excelso_attendance/resource/colors.dart'; import 'package:excelso_attendance/resource/colors.dart';
import 'package:excelso_attendance/resource/font.dart'; import 'package:excelso_attendance/resource/font.dart';
...@@ -11,9 +12,15 @@ import 'package:flutter/material.dart'; ...@@ -11,9 +12,15 @@ import 'package:flutter/material.dart';
class AbsentSuccessView extends StatelessWidget { class AbsentSuccessView extends StatelessWidget {
const AbsentSuccessView( const AbsentSuccessView(
{super.key, required this.absentSuccess, required this.isIn}); {super.key,
required this.absentSuccess,
required this.isIn,
required this.nik,
required this.profil});
final AbsentSuccessModel absentSuccess; final AbsentSuccessModel absentSuccess;
final ProfileModel profil;
final String nik;
final bool isIn; final bool isIn;
@override @override
...@@ -72,7 +79,7 @@ class AbsentSuccessView extends StatelessWidget { ...@@ -72,7 +79,7 @@ class AbsentSuccessView extends StatelessWidget {
), ),
), ),
const SizedBox( const SizedBox(
height: 60, height: 20,
), ),
Container( Container(
padding: EdgeInsets.symmetric( padding: EdgeInsets.symmetric(
...@@ -103,7 +110,7 @@ Sukses''', ...@@ -103,7 +110,7 @@ Sukses''',
horizontal: AppPadding.p20, horizontal: AppPadding.p20,
), ),
child: Image( child: Image(
height: 232, height: MediaQuery.of(context).size.height * 0.25,
width: double.infinity, width: double.infinity,
image: AssetImage( image: AssetImage(
Assets.absentSuccess, Assets.absentSuccess,
...@@ -140,24 +147,46 @@ Sukses''', ...@@ -140,24 +147,46 @@ Sukses''',
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Text(
absentSuccess.branchCode,
style: getSemiBoldStyle(
color: ColorManager.fontBlack,
fontSize: FontSize.s20,
fontFamily: FontConstants.montserrat,
),
),
SizedBox(
height: AppMargin.m10,
),
Row( Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Expanded(
absentSuccess.branchCode, child: Text(
profil.name,
style: getSemiBoldStyle( style: getSemiBoldStyle(
color: ColorManager.fontBlack, color: ColorManager.fontBlack,
fontSize: FontSize.s20, fontSize: FontSize.s20,
fontFamily: FontConstants.montserrat, fontFamily: FontConstants.montserrat,
), ),
maxLines: 2,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.start,
), ),
Text( ),
"${absentSuccess.time} ${absentSuccess.timeZone}", Expanded(
child: Text(
nik,
style: getSemiBoldStyle( style: getSemiBoldStyle(
color: ColorManager.fontBlack, color: ColorManager.fontBlack,
fontSize: FontSize.s20, fontSize: FontSize.s20,
fontFamily: FontConstants.montserrat, fontFamily: FontConstants.montserrat,
), ),
maxLines: 2,
overflow: TextOverflow.ellipsis,
textAlign: TextAlign.end,
),
) )
], ],
), ),
...@@ -165,9 +194,49 @@ Sukses''', ...@@ -165,9 +194,49 @@ Sukses''',
margin: EdgeInsets.only( margin: EdgeInsets.only(
top: AppMargin.m10, top: AppMargin.m10,
), ),
child: Row( padding: EdgeInsets.symmetric(
horizontal: AppPadding.p20,
vertical: AppPadding.p12,
),
width: double.infinity,
decoration: BoxDecoration(
color: const Color(0xffE7E7E7).withOpacity(0.5),
border: Border.all(
width: 0.2,
color: ColorManager.grey.withOpacity(0.8),
),
borderRadius: BorderRadius.circular(9),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
children: [ children: [
const Spacer(), Text(
absentSuccess.branchName,
style: getSemiBoldStyle(
color: ColorManager.fontBlack,
fontSize: FontSize.s16,
),
textAlign: TextAlign.center,
maxLines: 2,
overflow: TextOverflow.ellipsis,
),
const SizedBox(
height: 4,
),
Text(
"${absentSuccess.time} ${absentSuccess.timeZone}",
style: getMediumStyle(
color: ColorManager.fontBlack,
fontSize: FontSize.s20,
),
textAlign: TextAlign.center,
maxLines: 2,
overflow: TextOverflow.ellipsis,
),
const SizedBox(
height: 4,
),
Text( Text(
DateFormatCustom.getDateLocal( DateFormatCustom.getDateLocal(
fromApi: true, fromApi: true,
...@@ -175,18 +244,57 @@ Sukses''', ...@@ -175,18 +244,57 @@ Sukses''',
), ),
style: getRegularStyle( style: getRegularStyle(
color: ColorManager.fontBlack, color: ColorManager.fontBlack,
fontSize: 16, fontSize: FontSize.s16,
fontFamily: FontConstants.montserrat,
), ),
) textAlign: TextAlign.center,
maxLines: 2,
overflow: TextOverflow.ellipsis,
),
],
),
// child: Row(
// children: [
// const Spacer(),
// Text(
// DateFormatCustom.getDateLocal(
// fromApi: true,
// apiDate: absentSuccess.date,
// ),
// style: getRegularStyle(
// color: ColorManager.fontBlack,
// fontSize: 16,
// fontFamily: FontConstants.montserrat,
// ),
// )
// ],
// ),
),
// Container(
// margin: EdgeInsets.only(
// top: AppMargin.m16,
// left: AppMargin.m16,
// right: AppMargin.m16,
// ),
// child: CustomButton(
// text: "Kembali ke Beranda",
// onTap: () {
// Navigator.pushNamedAndRemoveUntil(
// context,
// Routes.onBoarding,
// (route) => false,
// );
// },
// ),
// )
], ],
), ),
), ),
SizedBox(
height: AppMargin.m16,
),
Container( Container(
margin: EdgeInsets.only( margin: EdgeInsets.symmetric(
top: AppMargin.m16, horizontal: AppMargin.m20,
left: AppMargin.m16,
right: AppMargin.m16,
), ),
child: CustomButton( child: CustomButton(
text: "Kembali ke Beranda", text: "Kembali ke Beranda",
...@@ -201,9 +309,6 @@ Sukses''', ...@@ -201,9 +309,6 @@ Sukses''',
) )
], ],
), ),
)
],
),
), ),
); );
} }
......
import 'dart:async'; import 'dart:async';
import 'package:dropdown_button2/dropdown_button2.dart'; // import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:excelso_attendance/api/api.dart'; import 'package:excelso_attendance/api/api.dart';
import 'package:excelso_attendance/helper/arguments/route_args.dart'; import 'package:excelso_attendance/helper/arguments/route_args.dart';
import 'package:excelso_attendance/helper/component/button.dart'; import 'package:excelso_attendance/helper/component/button.dart';
...@@ -394,6 +394,7 @@ class _BodyWidgetState extends State<BodyWidget> { ...@@ -394,6 +394,7 @@ class _BodyWidgetState extends State<BodyWidget> {
isIn: false, isIn: false,
branchModel: branchModel:
widget.nearestBranch[selectedOutlet], widget.nearestBranch[selectedOutlet],
profile: profileUser,
nik: nikUser, nik: nikUser,
), ),
); );
...@@ -471,177 +472,184 @@ class _SelectOutletState extends State<SelectOutlet> { ...@@ -471,177 +472,184 @@ class _SelectOutletState extends State<SelectOutlet> {
const SizedBox( const SizedBox(
height: 10, height: 10,
), ),
DropdownButtonFormField2( // DropdownButtonFormField2(
decoration: InputDecoration( // decoration: InputDecoration(
// hintText: "NIK", // // hintText: "NIK",
//Add isDense true and zero Padding. // //Add isDense true and zero Padding.
//Add Horizontal padding using buttonPadding and Vertical padding by increasing buttonHeight instead of add Padding here so that The whole TextField Button become clickable, and also the dropdown menu open under The whole TextField Button. // //Add Horizontal padding using buttonPadding and Vertical padding by increasing buttonHeight instead of add Padding here so that The whole TextField Button become clickable, and also the dropdown menu open under The whole TextField Button.
isDense: true, // isDense: true,
contentPadding: const EdgeInsets.symmetric( // contentPadding: const EdgeInsets.symmetric(
// horizontal: 18, // // horizontal: 18,
vertical: 15, // vertical: 15,
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(width: 0.4, color: ColorManager.grey),
borderRadius: BorderRadius.circular(5),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(width: 0.4, color: ColorManager.grey),
borderRadius: BorderRadius.circular(5),
),
disabledBorder: OutlineInputBorder(
borderSide: BorderSide(width: 0.4, color: ColorManager.grey),
borderRadius: BorderRadius.circular(5),
),
//Add more decoration as you want here
//Add label If you want but add hint outside the decoration to be aligned in the button perfectly.
),
isExpanded: true,
// hint: Text(
// "${widget.nearestBranch[0].name} (${widget.nearestBranch[0].code})",
// style: const TextStyle(fontSize: 14),
// ), // ),
hint: Row( // enabledBorder: OutlineInputBorder(
mainAxisAlignment: MainAxisAlignment.spaceBetween, // borderSide: BorderSide(width: 0.4, color: ColorManager.grey),
crossAxisAlignment: CrossAxisAlignment.center, // borderRadius: BorderRadius.circular(5),
children: [ // ),
Expanded( // focusedBorder: OutlineInputBorder(
child: Text( // borderSide: BorderSide(width: 0.4, color: ColorManager.grey),
widget.nearestBranch[0].code, // borderRadius: BorderRadius.circular(5),
style: getRegularStyle( // ),
color: Colors.black, // disabledBorder: OutlineInputBorder(
fontSize: 18, // borderSide: BorderSide(width: 0.4, color: ColorManager.grey),
fontFamily: FontConstants.poppins, // borderRadius: BorderRadius.circular(5),
), // ),
maxLines: 1, // //Add more decoration as you want here
overflow: TextOverflow.ellipsis, // //Add label If you want but add hint outside the decoration to be aligned in the button perfectly.
), // ),
), // isExpanded: true,
const SizedBox( // // hint: Text(
width: 10, // // "${widget.nearestBranch[0].name} (${widget.nearestBranch[0].code})",
), // // style: const TextStyle(fontSize: 14),
Text( // // ),
"${widget.nearestBranch[0].distance} Km", // hint: Row(
style: getRegularStyle( // mainAxisAlignment: MainAxisAlignment.spaceBetween,
color: Colors.black, // crossAxisAlignment: CrossAxisAlignment.center,
fontSize: 12, // children: [
fontFamily: FontConstants.poppins, // Expanded(
), // child: Text(
) // widget.nearestBranch[0].code,
], // style: getRegularStyle(
// color: Colors.black,
// fontSize: 18,
// fontFamily: FontConstants.poppins,
// ),
// maxLines: 1,
// overflow: TextOverflow.ellipsis,
// ),
// ),
// const SizedBox(
// width: 10,
// ),
// Text(
// "${widget.nearestBranch[0].distance} Km",
// style: getRegularStyle(
// color: Colors.black,
// fontSize: 12,
// fontFamily: FontConstants.poppins,
// ),
// )
// ],
// ),
// iconStyleData: const IconStyleData(
// icon: Icon(
// Icons.arrow_drop_down,
// color: Colors.black45,
// ),
// ),
// items: widget.nearestBranch
// .map((branch) => DropdownMenuItem<String>(
// value: branch.id,
// child: Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// crossAxisAlignment: CrossAxisAlignment.center,
// children: [
// Expanded(
// child: Text(
// branch.code,
// style: getRegularStyle(
// color: Colors.black,
// fontSize: 18,
// fontFamily: FontConstants.poppins,
// ),
// maxLines: 2,
// overflow: TextOverflow.ellipsis,
// ),
// ),
// const SizedBox(
// width: 10,
// ),
// Text(
// "${branch.distance} Km",
// style: getRegularStyle(
// color: Colors.black,
// fontSize: 12,
// fontFamily: FontConstants.poppins,
// ),
// )
// ],
// ),
// ))
// .toList(),
// onChanged: (value) {
// int selectedBranch = widget.nearestBranch
// .indexWhere((element) => element.id == value);
// setState(() {
// widget.onSelected!(selectedBranch);
// });
// },
// )
GestureDetector(
onTap: () {
showModalBottomSheet(
backgroundColor: ColorManager.backgroundColor,
isScrollControlled: true,
context: context,
builder: (c) {
return WidgetSelectOutlet(
nearestBranch: widget.nearestBranch,
selectedOutlet: selectedBranchFromList,
onSelected: ((int val) {
setState(() {
selectedBranchFromList = val;
widget.onSelected!(val);
});
}),
);
});
},
child: Container(
margin: const EdgeInsets.only(
top: 10,
), ),
iconStyleData: const IconStyleData( width: double.infinity,
icon: Icon( decoration: BoxDecoration(
Icons.arrow_drop_down, border: Border.all(width: 0.2, color: Colors.grey),
color: Colors.black45, borderRadius: BorderRadius.circular(5),
color: ColorManager.backgroundColor,
), ),
child: Container(
padding: const EdgeInsets.symmetric(
horizontal: 10,
vertical: 15,
), ),
items: widget.nearestBranch
.map((branch) => DropdownMenuItem<String>(
value: branch.id,
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Expanded( Expanded(
child: Text( child: Text(
branch.code, "${widget.nearestBranch[selectedBranchFromList].name} (${widget.nearestBranch[selectedBranchFromList].code})",
style: getRegularStyle( style: getRegularStyle(
color: Colors.black, color: ColorManager.grey,
fontSize: 18, fontSize: 16,
fontFamily: FontConstants.poppins,
), ),
maxLines: 2, maxLines: 2,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
), ),
), ),
const SizedBox( Image(
width: 10, image: AssetImage(
), Assets.arrowUpDown,
Text(
"${branch.distance} Km",
style: getRegularStyle(
color: Colors.black,
fontSize: 12,
fontFamily: FontConstants.poppins,
),
)
],
), ),
)) width: 7,
.toList(), height: 13,
onChanged: (value) {
int selectedBranch = widget.nearestBranch
.indexWhere((element) => element.id == value);
setState(() {
widget.onSelected!(selectedBranch);
});
},
) )
// GestureDetector(
// onTap: () {
// showModalBottomSheet(
// backgroundColor: ColorManager.backgroundColor,
// isScrollControlled: true,
// context: context,
// builder: (c) {
// return WidgetSelectOutlet(
// nearestBranch: widget.nearestBranch,
// selectedOutlet: selectedBranchFromList,
// onSelected: ((int val) {
// setState(() {
// selectedBranchFromList = val;
// widget.onSelected!(val);
// });
// }),
// );
// });
// },
// child: Container(
// margin: const EdgeInsets.only(
// top: 10,
// ),
// width: double.infinity,
// decoration: BoxDecoration(
// border: Border.all(width: 0.2, color: Colors.grey),
// borderRadius: BorderRadius.circular(5),
// color: ColorManager.backgroundColor,
// ),
// child: Container(
// padding: const EdgeInsets.symmetric(
// horizontal: 10,
// vertical: 15,
// ),
// child: Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// Expanded(
// child: Text(
// "${widget.nearestBranch[selectedBranchFromList].name} (${widget.nearestBranch[selectedBranchFromList].code})",
// style: getRegularStyle(
// color: ColorManager.grey,
// fontSize: 16,
// ),
// maxLines: 2,
// overflow: TextOverflow.ellipsis,
// ),
// ),
// Icon( // Icon(
// Icons.arrow_drop_down, // Icons.arrow_drop_down_sharp,
// color: ColorManager.grey, // color: ColorManager.grey,
// size: 30, // size: 30,
// ), // ),
// // Text( // Text(
// // "Ubah", // "Ubah",
// // style: getRegularStyle( // style: getRegularStyle(
// // color: ColorManager.link, // color: ColorManager.link,
// // ),
// // )
// ],
// ),
// ),
// ),
// ), // ),
// )
],
),
),
),
),
], ],
), ),
), ),
...@@ -1001,7 +1009,6 @@ class _WidgetSelectShiftState extends State<WidgetSelectShift> { ...@@ -1001,7 +1009,6 @@ class _WidgetSelectShiftState extends State<WidgetSelectShift> {
).then((apiResponse) { ).then((apiResponse) {
EasyLoading.dismiss(); EasyLoading.dismiss();
if (apiResponse.error) { if (apiResponse.error) {
Navigator.pop(context);
modalDialogGlobal( modalDialogGlobal(
context: context, context: context,
size: MediaQuery.of(context).size, size: MediaQuery.of(context).size,
...@@ -1010,6 +1017,7 @@ class _WidgetSelectShiftState extends State<WidgetSelectShift> { ...@@ -1010,6 +1017,7 @@ class _WidgetSelectShiftState extends State<WidgetSelectShift> {
buttonText: "Ok", buttonText: "Ok",
tapButton: () { tapButton: () {
Navigator.pop(context); Navigator.pop(context);
Navigator.pop(context);
}); });
} else { } else {
ProfileModel profileUser = apiResponse.data as ProfileModel; ProfileModel profileUser = apiResponse.data as ProfileModel;
...@@ -1033,6 +1041,7 @@ class _WidgetSelectShiftState extends State<WidgetSelectShift> { ...@@ -1033,6 +1041,7 @@ class _WidgetSelectShiftState extends State<WidgetSelectShift> {
isIn: true, isIn: true,
branchModel: widget.branchModel, branchModel: widget.branchModel,
shiftModel: widget.shiftList[selectedShift!], shiftModel: widget.shiftList[selectedShift!],
profile: profileUser,
nik: widget.nik, nik: widget.nik,
), ),
); );
......
...@@ -5,6 +5,7 @@ class Assets { ...@@ -5,6 +5,7 @@ class Assets {
// images // images
static String excelso = "${rootImage}excelso.png"; static String excelso = "${rootImage}excelso.png";
static String excelsoLogo = "${rootImage}excelso_logo.png"; static String excelsoLogo = "${rootImage}excelso_logo.png";
static String excelsoLogoGreen = "${rootImage}excelso_logo_green.png";
static String onboarding = "${rootImage}onboarding.png"; static String onboarding = "${rootImage}onboarding.png";
static String frameOverlay = "${rootImage}frame_overlay.png"; static String frameOverlay = "${rootImage}frame_overlay.png";
static String frameOverlay2 = "${rootImage}frame_overlay2.png"; static String frameOverlay2 = "${rootImage}frame_overlay2.png";
...@@ -12,4 +13,5 @@ class Assets { ...@@ -12,4 +13,5 @@ class Assets {
static String absentSuccess = "${rootImage}absent_success.png"; static String absentSuccess = "${rootImage}absent_success.png";
// icons // icons
static String arrowUpDown = "${rootIcon}arrow_up_down.png";
} }
...@@ -42,6 +42,7 @@ class RouteGenerator { ...@@ -42,6 +42,7 @@ class RouteGenerator {
isIn: args.isIn, isIn: args.isIn,
branchModel: args.branchModel, branchModel: args.branchModel,
shiftModel: args.shiftModel, shiftModel: args.shiftModel,
profile: args.profile,
nik: args.nik, nik: args.nik,
), ),
nameRoute: Routes.absentCamera, nameRoute: Routes.absentCamera,
...@@ -53,6 +54,8 @@ class RouteGenerator { ...@@ -53,6 +54,8 @@ class RouteGenerator {
return pageRouteCustom( return pageRouteCustom(
AbsentSuccessView( AbsentSuccessView(
absentSuccess: args.absentSuccess, absentSuccess: args.absentSuccess,
profil: args.profil,
nik: args.nik,
isIn: args.isIn, isIn: args.isIn,
), ),
nameRoute: Routes.absentSuccess, nameRoute: Routes.absentSuccess,
...@@ -94,6 +97,7 @@ class RouteGenerator { ...@@ -94,6 +97,7 @@ class RouteGenerator {
isIn: args.isIn, isIn: args.isIn,
branchModel: args.branchModel, branchModel: args.branchModel,
shiftModel: args.shiftModel, shiftModel: args.shiftModel,
profile: args.profile,
nik: args.nik, nik: args.nik,
), ),
transitionDuration: Duration.zero, transitionDuration: Duration.zero,
...@@ -136,6 +140,8 @@ class RouteGenerator { ...@@ -136,6 +140,8 @@ class RouteGenerator {
return PageRouteBuilder( return PageRouteBuilder(
pageBuilder: (context, a, b) => AbsentSuccessView( pageBuilder: (context, a, b) => AbsentSuccessView(
absentSuccess: args.absentSuccess, absentSuccess: args.absentSuccess,
profil: args.profil,
nik: args.nik,
isIn: args.isIn, isIn: args.isIn,
), ),
transitionDuration: Duration.zero, transitionDuration: Duration.zero,
......
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