From 5dc88f51c3991b1236992ad0931e5f3ff1717589 Mon Sep 17 00:00:00 2001 From: "Mirza.Shafique" Date: Tue, 3 Aug 2021 12:33:44 +0300 Subject: [PATCH] Home Page 1.0 --- assets/images/bn_offer.png | Bin 0 -> 32133 bytes assets/images/bn_offer.svg | 57 +++ assets/images/new/Boo_ Appointment.svg | 5 + assets/images/new/Bottom Nav/Family Files.svg | 3 + assets/images/new/Bottom Nav/Help.svg | 3 + assets/images/new/Bottom Nav/Home.svg | 3 + assets/images/new/Bottom Nav/My File.svg | 7 + assets/images/new/Bottom Nav/Todo.svg | 3 + assets/images/new/E_Refferal.svg | 7 + assets/images/new/HHC.svg | 8 + assets/images/new/Live_Care.svg | 8 + .../new/My Services/Appointment list.svg | 6 + assets/images/new/My Services/Vital Signs.svg | 8 + .../new/My Services/active medication.svg | 6 + assets/images/new/My Services/lab result.svg | 5 + .../new/My Services/medicine prescription.svg | 8 + assets/images/new/My Services/radiology.svg | 3 + assets/images/new/Nav_Icon.svg | 19 + assets/images/new/Pharmacy.svg | 8 + assets/images/new/RRT.svg | 8 + assets/images/new/Verify_face.svg | 7 + assets/images/new/comprehensive_checkup.svg | 7 + assets/images/new/covid_test_drive_thru.svg | 10 + assets/images/new/forward_arrow.svg | 3 + assets/images/new/remind_me.svg | 6 + assets/images/new/verified_check.svg | 7 + assets/images/new/verify_sms.svg | 11 + assets/images/new/verify_thumb.svg | 9 + assets/images/new/verify_whatsapp.svg | 12 + lib/models/gradient_color.dart | 35 ++ lib/models/hmg_services.dart | 9 + lib/models/slider_data.dart | 11 + lib/pages/landing/home_page.dart | 255 +++------- lib/pages/landing/home_page_2.dart | 338 +++++++++++++ lib/pages/landing/landing_page.dart | 10 +- .../landing/widgets/logged_slider_view.dart | 110 +++++ lib/pages/landing/widgets/offer_view.dart | 87 ++++ lib/pages/landing/widgets/pharmacy_view.dart | 41 ++ lib/pages/landing/widgets/services_view.dart | 95 ++++ lib/pages/landing/widgets/slider_view.dart | 124 +++++ lib/pages/login/login.dart | 48 +- lib/theme/colors.dart | 5 + lib/uitl/utils_new.dart | 457 ++++++++++++++++++ lib/widgets/drawer/app_drawer_widget.dart | 2 +- pubspec.yaml | 2 + 45 files changed, 1654 insertions(+), 222 deletions(-) create mode 100644 assets/images/bn_offer.png create mode 100644 assets/images/bn_offer.svg create mode 100644 assets/images/new/Boo_ Appointment.svg create mode 100644 assets/images/new/Bottom Nav/Family Files.svg create mode 100644 assets/images/new/Bottom Nav/Help.svg create mode 100644 assets/images/new/Bottom Nav/Home.svg create mode 100644 assets/images/new/Bottom Nav/My File.svg create mode 100644 assets/images/new/Bottom Nav/Todo.svg create mode 100644 assets/images/new/E_Refferal.svg create mode 100644 assets/images/new/HHC.svg create mode 100644 assets/images/new/Live_Care.svg create mode 100644 assets/images/new/My Services/Appointment list.svg create mode 100644 assets/images/new/My Services/Vital Signs.svg create mode 100644 assets/images/new/My Services/active medication.svg create mode 100644 assets/images/new/My Services/lab result.svg create mode 100644 assets/images/new/My Services/medicine prescription.svg create mode 100644 assets/images/new/My Services/radiology.svg create mode 100644 assets/images/new/Nav_Icon.svg create mode 100644 assets/images/new/Pharmacy.svg create mode 100644 assets/images/new/RRT.svg create mode 100644 assets/images/new/Verify_face.svg create mode 100644 assets/images/new/comprehensive_checkup.svg create mode 100644 assets/images/new/covid_test_drive_thru.svg create mode 100644 assets/images/new/forward_arrow.svg create mode 100644 assets/images/new/remind_me.svg create mode 100644 assets/images/new/verified_check.svg create mode 100644 assets/images/new/verify_sms.svg create mode 100644 assets/images/new/verify_thumb.svg create mode 100644 assets/images/new/verify_whatsapp.svg create mode 100644 lib/models/gradient_color.dart create mode 100644 lib/models/hmg_services.dart create mode 100644 lib/models/slider_data.dart create mode 100644 lib/pages/landing/home_page_2.dart create mode 100644 lib/pages/landing/widgets/logged_slider_view.dart create mode 100644 lib/pages/landing/widgets/offer_view.dart create mode 100644 lib/pages/landing/widgets/pharmacy_view.dart create mode 100644 lib/pages/landing/widgets/services_view.dart create mode 100644 lib/pages/landing/widgets/slider_view.dart create mode 100644 lib/uitl/utils_new.dart diff --git a/assets/images/bn_offer.png b/assets/images/bn_offer.png new file mode 100644 index 0000000000000000000000000000000000000000..7eca85cb9e722fc9bb369a2b5a39ce13c729a5ee GIT binary patch literal 32133 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Kid’s Offer + Take care of your children’s teeth + Only 500 SAR + + + + + + + + + + + + diff --git a/assets/images/new/Boo_ Appointment.svg b/assets/images/new/Boo_ Appointment.svg new file mode 100644 index 00000000..c25652c3 --- /dev/null +++ b/assets/images/new/Boo_ Appointment.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/new/Bottom Nav/Family Files.svg b/assets/images/new/Bottom Nav/Family Files.svg new file mode 100644 index 00000000..ce47d959 --- /dev/null +++ b/assets/images/new/Bottom Nav/Family Files.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/new/Bottom Nav/Help.svg b/assets/images/new/Bottom Nav/Help.svg new file mode 100644 index 00000000..31d49e71 --- /dev/null +++ b/assets/images/new/Bottom Nav/Help.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/new/Bottom Nav/Home.svg b/assets/images/new/Bottom Nav/Home.svg new file mode 100644 index 00000000..b363bbc0 --- /dev/null +++ b/assets/images/new/Bottom Nav/Home.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/new/Bottom Nav/My File.svg b/assets/images/new/Bottom Nav/My File.svg new file mode 100644 index 00000000..fc5c0096 --- /dev/null +++ b/assets/images/new/Bottom Nav/My File.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/new/Bottom Nav/Todo.svg b/assets/images/new/Bottom Nav/Todo.svg new file mode 100644 index 00000000..98232af9 --- /dev/null +++ b/assets/images/new/Bottom Nav/Todo.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/new/E_Refferal.svg b/assets/images/new/E_Refferal.svg new file mode 100644 index 00000000..bbbfc2b5 --- /dev/null +++ b/assets/images/new/E_Refferal.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/new/HHC.svg b/assets/images/new/HHC.svg new file mode 100644 index 00000000..5c0aacd1 --- /dev/null +++ b/assets/images/new/HHC.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/images/new/Live_Care.svg b/assets/images/new/Live_Care.svg new file mode 100644 index 00000000..84349a70 --- /dev/null +++ b/assets/images/new/Live_Care.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/images/new/My Services/Appointment list.svg b/assets/images/new/My Services/Appointment list.svg new file mode 100644 index 00000000..40f61dea --- /dev/null +++ b/assets/images/new/My Services/Appointment list.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/new/My Services/Vital Signs.svg b/assets/images/new/My Services/Vital Signs.svg new file mode 100644 index 00000000..fe476c3c --- /dev/null +++ b/assets/images/new/My Services/Vital Signs.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/images/new/My Services/active medication.svg b/assets/images/new/My Services/active medication.svg new file mode 100644 index 00000000..aa6eeaea --- /dev/null +++ b/assets/images/new/My Services/active medication.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/new/My Services/lab result.svg b/assets/images/new/My Services/lab result.svg new file mode 100644 index 00000000..e8507595 --- /dev/null +++ b/assets/images/new/My Services/lab result.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/new/My Services/medicine prescription.svg b/assets/images/new/My Services/medicine prescription.svg new file mode 100644 index 00000000..21cadf7c --- /dev/null +++ b/assets/images/new/My Services/medicine prescription.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/images/new/My Services/radiology.svg b/assets/images/new/My Services/radiology.svg new file mode 100644 index 00000000..8f1d8a46 --- /dev/null +++ b/assets/images/new/My Services/radiology.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/new/Nav_Icon.svg b/assets/images/new/Nav_Icon.svg new file mode 100644 index 00000000..6808f518 --- /dev/null +++ b/assets/images/new/Nav_Icon.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/new/Pharmacy.svg b/assets/images/new/Pharmacy.svg new file mode 100644 index 00000000..bdb101e5 --- /dev/null +++ b/assets/images/new/Pharmacy.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/images/new/RRT.svg b/assets/images/new/RRT.svg new file mode 100644 index 00000000..d29abf81 --- /dev/null +++ b/assets/images/new/RRT.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/images/new/Verify_face.svg b/assets/images/new/Verify_face.svg new file mode 100644 index 00000000..7969cad2 --- /dev/null +++ b/assets/images/new/Verify_face.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/new/comprehensive_checkup.svg b/assets/images/new/comprehensive_checkup.svg new file mode 100644 index 00000000..a22c960c --- /dev/null +++ b/assets/images/new/comprehensive_checkup.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/new/covid_test_drive_thru.svg b/assets/images/new/covid_test_drive_thru.svg new file mode 100644 index 00000000..09de0045 --- /dev/null +++ b/assets/images/new/covid_test_drive_thru.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/images/new/forward_arrow.svg b/assets/images/new/forward_arrow.svg new file mode 100644 index 00000000..3142c248 --- /dev/null +++ b/assets/images/new/forward_arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/new/remind_me.svg b/assets/images/new/remind_me.svg new file mode 100644 index 00000000..1e5b27a8 --- /dev/null +++ b/assets/images/new/remind_me.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/new/verified_check.svg b/assets/images/new/verified_check.svg new file mode 100644 index 00000000..73916330 --- /dev/null +++ b/assets/images/new/verified_check.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/new/verify_sms.svg b/assets/images/new/verify_sms.svg new file mode 100644 index 00000000..ae5fa9f7 --- /dev/null +++ b/assets/images/new/verify_sms.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/images/new/verify_thumb.svg b/assets/images/new/verify_thumb.svg new file mode 100644 index 00000000..e626bafc --- /dev/null +++ b/assets/images/new/verify_thumb.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/new/verify_whatsapp.svg b/assets/images/new/verify_whatsapp.svg new file mode 100644 index 00000000..09ac85c9 --- /dev/null +++ b/assets/images/new/verify_whatsapp.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/lib/models/gradient_color.dart b/lib/models/gradient_color.dart new file mode 100644 index 00000000..d2a32e8d --- /dev/null +++ b/lib/models/gradient_color.dart @@ -0,0 +1,35 @@ +import 'package:flutter/material.dart'; + +class GradientColor { + Color darkColor; + Color lightColor; + + GradientColor(this.darkColor, this.lightColor); +} + +List bannerColor = [ + new GradientColor(Color(0xFFF2B353E), Color(0xFFF71787E)), + new GradientColor(Color(0xFFFD02127), Color(0xFFFEE6161)), + new GradientColor(Colors.blue[700], Colors.blue[400]), + new GradientColor(Colors.yellow[700], Colors.yellow), + new GradientColor(Colors.orange[800], Colors.orange), + new GradientColor(Colors.green[800], Colors.green[500]), + new GradientColor(Colors.brown[700], Colors.brown), + new GradientColor(Colors.brown[700], Colors.brown), + new GradientColor(Colors.brown[700], Colors.brown), + new GradientColor(Colors.brown[700], Colors.brown), + new GradientColor(Colors.brown[700], Colors.brown), + new GradientColor(Colors.brown[700], Colors.brown), + new GradientColor(Colors.brown[700], Colors.brown), + new GradientColor(Colors.brown[700], Colors.brown), + new GradientColor(Colors.brown[700], Colors.brown), + new GradientColor(Colors.brown[700], Colors.brown), + new GradientColor(Colors.brown[700], Colors.brown), + new GradientColor(Colors.brown[700], Colors.brown), + new GradientColor(Colors.brown[700], Colors.brown), + new GradientColor(Colors.brown[700], Colors.brown), + new GradientColor(Colors.brown[700], Colors.brown), + new GradientColor(Colors.brown[700], Colors.brown), + new GradientColor(Colors.brown[700], Colors.brown), + new GradientColor(Colors.brown[700], Colors.brown), +]; diff --git a/lib/models/hmg_services.dart b/lib/models/hmg_services.dart new file mode 100644 index 00000000..c4163bd4 --- /dev/null +++ b/lib/models/hmg_services.dart @@ -0,0 +1,9 @@ +class HmgServices { + int action; + String title; + String subTitle; + String icon; + bool isLogin; + + HmgServices(this.action, this.title, this.subTitle, this.icon,this.isLogin); +} diff --git a/lib/models/slider_data.dart b/lib/models/slider_data.dart new file mode 100644 index 00000000..6d72fc4f --- /dev/null +++ b/lib/models/slider_data.dart @@ -0,0 +1,11 @@ +import 'package:flutter/material.dart'; + +class SliderData{ + String pateintId; + String pateintName; + String dof; + Color darkColor; + Color lightColor; + + SliderData(this.pateintId, this.pateintName, this.dof,this.darkColor,this.lightColor); +} \ No newline at end of file diff --git a/lib/pages/landing/home_page.dart b/lib/pages/landing/home_page.dart index 51692461..d5229161 100644 --- a/lib/pages/landing/home_page.dart +++ b/lib/pages/landing/home_page.dart @@ -37,8 +37,7 @@ class HomePage extends StatefulWidget { } class _HomePageState extends State { - PharmacyModuleViewModel pharmacyModuleViewModel = - locator(); + PharmacyModuleViewModel pharmacyModuleViewModel = locator(); @override Widget build(BuildContext context) { @@ -62,10 +61,7 @@ class _HomePageState extends State { width: double.infinity, height: 210, decoration: BoxDecoration( - image: DecorationImage( - image: ExactAssetImage( - 'assets/images/dashboard_top_bg.png'), - fit: BoxFit.cover), + image: DecorationImage(image: ExactAssetImage('assets/images/dashboard_top_bg.png'), fit: BoxFit.cover), ), child: Stack( children: [ @@ -74,8 +70,7 @@ class _HomePageState extends State { left: 5, right: 5, child: Container( - width: - MediaQuery.of(context).size.width * 0.8, + width: MediaQuery.of(context).size.width * 0.8, child: Row( children: [ Expanded( @@ -85,74 +80,48 @@ class _HomePageState extends State { margin: EdgeInsets.all(5), decoration: BoxDecoration( image: DecorationImage( - image: AssetImage( - "assets/images/new-design/covid_bg_transparent.png"), + image: AssetImage("assets/images/new-design/covid_bg_transparent.png"), fit: BoxFit.fill, ), - color: - Colors.white.withOpacity(0.3), - borderRadius: BorderRadius.all( - Radius.circular(5))), + color: Colors.white.withOpacity(0.3), + borderRadius: BorderRadius.all(Radius.circular(5))), child: Container( child: Column( children: [ Texts( - TranslationBase.of(context) - .covidTest, + TranslationBase.of(context).covidTest, color: Colors.white, fontWeight: FontWeight.w700, ), Row( - mainAxisAlignment: - MainAxisAlignment - .spaceAround, + mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ Container( margin: EdgeInsets.only( top: 15.0, ), - child: SvgPicture.asset( - 'assets/images/new-design/covid-19-car.svg', - width: 45.0, - height: 45.0), + child: SvgPicture.asset('assets/images/new-design/covid-19-car.svg', width: 45.0, height: 45.0), ), Container( - margin: EdgeInsets.only( - top: 5.0), + margin: EdgeInsets.only(top: 5.0), child: Column( children: [ Texts( - TranslationBase.of( - context) - .driveThru, - fontWeight: - FontWeight.w700, + TranslationBase.of(context).driveThru, + fontWeight: FontWeight.w700, color: Colors.white, ), ButtonTheme( - shape: - RoundedRectangleBorder( - borderRadius: - BorderRadius - .circular( - 5.0), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(5.0), ), - minWidth: MediaQuery.of( - context) - .size - .width * - 0.15, + minWidth: MediaQuery.of(context).size.width * 0.15, height: 25.0, child: RaisedButton( - color: Colors - .red[800], - textColor: - Colors.white, - disabledTextColor: - Colors.white, - disabledColor: - new Color( - 0xFFbcc2c4), + color: Colors.red[800], + textColor: Colors.white, + disabledTextColor: Colors.white, + disabledColor: new Color(0xFFbcc2c4), onPressed: () { navigateToCovidDriveThru(); }, @@ -161,14 +130,9 @@ class _HomePageState extends State { child: Center( child: Center( child: Texts( - TranslationBase.of( - context) - .bookNow, - fontWeight: - FontWeight - .w700, - color: Colors - .white, + TranslationBase.of(context).bookNow, + fontWeight: FontWeight.w700, + color: Colors.white, ), ), ), @@ -188,21 +152,14 @@ class _HomePageState extends State { ), Expanded( child: InkWell( - onTap: () => Navigator.push(context, - FadePage(page: LiveCareHome())), + onTap: () => Navigator.push(context, FadePage(page: LiveCareHome())), child: Container( height: 125, padding: EdgeInsets.all(15), margin: EdgeInsets.all(5), - decoration: BoxDecoration( - color: Colors.white - .withOpacity(0.3), - borderRadius: BorderRadius.all( - Radius.circular(5))), + decoration: BoxDecoration(color: Colors.white.withOpacity(0.3), borderRadius: BorderRadius.all(Radius.circular(5))), child: SvgPicture.asset( - projectViewModel.isArabic - ? 'assets/images/new-design/livecare_arabic_logo.svg' - : 'assets/images/new-design/liveCare_white_logo.svg', + projectViewModel.isArabic ? 'assets/images/new-design/livecare_arabic_logo.svg' : 'assets/images/new-design/liveCare_white_logo.svg', ), ), ), @@ -214,23 +171,13 @@ class _HomePageState extends State { ], ), ), - Container( - width: double.infinity, - height: projectViewModel.isArabic ? 110 : 80) + Container(width: double.infinity, height: projectViewModel.isArabic ? 110 : 80) ], ), Positioned( top: 155, - left: MediaQuery.of(context).size.width * - (MediaQuery.of(context).orientation == - Orientation.landscape - ? 0.02 - : 0.03), - right: MediaQuery.of(context).size.width * - (MediaQuery.of(context).orientation == - Orientation.landscape - ? 0.02 - : 0.03), + left: MediaQuery.of(context).size.width * (MediaQuery.of(context).orientation == Orientation.landscape ? 0.02 : 0.03), + right: MediaQuery.of(context).size.width * (MediaQuery.of(context).orientation == Orientation.landscape ? 0.02 : 0.03), child: (!model.isLogin) ? Container( width: double.infinity, @@ -238,14 +185,9 @@ class _HomePageState extends State { decoration: BoxDecoration( color: HexColor('#A59E9E'), shape: BoxShape.rectangle, - border: Border.all( - color: Colors.transparent, width: 0.5), - borderRadius: - BorderRadius.all(Radius.circular(9)), - image: DecorationImage( - image: ExactAssetImage( - 'assets/images/bg_graphic.png'), - fit: BoxFit.cover)), + border: Border.all(color: Colors.transparent, width: 0.5), + borderRadius: BorderRadius.all(Radius.circular(9)), + image: DecorationImage(image: ExactAssetImage('assets/images/bg_graphic.png'), fit: BoxFit.cover)), child: Container( margin: EdgeInsets.all(5), child: Column( @@ -261,37 +203,29 @@ class _HomePageState extends State { fontSize: 23, ), Texts( - TranslationBase.of(context) - .myMedicalFileSubTitle, + TranslationBase.of(context).myMedicalFileSubTitle, color: Colors.black, fontSize: 16, ), Align( - alignment: projectViewModel.isArabic - ? Alignment.bottomLeft - : Alignment.bottomRight, + alignment: projectViewModel.isArabic ? Alignment.bottomLeft : Alignment.bottomRight, child: InkWell( onTap: () { widget.goToMyProfile(); }, child: Container( - margin: EdgeInsets.only( - left: 15, right: 15), + margin: EdgeInsets.only(left: 15, right: 15), width: 90, height: 30, decoration: BoxDecoration( color: HexColor('#D81A2E'), shape: BoxShape.rectangle, - border: Border.all( - color: Colors.transparent, - width: 0.5), - borderRadius: BorderRadius.all( - Radius.circular(0)), + border: Border.all(color: Colors.transparent, width: 0.5), + borderRadius: BorderRadius.all(Radius.circular(0)), ), child: Center( child: Texts( - TranslationBase.of(context) - .viewMore, + TranslationBase.of(context).viewMore, color: Colors.white, fontWeight: FontWeight.w700, fontSize: 12, @@ -310,14 +244,9 @@ class _HomePageState extends State { decoration: BoxDecoration( color: HexColor('#A59E9E'), shape: BoxShape.rectangle, - border: Border.all( - color: Colors.transparent, width: 0.5), - borderRadius: - BorderRadius.all(Radius.circular(9)), - image: DecorationImage( - image: ExactAssetImage( - 'assets/images/bg_graphic.png'), - fit: BoxFit.cover), + border: Border.all(color: Colors.transparent, width: 0.5), + borderRadius: BorderRadius.all(Radius.circular(9)), + image: DecorationImage(image: ExactAssetImage('assets/images/bg_graphic.png'), fit: BoxFit.cover), ), child: Container( margin: EdgeInsets.all(5), @@ -325,12 +254,10 @@ class _HomePageState extends State { children: [ Row( children: [ - if (projectViewModel.user != null && - model.isLogin) + if (projectViewModel.user != null && model.isLogin) Expanded( child: Column( - crossAxisAlignment: - CrossAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( height: 8, @@ -338,22 +265,14 @@ class _HomePageState extends State { Row( children: [ Texts( - model.user.firstName + - " " + - model.user.lastName, + model.user.firstName + " " + model.user.lastName, color: Colors.grey[100], bold: true, fontSize: 15, ), Container( - margin: - EdgeInsets.fromLTRB( - 8.0, - 0.0, - 8.0, - 0.0), - child: SvgPicture.asset( - "assets/images/new-design/verification_check.svg"), + margin: EdgeInsets.fromLTRB(8.0, 0.0, 8.0, 0.0), + child: SvgPicture.asset("assets/images/new-design/verification_check.svg"), ), ], ), @@ -385,17 +304,14 @@ class _HomePageState extends State { decoration: BoxDecoration( color: HexColor('#D81A2E'), shape: BoxShape.rectangle, - border: Border.all( - color: Colors.transparent, - width: 0.5), + border: Border.all(color: Colors.transparent, width: 0.5), borderRadius: BorderRadius.all( Radius.circular(5), ), ), child: Center( child: Texts( - TranslationBase.of(context) - .myMedicalFile, + TranslationBase.of(context).myMedicalFile, color: Colors.white, fontSize: 12, textAlign: TextAlign.center, @@ -434,9 +350,7 @@ class _HomePageState extends State { width: 25, height: 40, ), - Texts('${model.weightKg}', - color: Colors.white, - fontSize: 17) + Texts('${model.weightKg}', color: Colors.white, fontSize: 17) ], ), ), @@ -445,8 +359,7 @@ class _HomePageState extends State { ), Expanded( child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Image.asset( 'assets/images/blood_icon.png', @@ -470,12 +383,10 @@ class _HomePageState extends State { ], ), Padding( - padding: - const EdgeInsets.only(bottom: 15, right: 15, left: 15), + padding: const EdgeInsets.only(bottom: 15, right: 15, left: 15), child: InkWell( onTap: () { - Navigator.of(context).push(MaterialPageRoute( - builder: (context) => PackagesHomePage())); + Navigator.of(context).push(MaterialPageRoute(builder: (context) => PackagesHomePage())); }, child: Container( decoration: BoxDecoration( @@ -500,9 +411,7 @@ class _HomePageState extends State { ), ), ), - if (projectViewModel.havePrivilege(64) || - projectViewModel.havePrivilege(65) || - projectViewModel.havePrivilege(67)) + if (projectViewModel.havePrivilege(64) || projectViewModel.havePrivilege(65) || projectViewModel.havePrivilege(67)) Container( margin: EdgeInsets.only(left: 15, right: 15), child: Row( @@ -532,13 +441,11 @@ class _HomePageState extends State { height: 10, ), Texts( - TranslationBase.of(context) - .homeHealthCare, + TranslationBase.of(context).homeHealthCare, textAlign: TextAlign.center, color: Colors.white, fontWeight: FontWeight.w700, - fontSize: - SizeConfig.textMultiplier * 1.55, + fontSize: SizeConfig.textMultiplier * 1.55, ) ], ), @@ -565,13 +472,11 @@ class _HomePageState extends State { height: 20, ), Texts( - TranslationBase.of(context) - .onlinePharmacy, + TranslationBase.of(context).onlinePharmacy, textAlign: TextAlign.center, color: Colors.white, fontWeight: FontWeight.w700, - fontSize: - SizeConfig.textMultiplier * 1.55, + fontSize: SizeConfig.textMultiplier * 1.55, ) ], ), @@ -608,8 +513,7 @@ class _HomePageState extends State { textAlign: TextAlign.center, color: Colors.white, fontWeight: FontWeight.w700, - fontSize: - SizeConfig.textMultiplier * 1.55, + fontSize: SizeConfig.textMultiplier * 1.55, ) ], ), @@ -626,8 +530,7 @@ class _HomePageState extends State { height: 8, ), InkWell( - onTap: () => - Navigator.push(context, FadePage(page: PaymentService())), + onTap: () => Navigator.push(context, FadePage(page: PaymentService())), child: Container( margin: EdgeInsets.only(left: 15, right: 15), child: Row( @@ -648,8 +551,7 @@ class _HomePageState extends State { height: 5, ), Texts( - TranslationBase.of(context) - .onlinePaymentService, + TranslationBase.of(context).onlinePaymentService, textAlign: TextAlign.center, color: Colors.black87, bold: false, @@ -680,8 +582,7 @@ class _HomePageState extends State { height: 10, ), Texts( - TranslationBase.of(context) - .offersAndPackages, + TranslationBase.of(context).offersAndPackages, textAlign: TextAlign.center, color: Colors.black87, bold: false, @@ -721,13 +622,11 @@ class _HomePageState extends State { height: 10, ), Texts( - TranslationBase.of(context) - .emergencyServices, + TranslationBase.of(context).emergencyServices, textAlign: TextAlign.center, color: Colors.black87, bold: false, - fontSize: - SizeConfig.textMultiplier * 1.7, + fontSize: SizeConfig.textMultiplier * 1.7, ) ], ), @@ -765,8 +664,7 @@ class _HomePageState extends State { fontWeight: FontWeight.normal, ), Texts( - TranslationBase.of(context) - .viewAllHabibMedicalService, + TranslationBase.of(context).viewAllHabibMedicalService, color: Colors.white, fontWeight: FontWeight.normal, fontSize: 10, @@ -787,15 +685,13 @@ class _HomePageState extends State { opacity: 0.5, color: Colors.grey[700], width: MediaQuery.of(context).size.width * 0.45, - onTap: () => Navigator.push( - context, FadePage(page: AllHabibMedicalService())), + onTap: () => Navigator.push(context, FadePage(page: AllHabibMedicalService())), ), DashboardItem( onTap: () { // Navigator.push( // context, FadePage(page: FeedbackHomePage())); - Navigator.push( - context, FadePage(page: ContactUsPage())); + Navigator.push(context, FadePage(page: ContactUsPage())); }, child: Container( width: double.infinity, @@ -870,17 +766,7 @@ class _HomePageState extends State { } class DashboardItem extends StatelessWidget { - const DashboardItem( - {this.hasBorder = false, - this.imageName, - @required this.child, - this.onTap, - Key key, - this.width, - this.height, - this.color, - this.opacity = 0.4, - this.hasColorFilter = true}) + const DashboardItem({this.hasBorder = false, this.imageName, @required this.child, this.onTap, Key key, this.width, this.height, this.color, this.opacity = 0.4, this.hasColorFilter = true}) : super(key: key); final bool hasBorder; final String imageName; @@ -910,17 +796,12 @@ class DashboardItem extends StatelessWidget { : HexColor('#050705').withOpacity(opacity) : Colors.white, borderRadius: BorderRadius.circular(6.0), - border: hasBorder - ? Border.all(width: 1.0, color: const Color(0xffcccccc)) - : Border.all(width: 0.0, color: Colors.transparent), + border: hasBorder ? Border.all(width: 1.0, color: const Color(0xffcccccc)) : Border.all(width: 0.0, color: Colors.transparent), image: imageName != null ? DecorationImage( image: ExactAssetImage('assets/images/$imageName'), fit: BoxFit.cover, - colorFilter: hasColorFilter - ? new ColorFilter.mode( - Colors.black.withOpacity(0.2), BlendMode.dstIn) - : null, + colorFilter: hasColorFilter ? new ColorFilter.mode(Colors.black.withOpacity(0.2), BlendMode.dstIn) : null, ) : null, ), diff --git a/lib/pages/landing/home_page_2.dart b/lib/pages/landing/home_page_2.dart new file mode 100644 index 00000000..34398b56 --- /dev/null +++ b/lib/pages/landing/home_page_2.dart @@ -0,0 +1,338 @@ +import 'package:carousel_slider/carousel_slider.dart'; +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'package:diplomaticquarterapp/config/size_config.dart'; +import 'package:diplomaticquarterapp/core/viewModels/dashboard_view_model.dart'; +import 'package:diplomaticquarterapp/core/viewModels/pharmacyModule/pharmacy_module_view_model.dart'; +import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; +import 'package:diplomaticquarterapp/locator.dart'; +import 'package:diplomaticquarterapp/models/FamilyFiles/GetAllSharedRecordByStatusResponse.dart'; +import 'package:diplomaticquarterapp/models/gradient_color.dart'; +import 'package:diplomaticquarterapp/models/hmg_services.dart'; +import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/ComprehensiveMedicalCheckup/cmc_page.dart'; +import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/HomeHealthCare/home_health_care_page.dart'; +import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/all_habib_medical_service_page.dart'; +import 'package:diplomaticquarterapp/pages/ContactUs/contact_us_page.dart'; +import 'package:diplomaticquarterapp/pages/Covid-DriveThru/covid-drivethru-location.dart'; +import 'package:diplomaticquarterapp/pages/ErService/ErOptions.dart'; +import 'package:diplomaticquarterapp/pages/base/base_view.dart'; +import 'package:diplomaticquarterapp/pages/landing/widgets/logged_slider_view.dart'; +import 'package:diplomaticquarterapp/pages/landing/widgets/offer_view.dart'; +import 'package:diplomaticquarterapp/pages/landing/widgets/pharmacy_view.dart'; +import 'package:diplomaticquarterapp/pages/landing/widgets/services_view.dart'; +import 'package:diplomaticquarterapp/pages/landing/widgets/slider_view.dart'; +import 'package:diplomaticquarterapp/pages/livecare/livecare_home.dart'; +import 'package:diplomaticquarterapp/pages/packages_offers/OfferAndPackagesPage.dart'; +import 'package:diplomaticquarterapp/pages/paymentService/payment_service.dart'; +import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart' as s; +import 'package:diplomaticquarterapp/services/family_files/family_files_provider.dart'; +import 'package:diplomaticquarterapp/theme/colors.dart'; +import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; +import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; +import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; +import 'package:diplomaticquarterapp/uitl/utils_new.dart'; +import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; +import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; +import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; +import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hexcolor/hexcolor.dart'; +import 'package:provider/provider.dart'; +import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; +import 'landing_page_pharmcy.dart'; +import 'package:diplomaticquarterapp/models/slider_data.dart'; + +class HomePage2 extends StatefulWidget { + final Function goToMyProfile; + + HomePage2({Key key, this.goToMyProfile}); + + @override + _HomePageState2 createState() => _HomePageState2(); +} + +class _HomePageState2 extends State { + PharmacyModuleViewModel pharmacyModuleViewModel = locator(); + ProjectViewModel projectViewModel; + var familyFileProvider = FamilyFilesProvider(); + List hmgServices = []; + + @override + void initState() { + // TODO: implement initState + super.initState(); + initialiseHmgServices(false); + // getFamilyFiles(); + } + + initialiseHmgServices(bool isLogin) { + hmgServices.add(new HmgServices(0, "LiveCare ", "Online Consulting", "assets/images/new/Live_Care.svg", isLogin)); + hmgServices.add(new HmgServices(1, "Covid Test", "Drive-Thru", "assets/images/new/covid_test_drive_thru.svg", isLogin)); + hmgServices.add(new HmgServices(2, "Checkup", "Comprehensive", "assets/images/new/comprehensive_checkup.svg", isLogin)); + hmgServices.add(new HmgServices(3, "HHC Home", "Health Care", "assets/images/new/HHC.svg", isLogin)); + hmgServices.add(new HmgServices(4, "E-Refferal", "Services", "assets/images/new/E_Refferal.svg", isLogin)); + hmgServices.add(new HmgServices(5, "RRT", "Emergency", "assets/images/new/RRT.svg", isLogin)); + } + + Future getFamilyFiles() async { + if (projectViewModel.user != null) { + print("calling_family"); + + if (await s.sharedPref.getObject(FAMILY_FILE) != null) { + // print(await sharedPref.getObject(FAMILY_FILE)); + return Future.value(GetAllSharedRecordsByStatusResponse.fromJson(await s.sharedPref.getObject(FAMILY_FILE))); + } else { + return familyFileProvider.getSharedRecordByStatus(); + } + } + } + + @override + Widget build(BuildContext context) { + projectViewModel = Provider.of(context); + return BaseView( + onModelReady: (model) => model.getPatientRadOrders(), + builder: (_, model, wi) => Container( + color: Color(0xFFFF7F7F7), + child: SingleChildScrollView( + child: Column( + children: [ + !model.isLogin + ? AspectRatio( + aspectRatio: 2, + child: Container( + margin: EdgeInsets.all(14), + child: SliderView(), + // height: MediaQuery.of(context).size.width / 2.6, + ), + ) + : FutureBuilder( + future: getFamilyFiles(), // async work + builder: (BuildContext context, AsyncSnapshot snapshot) { + switch (snapshot.connectionState) { + case ConnectionState.waiting: + return Padding(padding: EdgeInsets.all(10), child: Text('')); + default: + if (snapshot.hasError) + return Padding(padding: EdgeInsets.all(10), child: Text(snapshot.error)); + else { + List sliderData = []; + sliderData.add(new SliderData(TranslationBase.of(context).fileno + ": " + projectViewModel.user.patientID.toString(), + projectViewModel.user.firstName + ' ' + projectViewModel.user.lastName, "", bannerColor[0].darkColor, bannerColor[0].lightColor)); + for (int i = 0; i < snapshot.data.getAllSharedRecordsByStatusList.length; i++) { + if (snapshot.data.getAllSharedRecordsByStatusList[i].status == 3) + sliderData.add(new SliderData(TranslationBase.of(context).fileno + ": " + snapshot.data.getAllSharedRecordsByStatusList[i].responseID.toString(), + snapshot.data.getAllSharedRecordsByStatusList[i].patientName, "", bannerColor[i + 1].darkColor, bannerColor[i + 1].lightColor)); + } + + return CarouselSlider( + options: CarouselOptions( + autoPlay: false, + enlargeCenterPage: true, + initialPage: 0, + aspectRatio: 2.5, + viewportFraction: 0.9, + enableInfiniteScroll: false, + onPageChanged: (index, reason) { + print("onPageChanged"); + }), + items: [ + for (int i = 0; i < sliderData.length; i++) + Builder( + builder: (BuildContext context) { + return LoggedSliderView(sliderData[i]); + }, + ) + ], + ); + } + } + }, + ), + // CarouselSlider( + // options: CarouselOptions( + // autoPlay: false, + // enlargeCenterPage: true, + // initialPage: 0, + // aspectRatio: 2.5, + // viewportFraction: 0.9, + // enableInfiniteScroll: false, + // onPageChanged: (index, reason) { + // print("onPageChanged"); + // }), + // items: [ + // for (int i = 0; i < bannerColor.length; i++) + // Builder( + // builder: (BuildContext context) { + // return LoggedSliderView(bannerColor[i].darkColor, bannerColor[i].lightColor); + // }, + // ) + // ], + // ), + model.isLogin + ? FutureBuilder( + future: getFamilyFiles(), // async work + builder: (BuildContext context, AsyncSnapshot snapshot) { + switch (snapshot.connectionState) { + case ConnectionState.waiting: + return Padding(padding: EdgeInsets.all(10), child: Text('')); + default: + if (snapshot.hasError) + return Padding(padding: EdgeInsets.all(10), child: Text(snapshot.error)); + else + return Container( + decoration: BoxDecoration( + border: Border( + bottom: BorderSide( + // <--- left side + color: Colors.grey[200], + width: 1.0, + ), + )), + child: Column( + children: [ + // projectViewModel.user.isFamily == true + // ? + Container( + padding: EdgeInsets.only(bottom: 5), + child: InkWell( + onTap: () { + // switchUser( + // mainUser, + // context); + }, + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: Icon(Icons.person), + ), + Expanded( + flex: 7, + child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + AppText(projectViewModel.user.firstName + ' ' + projectViewModel.user.lastName, color: Theme.of(context).textTheme.bodyText1.color), + AppText( + TranslationBase.of(context).fileno + ": " + projectViewModel.user.patientID.toString(), + color: Theme.of(context).textTheme.bodyText1.color, + ), + ])), + ], + ))), + // : SizedBox(), + Column( + mainAxisAlignment: MainAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: snapshot.data.getAllSharedRecordsByStatusList.map((result) { + return result.status == 3 + ? Container( + padding: EdgeInsets.only(bottom: 5), + child: InkWell( + onTap: () { + // switchUser(result, + // context); + }, + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: Icon(Icons.person, color: result.responseID == model.user.patientID ? Color(0xFF40ACC9) : Colors.black), + ), + Expanded( + flex: 7, + child: Padding( + padding: EdgeInsets.only(left: 5, right: 5), + child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + AppText(result.patientName, color: result.responseID == model.user.patientID ? Color(0xFF40ACC9) : Colors.black), + AppText(TranslationBase.of(context).fileno + ": " + result.responseID.toString(), + color: result.responseID == projectViewModel.user.patientID ? Color(0xFF40ACC9) : Colors.black), + ]))), + ], + ))) + : SizedBox(); + }).toList()) + ], + )); + } + }, + ) + : Container(), + Padding( + padding: const EdgeInsets.only(left: 20, right: 20), + child: Image.asset("assets/images/bn_offer.png"), + ), + mHeight(20), + Padding( + padding: const EdgeInsets.only(left:20,right: 20,top: 20,), + child: Column( + children: [ + Row( + children: [ + Expanded( + child: Text( + "HMG Services", + style: TextStyle( + color: Colors.black, + fontSize: 18, + fontWeight: FontWeight.bold, + ), + ), + ), + Text( + "View All Services", + style: TextStyle( + color: CustomColors.accentColor, + fontSize: 14, + ), + ), + ], + ), + mHeight(20), + GridView.builder( + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3,childAspectRatio: 2/2 ,crossAxisSpacing: 12,mainAxisSpacing: 12), + physics: NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemCount: hmgServices.length, + padding: EdgeInsets.zero, + itemBuilder: (BuildContext context, int index) { + return ServicesView(hmgServices[index]); + } + ), + ], + ), + ), + Padding( + padding: const EdgeInsets.only(left:20,right: 20,top: 20,), + child: PharmacyView(), + ), + mHeight(140), + ], + ), + ), + ), + ); + } + + getPharmacyToken(DashboardViewModel model) async { + if (!model.isLogin) { + Navigator.push(context, FadePage(page: LandingPagePharmacy())); + } else { + GifLoaderDialogUtils.showMyDialog(context); + await pharmacyModuleViewModel.generatePharmacyToken().then((value) async { + if (pharmacyModuleViewModel.error.isNotEmpty) { + await pharmacyModuleViewModel.createUser().then((value) { + GifLoaderDialogUtils.hideDialog(context); + Navigator.push(context, FadePage(page: LandingPagePharmacy())); + }); + } else { + GifLoaderDialogUtils.hideDialog(context); + Navigator.push(context, FadePage(page: LandingPagePharmacy())); + } + }); + } + } + + navigateToCovidDriveThru() { + Navigator.push(context, FadePage(page: CovidDrivethruLocation())); + } +} diff --git a/lib/pages/landing/landing_page.dart b/lib/pages/landing/landing_page.dart index c55b685b..2487e12d 100644 --- a/lib/pages/landing/landing_page.dart +++ b/lib/pages/landing/landing_page.dart @@ -12,11 +12,13 @@ import 'package:diplomaticquarterapp/models/LiveCare/IncomingCallData.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/BookingOptions.dart'; import 'package:diplomaticquarterapp/pages/DrawerPages/family/my-family.dart'; import 'package:diplomaticquarterapp/pages/ToDoList/ToDo.dart'; +import 'package:diplomaticquarterapp/pages/landing/home_page_2.dart'; import 'package:diplomaticquarterapp/pages/livecare/incoming_call.dart'; import 'package:diplomaticquarterapp/pages/medical/medical_profile_page.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/services/family_files/family_files_provider.dart' as family; + import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; import 'package:diplomaticquarterapp/uitl/CalendarUtils.dart'; import 'package:diplomaticquarterapp/uitl/HMGNetworkConnectivity.dart'; @@ -105,6 +107,8 @@ class _LandingPageState extends State with WidgetsBindingObserver { print(route.settings.name); } + + //setState(() { print("didChangeAppLifecycleState"); print('state = $state'); @@ -187,6 +191,8 @@ class _LandingPageState extends State with WidgetsBindingObserver { if (results[Permission.accessMediaLocation].isGranted) ; // if (results[Permission.calendar].isGranted) ; }); + + requestPermissions(); // }); // @@ -307,6 +313,8 @@ class _LandingPageState extends State with WidgetsBindingObserver { // ); } + + showDialogs(String message) { ConfirmDialog dialog = new ConfirmDialog( context: context, @@ -541,7 +549,7 @@ class _LandingPageState extends State with WidgetsBindingObserver { physics: NeverScrollableScrollPhysics(), controller: pageController, children: [ - HomePage( + HomePage2( goToMyProfile: () { _changeCurrentTab(1); }, diff --git a/lib/pages/landing/widgets/logged_slider_view.dart b/lib/pages/landing/widgets/logged_slider_view.dart new file mode 100644 index 00000000..24b0dfe5 --- /dev/null +++ b/lib/pages/landing/widgets/logged_slider_view.dart @@ -0,0 +1,110 @@ +import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/health_calculator/carbs/carbs.dart'; +import 'package:diplomaticquarterapp/uitl/utils_new.dart'; +import 'package:flutter/material.dart'; +import 'dart:math'; +import 'package:diplomaticquarterapp/models/slider_data.dart'; + +class LoggedSliderView extends StatelessWidget { + SliderData sliderData; + + LoggedSliderView(this.sliderData); + + @override + Widget build(BuildContext context) { + return Card( + shape: cardRadius(20), + elevation: 3, + margin: EdgeInsets.all(6), + child: Card( + shape: cardRadius(20), + clipBehavior: Clip.antiAlias, + margin: EdgeInsets.zero, + color: sliderData.darkColor, + elevation: 0, + // padding: EdgeInsets.zero, + child: Stack( + children: [ + Card( + child: Container( + width: double.infinity, + height: double.infinity, + ), + color: Colors.transparent, + margin: EdgeInsets.zero, + elevation: 8, + ), + Container( + width: double.infinity, + height: double.infinity, + clipBehavior: Clip.antiAlias, + margin: EdgeInsets.zero, + decoration: containerBottomRightRadiusWithGradient(MediaQuery.of(context).size.width / 4, darkColor: sliderData.darkColor, lightColor: sliderData.lightColor), + child: Card( + color: Colors.transparent, + margin: EdgeInsets.zero, + elevation: 8, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + mFlex(3), + Row( + children: [ + Container( + decoration: containerColorRadiusRight(Color(0xFFFBF2E31), 100), + padding: EdgeInsets.only(left: 20, right: 16, top: 6, bottom: 6), + child: Text( + "Medical File", + style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold, fontSize: 13), + ), + ), + mWidth(MediaQuery.of(context).size.width / 50), + circularAviator(MediaQuery.of(context).size.width / 14, brColor: Colors.white), + mFlex(1), + Text( + "Verified", + style: TextStyle(color: Colors.white, fontSize: 10), + ), + circularAviator(MediaQuery.of(context).size.width / 28, brColor: Colors.white, icon: Icons.done, bcColor: Colors.white), + mWidth(MediaQuery.of(context).size.width / 70), + ], + ), + mFlex(2), + Padding( + padding: const EdgeInsets.only(left: 20,right: 20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + sliderData.pateintName, + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 18, + ), + ), + Text( + sliderData.pateintId, + style: TextStyle(color: Colors.white, fontSize: 14), + ), + ], + ), + ), + mFlex(2), + Padding( + padding: const EdgeInsets.only(left: 20, right: 20), + child: Text( + "34 Years, Male, 4 January 1987", + style: TextStyle(color: Colors.white, fontSize: 14), + ), + ), + mFlex(3), + ], + ), + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/pages/landing/widgets/offer_view.dart b/lib/pages/landing/widgets/offer_view.dart new file mode 100644 index 00000000..c8269bc6 --- /dev/null +++ b/lib/pages/landing/widgets/offer_view.dart @@ -0,0 +1,87 @@ +import 'package:diplomaticquarterapp/uitl/utils_new.dart'; +import 'package:flutter/material.dart'; + +class OfferView extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + width: double.infinity, + height: MediaQuery.of(context).size.width / 5, + decoration: containerColorRadiusBorderWidth(Colors.grey[200], 20, Colors.grey[300], 2), + child: Row( + children: [ + Expanded( + flex: 2, + child: Container( + width: double.infinity, + padding: EdgeInsets.only(left: 20,right: 20,top: 8,bottom: 8), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "Kid's Offer", + style: TextStyle( + color: Color(0xFFFBF2E31), + fontSize: 18, + fontWeight: FontWeight.bold, + ), + ), + Text( + "Take Care of your children's teeth", + style: TextStyle( + color: Colors.black, + fontSize: 12, + fontWeight: FontWeight.bold, + ), + ), + mFlex(1), + Row( + children: [ + Text( + "Only ", + style: TextStyle( + color: Color(0xFFFBF2E31), + fontSize: 14, + ), + ), + Text( + "500 ", + style: TextStyle( + color: Color(0xFFFBF2E31), + fontSize: 14, + fontWeight: FontWeight.bold, + ), + ), + Text( + "SAR ", + style: TextStyle( + color: Color(0xFFFBF2E31), + fontSize: 14, + ), + ), + mFlex(1), + ], + ), + ], + ), + ), + ), + Expanded( + child: Column( + children: [ + Expanded( + flex: 1, + child: Image.asset("assets/images/pharmacy_module/payment/hmg_shipping_logo.png"), + ), + Expanded( + flex: 1, + child: Image.asset("name"), + ), + ], + ), + ), + ], + ), + ); + } +} diff --git a/lib/pages/landing/widgets/pharmacy_view.dart b/lib/pages/landing/widgets/pharmacy_view.dart new file mode 100644 index 00000000..c065c7a1 --- /dev/null +++ b/lib/pages/landing/widgets/pharmacy_view.dart @@ -0,0 +1,41 @@ +import 'package:diplomaticquarterapp/uitl/utils_new.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +class PharmacyView extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + width: double.infinity, + decoration: containerColorRadiusBorderWidth(Colors.grey[200], 16, Colors.grey[300], 2), + padding: EdgeInsets.only(left: 12, right: 12, top: 12, bottom: 12), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SvgPicture.asset("assets/images/new/Pharmacy.svg"), + mWidth(12), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + "HMG Pharmacy", + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 16, + ), + ), + Text( + "Ecommerce Solution", + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 14, + ), + ), + ], + ) + ], + ), + ); + } +} diff --git a/lib/pages/landing/widgets/services_view.dart b/lib/pages/landing/widgets/services_view.dart new file mode 100644 index 00000000..0e829aac --- /dev/null +++ b/lib/pages/landing/widgets/services_view.dart @@ -0,0 +1,95 @@ +import 'package:auto_size_text/auto_size_text.dart'; +import 'package:diplomaticquarterapp/models/hmg_services.dart'; +import 'package:diplomaticquarterapp/theme/colors.dart'; +import 'package:diplomaticquarterapp/uitl/utils_new.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +class ServicesView extends StatelessWidget { + HmgServices hmgServices; + + ServicesView(this.hmgServices); + + @override + Widget build(BuildContext context) { + return Container( + width: double.infinity, + height: double.infinity, + decoration: containerRadiusWithGradientServices(20, lightColor: CustomColors.lightGreyColor, darkColor: CustomColors.darkGreyColor), + child: Stack( + children: [ + Container( + width: double.infinity, + height: double.infinity, + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + mFlex(1), + Flexible( + flex: 8, + child: Column( + children: [ + Flexible( + flex: 5, + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Opacity( + opacity: 0.07, + child: SvgPicture.asset( + hmgServices.icon, + width: double.infinity, + height: double.infinity, + ), + ), + ), + ), + mFlex(1), + ], + ), + ), + ], + ), + ), + Container( + width: double.infinity, + height: double.infinity, + padding: EdgeInsets.all(MediaQuery.of(context).size.width / 30), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + mFlex(1), + SvgPicture.asset(hmgServices.icon), + mFlex(2), + Text( + hmgServices.title, + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + ), + ), + Container( + width: double.infinity, + child: Row( + children: [ + Expanded( + child: AutoSizeText( + hmgServices.subTitle, + maxLines: 1, + style: TextStyle( + fontSize: 10, + ), + ), + ), + ], + ), + ), + mFlex(1), + ], + ), + ), + ], + ), + ); + } +} diff --git a/lib/pages/landing/widgets/slider_view.dart b/lib/pages/landing/widgets/slider_view.dart new file mode 100644 index 00000000..e999ea25 --- /dev/null +++ b/lib/pages/landing/widgets/slider_view.dart @@ -0,0 +1,124 @@ +import 'package:diplomaticquarterapp/uitl/utils_new.dart'; +import 'package:flutter/material.dart'; +import 'dart:math'; + +class SliderView extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Card( + shape: cardRadius(20), + elevation: 0, + margin: EdgeInsets.all(6), + child: Card( + shape: cardRadius(20), + clipBehavior: Clip.antiAlias, + margin: EdgeInsets.zero, + color: Color(0xFFF2B353E), + elevation: 0, + // padding: EdgeInsets.zero, + child: Container( + width: double.infinity, + height: double.infinity, + clipBehavior: Clip.antiAlias, + margin: EdgeInsets.zero, + decoration: containerBottomRightRadiusWithGradient(MediaQuery.of(context).size.width / 4), + child: Card( + color: Colors.transparent, + margin: EdgeInsets.zero, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + mFlex(3), + Container( + decoration: containerColorRadiusRight(Color(0xFFFBF2E31), 100), + padding: EdgeInsets.only(left: 20, right: 16, top: 6, bottom: 6), + child: Text( + "Medical File", + style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold, fontSize: 13), + ), + ), + mFlex(2), + Padding( + padding: const EdgeInsets.only(left: 20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "Can’t see your medical File?", + style: TextStyle( + color: Colors.white, + fontWeight: FontWeight.bold, + fontSize: 18, + ), + ), + Text( + "Login or Register Now", + style: TextStyle(color: Colors.white, fontSize: 14), + ), + ], + ), + ), + mFlex(2), + Padding( + padding: const EdgeInsets.only(left: 20), + child: Container( + height: MediaQuery.of(context).size.width / 14, + width: MediaQuery.of(context).size.width / 6, + child: RaisedButton( + shape: cardRadius(8), + color: Color(0xFFFBF2E31), + padding: EdgeInsets.zero, + onPressed: () {}, + child: Text( + "Login", + style: TextStyle( + color: Colors.white, + ), + ), + ), + ), + ), + mFlex(3), + ], + ), + ), + ), + ), + ); + } +} + +class CurvedBottomClipper extends CustomClipper { + @override + Path getClip(Size size) { + // I've taken approximate height of curved part of view + // Change it if you have exact spec for it + final roundingHeight = size.height * 3 / 5; + + // this is top part of path, rectangle without any rounding + final filledRectangle = Rect.fromLTRB(0, 0, size.width, size.height - roundingHeight); + + // this is rectangle that will be used to draw arc + // arc is drawn from center of this rectangle, so it's height has to be twice roundingHeight + // also I made it to go 5 units out of screen on left and right, so curve will have some incline there + final roundingRectangle = Rect.fromLTRB(-size.width, size.height - roundingHeight * 2, size.width, size.height); + + final path = Path(); + path.addRect(filledRectangle); + + // so as I wrote before: arc is drawn from center of roundingRectangle + // 2nd and 3rd arguments are angles from center to arc start and end points + // 4th argument is set to true to move path to rectangle center, so we don't have to move it manually + path.arcTo(roundingRectangle, pi, -pi, true); + path.close(); + + return path; + } + + @override + bool shouldReclip(CustomClipper oldClipper) { + // returning fixed 'true' value here for simplicity, it's not the part of actual question, please read docs if you want to dig into it + // basically that means that clipping will be redrawn on any changes + return true; + } +} diff --git a/lib/pages/login/login.dart b/lib/pages/login/login.dart index 927e98de..998bf1c2 100644 --- a/lib/pages/login/login.dart +++ b/lib/pages/login/login.dart @@ -29,7 +29,7 @@ import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; - +import 'package:diplomaticquarterapp/services/family_files/family_files_provider.dart'; import '../../Constants.dart'; class Login extends StatefulWidget { @@ -47,17 +47,16 @@ class _Login extends State { final authService = new AuthProvider(); var sharedPref = new AppSharedPreferences(); bool isLoading = false; - AppointmentRateViewModel appointmentRateViewModel = - locator(); - PharmacyModuleViewModel pharmacyModuleViewModel = - locator(); + AppointmentRateViewModel appointmentRateViewModel = locator(); + PharmacyModuleViewModel pharmacyModuleViewModel = locator(); - AuthenticatedUserObject authenticatedUserObject = - locator(); + AuthenticatedUserObject authenticatedUserObject = locator(); ProjectViewModel projectViewModel; ToDoCountProviderModel toDoProvider; + var familyFileProvider = FamilyFilesProvider(); + @override void initState() { // getDeviceToken(); @@ -88,9 +87,7 @@ class _Login extends State { Expanded( flex: 2, child: Texts( - loginType == 1 - ? TranslationBase.of(context).enterNationalId - : TranslationBase.of(context).enterFile, + loginType == 1 ? TranslationBase.of(context).enterNationalId : TranslationBase.of(context).enterFile, fontSize: SizeConfig.textMultiplier * 3.5, textAlign: TextAlign.start, )), @@ -99,12 +96,7 @@ class _Login extends State { child: Column( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - Directionality( - textDirection: TextDirection.ltr, - child: MobileNo( - onNumberChange: (value) => - {mobileNo = value, validateForm()}, - onCountryChange: (value) => countryCode = value)), + Directionality(textDirection: TextDirection.ltr, child: MobileNo(onNumberChange: (value) => {mobileNo = value, validateForm()}, onCountryChange: (value) => countryCode = value)), Directionality( textDirection: TextDirection.ltr, child: Container( @@ -113,16 +105,9 @@ class _Login extends State { fontWeight: FontWeight.normal, controller: nationalIDorFile, onChanged: (value) => {validateForm()}, - prefixIcon: Icon( - loginType == 1 - ? Icons.chrome_reader_mode - : Icons.receipt, - color: secondaryColor), - padding: EdgeInsets.only( - top: 20, bottom: 20, left: 10, right: 10), - hintText: loginType == 1 - ? TranslationBase.of(context).nationalID - : TranslationBase.of(context).fileNo, + prefixIcon: Icon(loginType == 1 ? Icons.chrome_reader_mode : Icons.receipt, color: secondaryColor), + padding: EdgeInsets.only(top: 20, bottom: 20, left: 10, right: 10), + hintText: loginType == 1 ? TranslationBase.of(context).nationalID : TranslationBase.of(context).fileNo, ))) ], ), @@ -145,9 +130,7 @@ class _Login extends State { child: DefaultButton( TranslationBase.of(context).login, () => {this.startLogin()}, - color: isButtonDisabled == true - ? Colors.grey - : Colors.grey[900], + color: isButtonDisabled == true ? Colors.grey : Colors.grey[900], textColor: Colors.white, )) ], @@ -168,8 +151,7 @@ class _Login extends State { } void validateForm() { - if (util.validateIDBox(nationalIDorFile.text, loginType) == true && - util.isSAUDIIDValid(nationalIDorFile.text, loginType) == true) { + if (util.validateIDBox(nationalIDorFile.text, loginType) == true && util.isSAUDIIDValid(nationalIDorFile.text, loginType) == true) { setState(() { isButtonDisabled = false; }); @@ -268,9 +250,9 @@ class _Login extends State { authenticatedUserObject.user = result.list; projectViewModel.user = authenticatedUserObject.user; + await familyFileProvider.getSharedRecordByStatus(); await pharmacyModuleViewModel.generatePharmacyToken().then((value) async { - if (pharmacyModuleViewModel.error.isNotEmpty) - await pharmacyModuleViewModel.createUser(); + if (pharmacyModuleViewModel.error.isNotEmpty) await pharmacyModuleViewModel.createUser(); }); appointmentRateViewModel diff --git a/lib/theme/colors.dart b/lib/theme/colors.dart index 893449f1..6185aeb0 100644 --- a/lib/theme/colors.dart +++ b/lib/theme/colors.dart @@ -8,4 +8,9 @@ class CustomColors { static const Color darkGrey = Color(0xFF222222); static const Color black = Color(0xFF141414); static const Color white = Color(0xFFFFFFFF); + static const Color accentColor=Color(0xFFFBF2E31); + static const Color lightGreyColor=Color(0xFFFEDEDED); + static const Color darkGreyColor=Color(0xFFFC9C9C9); + static const Color pharmacyGreyColor=Color(0xFFFE5E5E5); + static const Color backgroudGreyColor=Color(0xFFFF7F7F7); } diff --git a/lib/uitl/utils_new.dart b/lib/uitl/utils_new.dart new file mode 100644 index 00000000..1dd4e76a --- /dev/null +++ b/lib/uitl/utils_new.dart @@ -0,0 +1,457 @@ +import 'dart:io'; +import 'dart:math'; +import 'dart:ui'; + +import 'package:flutter/material.dart'; + +Decoration appGradient = BoxDecoration( + gradient: LinearGradient( + colors: [ + Color(0xFFFDCA46F), + Color(0xFFFA47E5D), + ], + begin: Alignment.centerLeft, + end: Alignment.centerRight, + ), +); + +Color getColorFromHex(String hexColor) { + hexColor = hexColor.toUpperCase().replaceAll('#', ''); + + if (hexColor.length == 6) { + hexColor = 'FF' + hexColor; + } + + return Color(int.parse(hexColor, radix: 16)); +} + +spacerVertical(double v) { + return Container( + height: v, + width: double.infinity, + ); +} + +spacerHorizontal(double v) { + return Container( + height: v, + width: v, + ); +} + +spacer() { + return SizedBox( + height: 8, + ); +} + +Future navigateTo(context, page) async { + return await Navigator.push(context, MaterialPageRoute(builder: (context) => page)); +} + +// Future navigateToReplace(context, page) async { +// Navigator.pushReplacement(context, FadeRouteBuilder(page: page)); +// } + +InputDecoration txtField(String label) { + return new InputDecoration( + border: InputBorder.none, + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none, + errorBorder: InputBorder.none, + hintText: label, + hintStyle: TextStyle(color: Colors.grey), + disabledBorder: InputBorder.none, + contentPadding: EdgeInsets.only(left: 15, right: 15), + ); +} + +InputDecoration txtField3(String label) { + return new InputDecoration( + border: InputBorder.none, + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none, + errorBorder: InputBorder.none, + hintText: label, + disabledBorder: InputBorder.none, + counterText: "", + contentPadding: EdgeInsets.only(left: 5, right: 5), + ); +} + +InputDecoration txtFieldSearch(String label) { + return new InputDecoration( + border: InputBorder.none, + suffixIcon: Icon(Icons.clear), + disabledBorder: InputBorder.none, + contentPadding: EdgeInsets.only(left: 15, right: 15), + ); +} + +Widget circularAviator(double s, {Color bcColor, Color brColor, Color iconColor, int borderWidth, IconData icon}) { + return Card( + shape: cardRadius(2000), + color: Colors.transparent, + elevation: 4, + child: Container( + width: s, + height: s, + decoration: containerColorRadiusBorderWidth(bcColor == null ? Colors.grey[200] : bcColor, 2000, brColor == null ? Colors.blueGrey[800] : brColor, borderWidth == null ? 2 : borderWidth), + child: Icon( + icon == null ? Icons.person : icon, + size: s / 1.7, + color: iconColor == null ? Colors.grey[800] : iconColor, + ), + ), + ); +} + +Widget circularImage(String im, double width, double height) { + return new Container( + width: 190.0, + height: 190.0, + decoration: new BoxDecoration( + shape: BoxShape.circle, + image: new DecorationImage( + fit: BoxFit.fill, + image: new AssetImage(im), + ), + ), + ); +} + +circularImage2(String im, double width, double height) { + return new Container( + width: width, + height: height, + decoration: new BoxDecoration( + shape: BoxShape.circle, + image: new DecorationImage( + fit: BoxFit.fill, + image: new AssetImage(im), + ), + ), + ); +} + +Widget mDivider(Color color) { + return Divider( + // width: double.infinity, + height: 1, + color: color, + ); +} + +Widget mFlex(int f) { + return Flexible( + flex: f, + child: Container(), + ); +} + +mOverlay(double op) { + return Opacity( + opacity: op, + child: Container( + color: Colors.black, + width: double.infinity, + height: double.infinity, + ), + ); +} + +Widget mHeight(double h) { + return Container( + height: h, + ); +} + +Widget mWidth(double w) { + return Container( + width: w, + ); +} + +RoundedRectangleBorder buttonShape() { + return RoundedRectangleBorder( + borderRadius: BorderRadius.circular(14.0), + ); +} + +Decoration containerRadiusWithGradient(double radius) { + return BoxDecoration( + borderRadius: BorderRadius.circular(radius), + gradient: LinearGradient( + colors: [ + Color(0xFFF71787E), + Color(0xFFF2B353E), + ], + begin: Alignment.centerLeft, + end: Alignment.centerRight, + ), + ); +} + +Decoration containerBottomRightRadiusWithGradient(double radius, {Color darkColor, Color lightColor}) { + return BoxDecoration( + borderRadius: BorderRadius.only(bottomRight: Radius.circular(radius)), + gradient: LinearGradient( + colors: [ + darkColor == null ? Color(0xFFF2B353E) : darkColor, + lightColor == null ? Color(0xFFF71787E) : lightColor, + ], + begin: Alignment.topCenter, + end: Alignment.bottomRight, + ), + ); +} + +Decoration containerRadiusWithGradientServices(double radius, {Color darkColor, Color lightColor}) { + return BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(radius)), + gradient: LinearGradient( + colors: [ + darkColor == null ? Color(0xFFF2B353E) : darkColor, + lightColor == null ? Color(0xFFF71787E) : lightColor, + ], + begin: Alignment.centerRight, + end: Alignment.topLeft, + ), + ); +} + +Decoration containerRadius(Color background, double radius) { + return BoxDecoration( + color: background, + border: Border.all( + width: 1, // + color: background // <--- border width here + ), + borderRadius: BorderRadius.circular(radius), + ); +} + +Decoration containerColorRadiusBorder(Color background, double radius, Color color) { + return BoxDecoration( + color: background, + border: Border.all( + width: 1, // + color: color // <--- border width here + ), + borderRadius: BorderRadius.circular(radius), + ); +} + +Decoration containerColorRadiusBorderWidth(Color background, double radius, Color color, double w) { + return BoxDecoration( + color: background, + border: Border.all( + width: w, // + color: color // <--- border width here + ), + borderRadius: BorderRadius.circular(radius), + ); +} + +Decoration containerColorRadiusRight(Color background, double radius) { + return BoxDecoration( + color: background, + borderRadius: BorderRadius.only(topRight: Radius.circular(radius), bottomRight: Radius.circular(radius)), + ); +} + +Decoration containerColorRadiusRightBorder(Color background, double radius, double w) { + return BoxDecoration( + color: background, + border: Border.all( + width: w, // + color: Colors.white // <--- border width here + ), + borderRadius: BorderRadius.only(topRight: Radius.circular(radius), bottomRight: Radius.circular(radius)), + ); +} + +Decoration containerColorRadiusRightBorderc(Color background, double radius, double w, Color borderColor) { + return BoxDecoration( + color: background, + border: Border.all( + width: w, // + color: borderColor // <--- border width here + ), + borderRadius: BorderRadius.circular(radius), + ); +} + +Decoration containerColorRadiusTop(Color color, double radius) { + return BoxDecoration( + color: color, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(radius), + topRight: Radius.circular(radius), + ), + ); +} + +Decoration containerColorRadiusBottom(Color color, double radius) { + return BoxDecoration( + color: color, + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(radius), + bottomRight: Radius.circular(radius), + ), + ); +} + +Decoration containerColorRadiusLeftBorder(Color background, double radius, double w) { + return BoxDecoration( + color: background, + border: Border.all( + width: w, // + color: Colors.white // <--- border width here + ), + borderRadius: BorderRadius.only(topLeft: Radius.circular(radius), bottomLeft: Radius.circular(radius)), + ); +} + +ShapeBorder cardRadius(double radius) { + return RoundedRectangleBorder( + side: BorderSide(color: Colors.transparent, width: 1), + borderRadius: BorderRadius.circular(radius), + ); +} + +ShapeBorder cardRadiusTop(double radius) { + return RoundedRectangleBorder( + side: BorderSide(color: Colors.transparent, width: 0), + borderRadius: BorderRadius.only(topLeft: Radius.circular(radius), topRight: Radius.circular(radius)), + ); +} + +ShapeBorder cardRadiusTop2(double radius) { + return RoundedRectangleBorder( + borderRadius: BorderRadius.only(topLeft: Radius.circular(radius), topRight: Radius.circular(radius)), + ); +} + +ShapeBorder cardRadiusBottom(double radius) { + return RoundedRectangleBorder( + borderRadius: BorderRadius.only(bottomLeft: Radius.circular(radius), bottomRight: Radius.circular(radius)), + ); +} + +ShapeBorder cardRadiusWithoutBorder(double radius) { + return RoundedRectangleBorder( + side: BorderSide(color: Colors.transparent, width: 1), + borderRadius: BorderRadius.circular(radius), + ); +} + +ShapeBorder cardRadiusWithBorder(double radius) { + return RoundedRectangleBorder( + side: BorderSide(color: Colors.grey, width: 1), + borderRadius: BorderRadius.circular(radius), + ); +} + +ShapeBorder cardRadiusBorder(double radius, double w) { + return RoundedRectangleBorder( + side: BorderSide(color: Colors.transparent, width: w), + borderRadius: BorderRadius.circular(radius), + ); +} + +// String properRound(double val, int places) { +// double mod = pow(10.0, places); +// double result = ((val * mod).round().toDouble() / mod); +// return result.toString(); +// } +// +// double properRoundDouble(double val, int places) { +// double mod = pow(10.0, places); +// double result = ((val * mod).round().toDouble() / mod); +// return result; +// } +//var cardShape = RoundedRectangleBorder( +// side: BorderSide(color: Colors.white70, width: 1), +// borderRadius: BorderRadius.circular(10), +//); + +//await Navigator.of(context).push(new MaterialPageRoute( +//builder: (BuildContext context) { +//return AdminTeamAvaluatePage(widget.competitionID, data); +//}, +//)); +//setState(() {}); + +Color getColor(String selectedColor) { + try { + if ("black" == selectedColor) { + return Colors.black; + } else if ("red" == selectedColor) { + return Colors.red; + } else if ("blueAccent" == selectedColor) { + return Colors.blueAccent; + } else if ("blue" == selectedColor) { + return Colors.blue; + } else if ("blueGrey" == selectedColor) { + return Colors.blueGrey; + } else if ("yellow" == selectedColor) { + return Colors.yellow; + } else if ("black54" == selectedColor) { + return Colors.black54; + } else if ("green" == selectedColor) { + return Colors.green; + } else if ("orange" == selectedColor) { + return Colors.orange; + } else if ("deepOrange" == selectedColor) { + return Colors.deepOrange; + } else { + return Colors.black; + } + } catch (e) { + return Colors.black; + } +} + +TextAlign getTextAlign(String textAlign) { + try { + if (textAlign == "left") { + return TextAlign.left; + } else if (textAlign == "right") { + return TextAlign.right; + } else if (textAlign == "center") { + return TextAlign.center; + } else if (textAlign == "justify") { + return TextAlign.justify; + } else { + return TextAlign.left; + } + } catch (e) { + print("fffff " + e.toString()); + return TextAlign.left; + } +} + +FontWeight getFontWeight(String fontWeight) { + if (fontWeight == null) { + return FontWeight.normal; + } else if (fontWeight == "bold") { + return FontWeight.bold; + } else { + return FontWeight.normal; + } +} + +FontStyle getFontStyle(String fontStyle) { + try { + if (fontStyle == null) { + return FontStyle.normal; + } else if (fontStyle == "italian") { + return FontStyle.italic; + } else { + return FontStyle.normal; + } + } catch (e) { + return FontStyle.normal; + } +} diff --git a/lib/widgets/drawer/app_drawer_widget.dart b/lib/widgets/drawer/app_drawer_widget.dart index 5192e0f0..cc500955 100644 --- a/lib/widgets/drawer/app_drawer_widget.dart +++ b/lib/widgets/drawer/app_drawer_widget.dart @@ -65,7 +65,7 @@ class _AppDrawerState extends State { width: MediaQuery.of(context).size.width * 0.75, color: Theme.of(context).scaffoldBackgroundColor, child: Container( - // color: Colors.white, + color: Colors.white, child: Theme( data: Theme.of(context).copyWith( canvasColor: Theme.of(context).scaffoldBackgroundColor), diff --git a/pubspec.yaml b/pubspec.yaml index 34ac3656..f67b9ce5 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -189,6 +189,7 @@ dependencies: # Marker Animation flutter_animarker: ^1.0.0 + auto_size_text: ^2.0.1 dev_dependencies: flutter_test: @@ -220,6 +221,7 @@ flutter: - assets/images/gif/ - assets/images/pharmacy_module/payment/ - assets/images/pharmacy_module/lakum/ + - assets/images/new/ fonts: