import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:flutter/src/widgets/framework.dart';
import 'package:get/get.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:mobile/app/models/responses/edit_request_service.dart';
import 'package:mobile/app/modules/home/controllers/home_controller.dart';
import 'package:mobile/app/modules/home/controllers/service_decision_controller.dart';
import 'package:mobile/app/modules/home/widgets/provider_rating.dart';
import 'package:mobile/app/modules/home/widgets/provider_report.dart';
import 'package:mobile/app/providers/api_provider.dart';
import 'package:mobile/app/routes/app_pages.dart';
import 'package:mobile/app/services/auth_service.dart';
import 'package:mobile/common/ui.dart';
class ProviderEndService extends GetView<ServiceDecisionController> {
final HomeController homeController = Get.put(HomeController());
final GlobalKey<FormState> _bidForm = new GlobalKey<FormState>();
final GlobalKey<FormState> _amountForm = new GlobalKey<FormState>();
var currentUser = Get.find<AuthService>();
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView(
padding: EdgeInsets.zero,
physics: NeverScrollableScrollPhysics(),
children: [
Stack(
children: [
//map
Column(
children: [
Container(
height: Get.height * 0.5,
width: Get.width,
color: Colors.amber,
child: GoogleMap(
onMapCreated: controller.onMapCreated,
markers: Set<Marker>.of(controller.markers.values),
circles: controller.circles,
mapToolbarEnabled: false,
myLocationButtonEnabled: false,
myLocationEnabled: true,
// zoomGesturesEnabled: true,
zoomControlsEnabled: false,
compassEnabled: true,
// scrollGesturesEnabled: true,
rotateGesturesEnabled: true,
tiltGesturesEnabled: false,
initialCameraPosition: CameraPosition(
target: LatLng(controller.pos.value.latitude,
controller.pos.value.longitude),
zoom: 15.0,
bearing: 30.0),
onCameraMove: (CameraPosition position) {
if (controller.markers.length > 0) {
MarkerId markerId =
MarkerId(controller.markerIdVal());
Marker marker = controller.markers[markerId];
Marker updatedMarker =
marker.copyWith(positionParam: position.target);
controller.markers[markerId] = updatedMarker;
controller.startLocation = LatLng(
position.target.latitude,
position.target.longitude);
}
},
),
)
],
),
//map
Column(
children: [
Padding(
padding: const EdgeInsets.only(top: 32, left: 8, right: 8),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
IconButton(
onPressed: () {
Get.offAllNamed(Routes.ROOT);
controller.tc.clear();
controller.dc.clear();
},
icon: Icon(
Icons.arrow_back_ios,
color: Get.theme.hoverColor,
),
),
],
),
),
Container(
margin: EdgeInsets.only(top: 200),
width: Get.width,
height: Get.height * 0.65,
decoration: BoxDecoration(
color: Get.theme.primaryColor,
borderRadius: BorderRadius.only(
topRight: Radius.circular(25),
topLeft: Radius.circular(25),
),
),
child: ListView(
padding: EdgeInsets.zero,
children: [
SizedBox(height: 10),
Container(
margin: EdgeInsets.symmetric(horizontal: 175),
height: 5,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(4),
color: Ui.parseColor("#CCCCCC"),
),
),
SizedBox(height: 12),
Container(
margin: EdgeInsets.symmetric(
horizontal: 18,
),
decoration: BoxDecoration(
color: Ui.parseColor("#F6F6F6"),
borderRadius: BorderRadius.circular(10),
boxShadow: [
BoxShadow(
offset: Offset(0, 3),
blurRadius: 10,
color: Colors.black.withOpacity(0.3),
),
],
),
child: Padding(
padding: EdgeInsetsDirectional.only(
start: 26,
top: 16,
bottom: 16,
),
child: Row(
children: [
Container(
width: 67,
height: 67,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(48),
image: DecorationImage(
fit: BoxFit.fill,
image: NetworkImage(
controller.myData.toUserUrl),
),
),
),
SizedBox(width: 12.5),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
controller.myData.providerName,
style: GoogleFonts.poppins(
fontSize: 15,
fontWeight: FontWeight.w500,
color: Colors.black,
),
),
SizedBox(height: 7),
Text(
controller.myData.createdDate
.split(" ")[0],
style: GoogleFonts.poppins(
fontSize: 10,
fontWeight: FontWeight.w400,
color: Colors.black,
),
),
SizedBox(height: 7),
Text(
Get.locale == Locale("ar")
? controller.myData.specialityNameAr
: controller.myData.specialityNameEn,
style: GoogleFonts.poppins(
fontSize: 15,
fontWeight: FontWeight.w500,
color: Colors.black,
),
),
],
),
],
),
),
),
SizedBox(height: 22),
Container(
padding: EdgeInsets.symmetric(
horizontal: 40,
),
child: Column(
children: [
Row(
children: [
Text(
'Customer Name'.tr,
style: _leadingStyle(),
),
Spacer(),
Text(
controller.myData.requesterName,
style: _trailingStyle(),
),
SizedBox(width: 15),
Container(
width: 33,
height: 32,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(48),
image: DecorationImage(
fit: BoxFit.fill,
image: NetworkImage(
controller.myData.fromUserUrl),
),
),
),
],
),
SizedBox(height: 15),
_data(
'Customer Address'.tr,
controller.myData.address != null
? '${controller.myData.address.city}'
: "N/A"),
SizedBox(height: 15),
_data('Service Status'.tr, 'InProgress'.tr),
SizedBox(height: 15),
Row(
children: [
Text(
'Total Amount'.tr,
style: _leadingStyle(),
),
Spacer(),
Text(
"${controller.myData.bid}",
style: _leadingStyle(),
),
Text(
"SAR ".tr,
style: _leadingStyle(),
)
],
),
SizedBox(height: 15),
_data('Payment Type'.tr, 'Electronic Payment'.tr),
],
),
),
controller.myData.status == 3
? SizedBox()
: Column(
children: [
SizedBox(height: 30),
InkWell(
onTap: () async {
EditRequestService param =
EditRequestService(
id: controller.myData.id,
status: 3,
fromUser: controller.myData.providerId,
toUser: controller.myData.requesterId,
);
ApiProvider(httpClient: Dio())
.editRequestService(param)
.then((value) => {
homeController.getAll(),
});
Get.to(ProviderRating());
},
child: Container(
height: 40,
width: 228,
margin:
EdgeInsets.symmetric(horizontal: 75),
decoration: BoxDecoration(
color: Ui.parseColor("#37915D"),
borderRadius: BorderRadius.circular(28),
),
child: Center(
child: Text(
'Finished Service'.tr,
style: GoogleFonts.poppins(
fontSize: 13,
fontWeight: FontWeight.w400,
color: Colors.white,
),
),
),
),
),
SizedBox(height: 10),
InkWell(
onTap: () {
Get.to(ProviderReport());
},
child: Container(
height: 40,
width: 228,
margin:
EdgeInsets.symmetric(horizontal: 75),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(28),
border: Border.all(
color: Ui.parseColor("#707070"),
width: 1,
),
),
child: Center(
child: Text(
'Report'.tr,
style: GoogleFonts.poppins(
fontSize: 13,
fontWeight: FontWeight.w400,
color: Ui.parseColor("#707070"),
),
),
),
),
),
SizedBox(height: 42),
],
),
],
),
)
],
)
],
),
],
),
);
}
Row _data(String leadingText, String trailingText) {
return Row(
children: [
Text(
leadingText,
style: _leadingStyle(),
),
Spacer(),
Text(
trailingText,
style: _trailingStyle(),
)
],
);
}
TextStyle _leadingStyle() {
return GoogleFonts.poppins(
color: Ui.parseColor("#339A58"),
fontSize: 14,
fontWeight: FontWeight.w500,
);
}
}
TextStyle _trailingStyle() {
return GoogleFonts.poppins(
fontSize: 14,
fontWeight: FontWeight.w500,
color: Colors.black,
);
}