From 7ad4e03c1a0e383a8e4dd46d44760ab339da8c7b Mon Sep 17 00:00:00 2001 From: Elham Rababh Date: Wed, 4 Aug 2021 17:30:31 +0300 Subject: [PATCH 1/2] =?UTF-8?q?PAP-715=20:=20Y=20=E2=80=93axis=20and=20X?= =?UTF-8?q?=20=E2=80=93axis=20values=20should=20be=20display=20in=20the=20?= =?UTF-8?q?yearly=20graph=20details.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../widget/CurvedChartBloodPressure.dart | 10 ++-------- .../my_trackers/widget/LineChartCurved.dart | 18 ++---------------- .../widget/MonthCurvedChartBloodPressure.dart | 18 ++++++++++-------- .../widget/MonthLineChartCurved.dart | 18 ++++++++++-------- .../medical/vital_sign/LineChartCurved.dart | 17 ++--------------- .../LineChartCurvedBloodPressure.dart | 5 ++--- 6 files changed, 28 insertions(+), 58 deletions(-) diff --git a/lib/pages/medical/my_trackers/widget/CurvedChartBloodPressure.dart b/lib/pages/medical/my_trackers/widget/CurvedChartBloodPressure.dart index ac2349bc..7248b7e0 100644 --- a/lib/pages/medical/my_trackers/widget/CurvedChartBloodPressure.dart +++ b/lib/pages/medical/my_trackers/widget/CurvedChartBloodPressure.dart @@ -158,19 +158,13 @@ class CurvedChartBloodPressure extends StatelessWidget { ), leftTitles: SideTitles( showTitles: true, + interval:getMaxY() - getMinY() <=500?50:getMaxY() - getMinY() <=1000?100:200, + getTextStyles: (value) => const TextStyle( color: Colors.black, fontWeight: FontWeight.bold, fontSize: 10, ), - getTitles: (value) { - if (value.toInt() == 0) - return '${value.toInt()}'; - else if (value.toInt() % horizontalInterval == 0) - return '${value.toInt()}'; - else - return ''; - }, margin: 12, ), ), diff --git a/lib/pages/medical/my_trackers/widget/LineChartCurved.dart b/lib/pages/medical/my_trackers/widget/LineChartCurved.dart index 3cf5c94f..7c5d9f08 100644 --- a/lib/pages/medical/my_trackers/widget/LineChartCurved.dart +++ b/lib/pages/medical/my_trackers/widget/LineChartCurved.dart @@ -86,7 +86,6 @@ class LineChartCurved extends StatelessWidget { } } } - LineChartData sampleData1(context) { return LineChartData( lineTouchData: LineTouchData( @@ -131,26 +130,13 @@ class LineChartCurved extends StatelessWidget { ), leftTitles: SideTitles( showTitles: true, + interval:getMaxY() - getMinY() <=500?50:getMaxY() - getMinY() <=1000?100:200, getTextStyles: (value) => const TextStyle( color: Colors.black, fontWeight: FontWeight.bold, fontSize: 10, ), - getTitles: (value) { - // if (value.toInt() == 0) - // return '${value.toInt()}'; - // else if (value.toInt() % horizontalInterval == 0) - // return '${value.toInt()}'; - // else - // return ''; - // if (value.toInt() == 0) - // return '${value.toInt()}'; - // else if (value.toInt() % horizontalInterval == 0) - // return '${value.toInt()}'; - // else - return '${value.toInt()}';//'${(value.toInt() +(horizontalInterval - value.toInt() % horizontalInterval) )}'; - }, margin: 12, ), ), @@ -175,7 +161,7 @@ class LineChartCurved extends StatelessWidget { minX: 0, maxX: (timeSeries.length - 1).toDouble(), maxY: getMaxY() + 0.3, - minY: getMinY(), + minY: 0,//getMinY(), lineBarsData: getData(context), ); } diff --git a/lib/pages/medical/my_trackers/widget/MonthCurvedChartBloodPressure.dart b/lib/pages/medical/my_trackers/widget/MonthCurvedChartBloodPressure.dart index dd432d3b..ee7e00af 100644 --- a/lib/pages/medical/my_trackers/widget/MonthCurvedChartBloodPressure.dart +++ b/lib/pages/medical/my_trackers/widget/MonthCurvedChartBloodPressure.dart @@ -137,19 +137,21 @@ class MonthCurvedChartBloodPressure extends StatelessWidget { ), leftTitles: SideTitles( showTitles: true, + interval:getMaxY() - getMinY() <=500?50:getMaxY() - getMinY() <=1000?100:200, + getTextStyles: (value) => const TextStyle( color: Colors.black, fontWeight: FontWeight.bold, fontSize: 10, ), - getTitles: (value) { - // if (value.toInt() == 0) - // return '${value.toInt()}'; - // else if (value.toInt() % horizontalInterval == 0) - // return '${value.toInt()}'; - // else - return '${value.toInt()}'; - }, + // getTitles: (value) { + // // if (value.toInt() == 0) + // // return '${value.toInt()}'; + // // else if (value.toInt() % horizontalInterval == 0) + // // return '${value.toInt()}'; + // // else + // return '${value.toInt()}'; + // }, margin: 12, ), ), diff --git a/lib/pages/medical/my_trackers/widget/MonthLineChartCurved.dart b/lib/pages/medical/my_trackers/widget/MonthLineChartCurved.dart index 607f3ab0..3f1ecd22 100644 --- a/lib/pages/medical/my_trackers/widget/MonthLineChartCurved.dart +++ b/lib/pages/medical/my_trackers/widget/MonthLineChartCurved.dart @@ -120,14 +120,16 @@ class MonthLineChartCurved extends StatelessWidget { fontWeight: FontWeight.bold, fontSize: 10, ), - getTitles: (value) { - if (value.toInt() == 0) - return '${value.toInt()}'; - else if (value.toInt() % horizontalInterval == 0) - return '${value.toInt()}'; - else - return ''; - }, + interval:getMaxY() - getMinY() <=500?50:getMaxY() - getMinY() <=1000?100:200, + + // getTitles: (value) { + // if (value.toInt() == 0) + // return '${value.toInt()}'; + // else if (value.toInt() % horizontalInterval == 0) + // return '${value.toInt()}'; + // else + // return ''; + // }, margin: 12, ), ), diff --git a/lib/pages/medical/vital_sign/LineChartCurved.dart b/lib/pages/medical/vital_sign/LineChartCurved.dart index 76610708..e62a300a 100644 --- a/lib/pages/medical/vital_sign/LineChartCurved.dart +++ b/lib/pages/medical/vital_sign/LineChartCurved.dart @@ -134,21 +134,8 @@ class LineChartCurved extends StatelessWidget { fontWeight: FontWeight.bold, fontSize: 10, ), - getTitles: (value) { - if (timeSeries.length < 15) { - return '${value.toInt()}'; - } else { - if (value == minY) - return '${value.toInt()}'; - if (value == getMaxY()) - return '${value.toInt()}'; - //if (yAxixs.contains(value)) { - return '${value.toInt()}'; - - return ''; - } - return '${value.toInt()}'; - }, + interval:getMaxY() - getMinY() <=500?getMaxY() - getMinY() <=50?10:50:getMaxY() - getMinY() <=1000?100:getMaxY() - getMinY()>=10000?5000:200, + margin: 12, ), ), diff --git a/lib/pages/medical/vital_sign/LineChartCurvedBloodPressure.dart b/lib/pages/medical/vital_sign/LineChartCurvedBloodPressure.dart index 2d95f08c..e656d60e 100644 --- a/lib/pages/medical/vital_sign/LineChartCurvedBloodPressure.dart +++ b/lib/pages/medical/vital_sign/LineChartCurvedBloodPressure.dart @@ -151,9 +151,8 @@ class LineChartCurvedBloodPressure extends StatelessWidget { fontWeight: FontWeight.bold, fontSize: 10, ), - getTitles: (value) { - return '${value.toInt()}'; - }, + interval:getMaxY() - getMinY() <=500?50:getMaxY() - getMinY() <=1000?100:200, + margin: 12, ), ), From 4da163d1867f8c7a0ed807810c0edd93c435508e Mon Sep 17 00:00:00 2001 From: Zohaib Iqbal Kambrani <> Date: Thu, 5 Aug 2021 14:38:38 +0300 Subject: [PATCH 2/2] RRT in progress in stage --- assets/payment_options/payment_options.png | Bin 0 -> 22119 bytes lib/config/config.dart | 4 + lib/config/localized_values.dart | 7 + lib/core/viewModels/er/rrt-view-model.dart | 48 +++++ lib/locator.dart | 3 + lib/pages/ErService/ErOptions.dart | 2 +- .../rapid-response-team/rrt-logs-page.dart | 19 +- .../rapid-response-team/rrt-main-screen.dart | 9 +- .../rrt-pickup-address-page.dart | 92 +++++++++ .../rapid-response-team/rrt-request-page.dart | 176 ++++++++++++++++++ .../rapid-response-team/rrt-request-page.dart | 47 ----- lib/uitl/translations_delegate_base.dart | 7 + pubspec.yaml | 1 + 13 files changed, 357 insertions(+), 58 deletions(-) create mode 100644 assets/payment_options/payment_options.png create mode 100644 lib/core/viewModels/er/rrt-view-model.dart rename lib/pages/{ => ErService}/rapid-response-team/rrt-logs-page.dart (84%) rename lib/pages/{ => ErService}/rapid-response-team/rrt-main-screen.dart (86%) create mode 100644 lib/pages/ErService/rapid-response-team/rrt-pickup-address-page.dart create mode 100644 lib/pages/ErService/rapid-response-team/rrt-request-page.dart delete mode 100644 lib/pages/rapid-response-team/rrt-request-page.dart diff --git a/assets/payment_options/payment_options.png b/assets/payment_options/payment_options.png new file mode 100644 index 0000000000000000000000000000000000000000..4bb83fec564f0ee729423d991b449e9849e9bf5a GIT binary patch literal 22119 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 QrViewModel()); locator.registerFactory(() => ReportsMonthlyViewModel()); locator.registerFactory(() => NearHospitalViewModel()); + locator.registerFactory(() => RRTViewModel()); locator.registerFactory(() => AmRequestViewModel()); locator.registerFactory(() => PatientSickLeaveViewMode()); locator.registerFactory(() => MyBalanceViewModel()); @@ -304,6 +306,7 @@ void setupLocator() { locator.registerFactory(() => OfferCategoriesViewModel()); // Categories View Model locator.registerFactory(() => PackagesViewModel()); // Products View Model + //pharmacy // locator.registerFactory(() => PharmacyCategoriseViewModel()); // locator.registerFactory(() => OffersCategoriseViewModel()); diff --git a/lib/pages/ErService/ErOptions.dart b/lib/pages/ErService/ErOptions.dart index 254acd8e..05121f0f 100644 --- a/lib/pages/ErService/ErOptions.dart +++ b/lib/pages/ErService/ErOptions.dart @@ -1,7 +1,7 @@ import 'dart:convert'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; -import 'package:diplomaticquarterapp/pages/rapid-response-team/rrt-main-screen.dart'; +import 'package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-main-screen.dart'; import 'package:diplomaticquarterapp/uitl/location_util.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; diff --git a/lib/pages/rapid-response-team/rrt-logs-page.dart b/lib/pages/ErService/rapid-response-team/rrt-logs-page.dart similarity index 84% rename from lib/pages/rapid-response-team/rrt-logs-page.dart rename to lib/pages/ErService/rapid-response-team/rrt-logs-page.dart index 60a0d7cc..acfe13d8 100644 --- a/lib/pages/rapid-response-team/rrt-logs-page.dart +++ b/lib/pages/ErService/rapid-response-team/rrt-logs-page.dart @@ -1,3 +1,5 @@ +import 'package:diplomaticquarterapp/core/viewModels/er/rrt-view-model.dart'; +import 'package:diplomaticquarterapp/pages/base/base_view.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -11,11 +13,16 @@ class RRTLogPage extends StatefulWidget{ class RRTLogPageState extends State{ @override Widget build(BuildContext context) { - return Center( - child: ListView.builder( - itemCount: 10, - itemBuilder: (ctx, idx) => RRTLogListItem() - ) + return BaseView( + onModelReady: (viewModel){ + + }, + builder: (ctx, vm, widget){ + return ListView.builder( + itemCount: 10, + itemBuilder: (ctx, idx) => RRTLogListItem() + ); + } ); } @@ -75,7 +82,7 @@ class RRTLogListItem extends StatelessWidget{ ); } - Widget cancelButton()=> MaterialButton( + Widget cancelButton() => MaterialButton( height: 45, color: Color(0xFFc5272d), shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10) ), diff --git a/lib/pages/rapid-response-team/rrt-main-screen.dart b/lib/pages/ErService/rapid-response-team/rrt-main-screen.dart similarity index 86% rename from lib/pages/rapid-response-team/rrt-main-screen.dart rename to lib/pages/ErService/rapid-response-team/rrt-main-screen.dart index d9afa582..fe1c6a9d 100644 --- a/lib/pages/rapid-response-team/rrt-main-screen.dart +++ b/lib/pages/ErService/rapid-response-team/rrt-main-screen.dart @@ -1,5 +1,6 @@ -import 'package:diplomaticquarterapp/pages/rapid-response-team/rrt-logs-page.dart'; -import 'package:diplomaticquarterapp/pages/rapid-response-team/rrt-request-page.dart'; + +import 'package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-logs-page.dart'; +import 'package:diplomaticquarterapp/pages/ErService/rapid-response-team/rrt-request-page.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -13,7 +14,7 @@ class RRTMainScreenState extends State with SingleTickerProvider int currentIndex = 0; TabController tabController; - PageController pageController = PageController(initialPage: 0); + PageController pageController = PageController(initialPage: 0, keepPage: true); @override void initState() { @@ -39,7 +40,7 @@ class RRTMainScreenState extends State with SingleTickerProvider } Widget tabBar() => Container( - margin: EdgeInsets.only(left: 15, right: 15, top: 15), + margin: EdgeInsets.all(15), clipBehavior: Clip.hardEdge, decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(10)), child: TabBar( diff --git a/lib/pages/ErService/rapid-response-team/rrt-pickup-address-page.dart b/lib/pages/ErService/rapid-response-team/rrt-pickup-address-page.dart new file mode 100644 index 00000000..91e9cbd2 --- /dev/null +++ b/lib/pages/ErService/rapid-response-team/rrt-pickup-address-page.dart @@ -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 createState() => RRTRequestPickupAddressPageState(); + +} +class RRTRequestPickupAddressPageState extends State{ + bool acceptTerms = false; + Completer mapController = Completer(); + + static final CameraPosition mapCamera = CameraPosition( + target: LatLng(37.42796133580664, -122.085749655962), + zoom: 14.4746, + ); + + @override + Widget build(BuildContext context) { + return BaseView( + 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),), + ), + ); + } + +} \ No newline at end of file diff --git a/lib/pages/ErService/rapid-response-team/rrt-request-page.dart b/lib/pages/ErService/rapid-response-team/rrt-request-page.dart new file mode 100644 index 00000000..9fb0a2f5 --- /dev/null +++ b/lib/pages/ErService/rapid-response-team/rrt-request-page.dart @@ -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 createState() => RRTRequestPageState(); + +} +class RRTRequestPageState extends State{ + bool acceptTerms = false; + + @override + Widget build(BuildContext context) { + return BaseView( + 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())); + }, + ), + ) + ], + ), + ); + } + +} \ No newline at end of file diff --git a/lib/pages/rapid-response-team/rrt-request-page.dart b/lib/pages/rapid-response-team/rrt-request-page.dart deleted file mode 100644 index 67573133..00000000 --- a/lib/pages/rapid-response-team/rrt-request-page.dart +++ /dev/null @@ -1,47 +0,0 @@ -import 'package:flutter/cupertino.dart'; -import 'package:flutter/material.dart'; - -class RRTRequestPage extends StatefulWidget{ - - @override - State createState() => RRTRequestPageState(); - -} -class RRTRequestPageState extends State{ - @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))), - ) - ], - ); - } - -} \ No newline at end of file diff --git a/lib/uitl/translations_delegate_base.dart b/lib/uitl/translations_delegate_base.dart index 2a966715..6610a6af 100644 --- a/lib/uitl/translations_delegate_base.dart +++ b/lib/uitl/translations_delegate_base.dart @@ -1160,6 +1160,13 @@ class TranslationBase { String get none => localizedValues['none'][locale.languageCode]; String get RRTSummary => localizedValues['RRT-Summary'][locale.languageCode]; String get RapidResponseTeam => localizedValues['Rapid-Response-Team'][locale.languageCode]; + String get RRTDDetails => localizedValues['RRTDDetails'][locale.languageCode]; + String get ApproximateServiceFee => localizedValues['ApproximateServiceFee'][locale.languageCode]; + String get AmountBeforeTax => localizedValues['AmountBeforeTax'][locale.languageCode]; + String get TaxAmount => localizedValues['TaxAmount'][locale.languageCode]; + String get TotalAmountPayable => localizedValues['TotalAmountPayable'][locale.languageCode]; + String get iAcceptTermsConditions => localizedValues['iAcceptTermsConditions'][locale.languageCode]; + String get YouCanPayByTheFollowingOptions => localizedValues['YouCanPayByTheFollowingOptions'][locale.languageCode]; String get rrtService => localizedValues['rrtService'][locale.languageCode]; String get billAmount => localizedValues['bill-amount'][locale.languageCode]; String get transportMethod => diff --git a/pubspec.yaml b/pubspec.yaml index aab0cf32..cd1f5a12 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -224,6 +224,7 @@ flutter: - assets/images/pharmacy_module/payment/ - assets/images/pharmacy_module/lakum/ - assets/images/nfc/ + - assets/payment_options/ fonts: