Merge branch 'development' into fatima-new
commit
e86dfd1a34
@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="56.51" height="31.024" viewBox="0 0 56.51 31.024">
|
||||
<g id="liveCare_logo_icon_white" transform="translate(-30.848 -483.404)">
|
||||
<path id="Subtraction_64" data-name="Subtraction 64" d="M811.541,968.522h-4.912a6.163,6.163,0,0,1-2.422-.493,6.3,6.3,0,0,1-3.326-3.322,6.123,6.123,0,0,1-.492-2.414V943.726a6.134,6.134,0,0,1,.492-2.42,6.294,6.294,0,0,1,3.321-3.318,6.138,6.138,0,0,1,2.415-.49h23.025a6.137,6.137,0,0,1,2.42.492,6.291,6.291,0,0,1,3.318,3.322,6.146,6.146,0,0,1,.491,2.415v4.578a5.135,5.135,0,0,0,0,9.609v4.366a6.161,6.161,0,0,1-.484,2.423,6.279,6.279,0,0,1-3.314,3.326,6.138,6.138,0,0,1-2.419.492h-5.383a16.214,16.214,0,0,0,1.754-1.74,1.622,1.622,0,0,0,.358-1.281,23.673,23.673,0,0,0,3.34-6.283,22.887,22.887,0,0,0,.909-3.31,16.559,16.559,0,0,0,.317-3.107,10.971,10.971,0,0,0-.49-3.594,4.693,4.693,0,0,0-1.415-2.113,6.726,6.726,0,0,0-2.252-1.177c-.887-.3-1.911-.533-3-.781h0l-.007-.011a1.676,1.676,0,0,0-1.5-.951,1.7,1.7,0,1,0,0,3.4,1.636,1.636,0,0,0,1-.375l.04.015.011,0,.027.006c1.083.25,1.938.446,2.648.677a4.637,4.637,0,0,1,1.688.861,2.889,2.889,0,0,1,.875,1.486,9.923,9.923,0,0,1,.251,2.558,14.326,14.326,0,0,1-.292,2.753,20.686,20.686,0,0,1-.83,2.96,23.036,23.036,0,0,1-1.294,2.939,20.4,20.4,0,0,1-1.688,2.689,1.624,1.624,0,0,0-1.12.542,11.511,11.511,0,0,1-2.422,2.162,5.57,5.57,0,0,1-6.528.009,11.419,11.419,0,0,1-2.42-2.151,1.625,1.625,0,0,0-1.118-.542,20.374,20.374,0,0,1-1.692-2.7,23.179,23.179,0,0,1-1.3-2.945,20.645,20.645,0,0,1-.832-2.964A14.367,14.367,0,0,1,807,952.8a10.047,10.047,0,0,1,.248-2.559,2.876,2.876,0,0,1,.872-1.486,4.6,4.6,0,0,1,1.689-.861c.718-.232,1.622-.439,2.668-.678l.024-.005.006,0,.016-.014a1.68,1.68,0,0,0,1.022.377,1.7,1.7,0,1,0,0-3.4,1.651,1.651,0,0,0-.9.269,1.848,1.848,0,0,0-.617.681l0,0-.022.005c-4.457,1.028-7.146,1.649-7.146,7.674a16.585,16.585,0,0,0,.318,3.11,22.827,22.827,0,0,0,.914,3.316,23.494,23.494,0,0,0,3.365,6.294,1.612,1.612,0,0,0,.359,1.28,16.389,16.389,0,0,0,1.734,1.72h0Zm2.975-17.665a.923.923,0,0,0-.928.88V959a.918.918,0,0,0,.927.877h7.157A.923.923,0,0,0,822.6,959v-7.251a.887.887,0,0,0-.282-.625.975.975,0,0,0-.654-.265Zm41.339,14.421h-2.52a2.17,2.17,0,0,1-1.127-.327l-10.483-6.616a1.036,1.036,0,0,1-.485-.873V956.8a5.128,5.128,0,0,0,0-7.39v-1.163a1.037,1.037,0,0,1,.485-.873l10.483-6.616a2.075,2.075,0,0,1,1.127-.327h2.521a1.038,1.038,0,0,1,1.042,1.03V964.25a1.019,1.019,0,0,1-.3.728,1.042,1.042,0,0,1-.739.3Zm-38.73-6.877-1.683-.007-.532,0h-.005l0-1.741c0-.3.147-.536.35-.55l.917,0c.2-.013.35-.245.35-.552l0-.4c0-.3-.152-.545-.354-.558l-.916,0c-.2-.014-.35-.247-.35-.553l0-1.734h2.235c.2,0,.362.218.371.516l0,1.41c.009.3.166.518.373.518l.466,0c.2,0,.359-.221.369-.526V952.84c.009-.3.171-.528.377-.528h1.54a.932.932,0,0,0,.7-.439l0,2.171c0,.31-.144.545-.344.558l-.916,0c-.2,0-.362.219-.371.521l0,.47c.009.3.163.521.369.521l.911,0c.2.013.352.242.352.544l0,1.739-2.267-.005c-.2,0-.342-.2-.351-.511l0-1.414c0-.305-.148-.536-.352-.549l-.516,0c-.2.013-.343.238-.343.548l0,1.407C817.495,958.177,817.332,958.4,817.125,958.4Z" transform="translate(-769.54 -454.094)" fill="#fff"/>
|
||||
<path id="Path_663" data-name="Path 663" d="M971.268,998.3a2.982,2.982,0,1,1-2.982,2.982h0A2.982,2.982,0,0,1,971.268,998.3Z" transform="translate(-903.129 -502.474)" fill="#fff"/>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 3.2 KiB |
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
@ -0,0 +1,48 @@
|
||||
|
||||
import 'package:diplomaticquarterapp/core/service/base_service.dart';
|
||||
|
||||
import '../base_view_model.dart';
|
||||
|
||||
|
||||
class RRTService extends BaseService{
|
||||
|
||||
}
|
||||
|
||||
|
||||
class RRTViewModel extends BaseViewModel{
|
||||
var _service = RRTService();
|
||||
|
||||
Future createRequest(){
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
Future getAllRequest(){
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
Future getRequestDetails(){
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
Future getAllQuestions(){
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
Future getCancelReasons(){
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
Future cancelRequest(){
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
@ -0,0 +1,92 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:diplomaticquarterapp/core/viewModels/er/rrt-view-model.dart';
|
||||
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:google_maps_flutter/google_maps_flutter.dart';
|
||||
|
||||
class RRTRequestPickupAddressPage extends StatefulWidget{
|
||||
|
||||
@override
|
||||
State<StatefulWidget> createState() => RRTRequestPickupAddressPageState();
|
||||
|
||||
}
|
||||
class RRTRequestPickupAddressPageState extends State<RRTRequestPickupAddressPage>{
|
||||
bool acceptTerms = false;
|
||||
Completer<GoogleMapController> mapController = Completer();
|
||||
|
||||
static final CameraPosition mapCamera = CameraPosition(
|
||||
target: LatLng(37.42796133580664, -122.085749655962),
|
||||
zoom: 14.4746,
|
||||
);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BaseView<RRTViewModel>(
|
||||
onModelReady: (viewModel){
|
||||
|
||||
},
|
||||
builder: (ctx, vm, widget) => AppScaffold(
|
||||
appBarTitle: TranslationBase.of(context).pickupLocation,
|
||||
isShowAppBar: true,
|
||||
body: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||
children: [
|
||||
selectAddress(),
|
||||
Expanded(
|
||||
child: GoogleMap(
|
||||
mapType: MapType.normal,
|
||||
initialCameraPosition: mapCamera,
|
||||
onCameraIdle: (){
|
||||
|
||||
},
|
||||
onMapCreated: (controller){
|
||||
mapController.complete(controller);
|
||||
},
|
||||
)
|
||||
),
|
||||
continueButton()
|
||||
],
|
||||
)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
Widget selectAddress(){
|
||||
return Container(
|
||||
margin: EdgeInsets.all(15),
|
||||
child: Expanded(
|
||||
child: MaterialButton(
|
||||
height: 50,
|
||||
color: Colors.white,
|
||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10) ),
|
||||
onPressed: () { },
|
||||
child: Row(
|
||||
children: [
|
||||
Text(TranslationBase.of(context).selectAddress, style: TextStyle(color: Colors.white, fontSize: 13, letterSpacing: 1),),
|
||||
Spacer(),
|
||||
Icon(Icons.keyboard_arrow_down, size: 15, color: Colors.grey,)
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget continueButton(){
|
||||
return Padding(
|
||||
padding: const EdgeInsets.all(15),
|
||||
child: MaterialButton(
|
||||
height: 50,
|
||||
color: Theme.of(context).appBarTheme.color,
|
||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10) ),
|
||||
onPressed: () { },
|
||||
child: Text(TranslationBase.of(context).continues, style: TextStyle(color: Colors.white, fontSize: 15, letterSpacing: 1),),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,176 @@
|
||||
import 'package:diplomaticquarterapp/core/viewModels/er/rrt-view-model.dart';
|
||||
import 'package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-pickup-address-page.dart';
|
||||
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class RRTRequestPage extends StatefulWidget{
|
||||
|
||||
@override
|
||||
State<StatefulWidget> createState() => RRTRequestPageState();
|
||||
|
||||
}
|
||||
class RRTRequestPageState extends State<RRTRequestPage>{
|
||||
bool acceptTerms = false;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return BaseView<RRTViewModel>(
|
||||
onModelReady: (viewModel){
|
||||
|
||||
},
|
||||
builder: (ctx, vm, widget) => Column(
|
||||
children: [
|
||||
Expanded(
|
||||
child: ListView(
|
||||
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 15),
|
||||
children: [
|
||||
serviceDescription(context),
|
||||
SizedBox(height: 20),
|
||||
priceTable(context),
|
||||
|
||||
acceptPolicy(),
|
||||
|
||||
Container(height: 0.5, color: Theme.of(context).appBarTheme.color),// Seperator
|
||||
|
||||
Container(
|
||||
padding: EdgeInsets.only(top: 20, bottom: 5),
|
||||
alignment: Alignment.center,
|
||||
child: Text(TranslationBase.of(context).YouCanPayByTheFollowingOptions, style: TextStyle(fontSize: 13, color: Theme.of(context).appBarTheme.color, fontWeight: FontWeight.w500), maxLines: 2)
|
||||
),
|
||||
|
||||
paymentOptions(),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
actionButtons()
|
||||
],
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
Widget serviceDescription(BuildContext context) =>
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 10),
|
||||
child: Text(
|
||||
TranslationBase.of(context).RRTDDetails,
|
||||
textAlign: TextAlign.justify,
|
||||
style: TextStyle(color: Theme.of(context).appBarTheme.color, fontSize: 15, height: 1.5, fontWeight: FontWeight.w300),
|
||||
),
|
||||
);
|
||||
|
||||
Widget priceTable(BuildContext context){
|
||||
var radius = Radius.circular(8);
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||
children: [
|
||||
Container(
|
||||
height: 30,
|
||||
decoration: BoxDecoration(color: Theme.of(context).appBarTheme.color, borderRadius: BorderRadius.only(topLeft: radius, topRight: radius)),
|
||||
child: Center(child: Text(TranslationBase.of(context).ApproximateServiceFee, style: TextStyle(color: Colors.white, fontSize: 12, fontWeight: FontWeight.w500, letterSpacing: 1))),
|
||||
),
|
||||
|
||||
pricingRow(label: TranslationBase.of(context).AmountBeforeTax, value: '500 SAR'),
|
||||
Container(height: 0.5, color: Theme.of(context).appBarTheme.color),
|
||||
|
||||
pricingRow(label: TranslationBase.of(context).TaxAmount, value: '50 SAR'),
|
||||
Container(height: 0.5, color: Theme.of(context).appBarTheme.color),
|
||||
|
||||
pricingRow(label: TranslationBase.of(context).TotalAmountPayable, value: '550 SAR', labelBold: true),
|
||||
Container(height: 0.5, color: Theme.of(context).appBarTheme.color),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget pricingRow({@required String label, @required String value, bool labelBold = false, bool valueBold = false}){
|
||||
return
|
||||
Container(
|
||||
height: 40, margin: EdgeInsets.symmetric(horizontal: 10),
|
||||
child: Row(
|
||||
children: [
|
||||
Text(label, style: TextStyle(fontSize: 13, color: Theme.of(context).appBarTheme.color, fontWeight: labelBold ? FontWeight.bold : FontWeight.normal)),
|
||||
Spacer(),
|
||||
Container(height: 40, color: Theme.of(context).appBarTheme.color, width: 0.5,),
|
||||
Container(
|
||||
alignment: Alignment.center,
|
||||
width: MediaQuery.of(context).size.width * 0.25,
|
||||
child: Text(value, style: TextStyle(fontSize: 13, color: Theme.of(context).appBarTheme.color, fontWeight: valueBold ? FontWeight.bold : FontWeight.normal))
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Widget acceptPolicy(){
|
||||
return Padding(
|
||||
padding: const EdgeInsets.symmetric(vertical: 10),
|
||||
child: Row(
|
||||
children: [
|
||||
Checkbox(value: acceptTerms, onChanged: (v){
|
||||
setState(() => acceptTerms = v);
|
||||
}),
|
||||
SizedBox(width: 10),
|
||||
Expanded(
|
||||
child: Text(TranslationBase.of(context).iAcceptTermsConditions, style: TextStyle(fontSize: 13, color: Theme.of(context).appBarTheme.color), maxLines: 2)
|
||||
),
|
||||
Container(
|
||||
alignment: Alignment.center,
|
||||
width: MediaQuery.of(context).size.width * 0.25,
|
||||
child: TextButton(
|
||||
child: Text(TranslationBase.of(context).clickHere, style: TextStyle(fontSize: 12, color: Colors.blue, fontWeight: FontWeight.w400)),
|
||||
onPressed: (){
|
||||
|
||||
}
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget paymentOptions()=> Container(
|
||||
height: 30,
|
||||
alignment: Alignment.center,
|
||||
child: Image.asset("assets/payment_options/payment_options.png", fit: BoxFit.fill,)
|
||||
);
|
||||
|
||||
Widget actionButtons(){
|
||||
return Container(
|
||||
margin: EdgeInsets.all(15),
|
||||
child: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: MaterialButton(
|
||||
height: 50,
|
||||
color: Theme.of(context).appBarTheme.color,
|
||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10) ),
|
||||
onPressed: () { },
|
||||
child: Text(TranslationBase.of(context).cancel, style: TextStyle(color: Colors.white, fontSize: 13, letterSpacing: 1),),
|
||||
|
||||
),
|
||||
),
|
||||
SizedBox(width: 20,),
|
||||
Expanded(
|
||||
child: MaterialButton(
|
||||
height: 50,
|
||||
color: Theme.of(context).appBarTheme.color,
|
||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10) ),
|
||||
child: Text(TranslationBase.of(context).ok, style: TextStyle(color: Colors.white, fontSize: 13, letterSpacing: 1),),
|
||||
onPressed: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
FadePage(
|
||||
page: RRTRequestPickupAddressPage()));
|
||||
},
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
import 'package:diplomaticquarterapp/core/model/feedback/COC_items.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
|
||||
|
||||
class FeedbackDetails extends StatelessWidget {
|
||||
final COCItem items;
|
||||
|
||||
FeedbackDetails({
|
||||
@required this.items,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return AppScaffold(
|
||||
isShowAppBar: true,
|
||||
appBarTitle: TranslationBase.of(context).feedbackTitle,
|
||||
body: Container(
|
||||
margin: EdgeInsets.all(5),
|
||||
padding: EdgeInsets.all(5),
|
||||
color: Colors.white,
|
||||
child: Table(
|
||||
border: TableBorder.all(),
|
||||
columnWidths: const <int, TableColumnWidth>{
|
||||
0: IntrinsicColumnWidth(),
|
||||
1: FlexColumnWidth(),
|
||||
2: FixedColumnWidth(64),
|
||||
},
|
||||
defaultVerticalAlignment: TableCellVerticalAlignment.middle,
|
||||
children: <TableRow>[
|
||||
TableRow(
|
||||
children: [
|
||||
getColumnText(TranslationBase.of(context).feedbackTitle),
|
||||
getColumnText(items.cOCTitle)
|
||||
],
|
||||
),
|
||||
TableRow(
|
||||
children: [
|
||||
getColumnText(TranslationBase.of(context).complaint),
|
||||
getColumnText(items.cOCID)
|
||||
],
|
||||
),
|
||||
TableRow(
|
||||
children: [
|
||||
getColumnText(TranslationBase.of(context).date),
|
||||
getColumnText(items.date)
|
||||
],
|
||||
),
|
||||
TableRow(
|
||||
children: [
|
||||
getColumnText(TranslationBase.of(context).type),
|
||||
getColumnText(items.formType)
|
||||
],
|
||||
)
|
||||
])));
|
||||
}
|
||||
|
||||
Widget getColumnText(value) {
|
||||
return Container(child: Texts(value), padding: EdgeInsets.all(5));
|
||||
}
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class RRTRequestPage extends StatefulWidget{
|
||||
|
||||
@override
|
||||
State<StatefulWidget> createState() => RRTRequestPageState();
|
||||
|
||||
}
|
||||
class RRTRequestPageState extends State<RRTRequestPage>{
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ListView(
|
||||
padding: EdgeInsets.symmetric(horizontal: 20, vertical: 15),
|
||||
children: [
|
||||
serviceDescription(context),
|
||||
SizedBox(height: 20),
|
||||
priceTable(context),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
Widget serviceDescription(BuildContext context) =>
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 10),
|
||||
child: Text(
|
||||
"The RRT service provides medical services urgent and stable cases, not life-threatening situation or extremities and the service includes providing medical care from a copmplete medical team at home",
|
||||
textAlign: TextAlign.justify,
|
||||
style: TextStyle(color: Theme.of(context).appBarTheme.color, fontSize: 15, height: 1.5, fontWeight: FontWeight.w300),
|
||||
),
|
||||
);
|
||||
|
||||
Widget priceTable(BuildContext context){
|
||||
var radius = Radius.circular(8);
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||
children: [
|
||||
Container(
|
||||
height: 30,
|
||||
decoration: BoxDecoration(color: Theme.of(context).appBarTheme.color, borderRadius: BorderRadius.only(topLeft: radius, topRight: radius)),
|
||||
child: Center(child: Text("Approximate Service Fee", style: TextStyle(color: Colors.white, fontSize: 12, fontWeight: FontWeight.w500, letterSpacing: 1))),
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue