Updates & fixes

merge-update-with-lab-changes
haroon amjad 4 years ago
parent 57ea450662
commit 62974b7b72

@ -25,9 +25,9 @@ class PrescriptionDeliveryService extends BaseService {
Map<String, dynamic> body = Map(); Map<String, dynamic> body = Map();
body['latitude'] = latitude; body['latitude'] = latitude;
body['longitude'] = longitude; body['longitude'] = longitude;
body['AppointmentNo'] = appointmentNo; body['AppointmentNo'] = appointmentNo.toString();
body['CreatedBy'] = createdBy; // body['CreatedBy'] = createdBy;
body['DischargeID'] = dischargeID; body['DischargeID'] = dischargeID.toString();
await baseAppClient.post(ADD_PRESCRIPTION_ORDER_RC, onSuccess: (dynamic response, int statusCode) { await baseAppClient.post(ADD_PRESCRIPTION_ORDER_RC, onSuccess: (dynamic response, int statusCode) {
var asd = ""; var asd = "";
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {

@ -1,5 +1,6 @@
import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart'; import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/ComprehensiveMedicalCheckup/GetCMCAllOrdersResponseModel.dart';
import 'package:diplomaticquarterapp/core/model/prescriptions/Prescriptions.dart'; import 'package:diplomaticquarterapp/core/model/prescriptions/Prescriptions.dart';
import 'package:diplomaticquarterapp/core/model/prescriptions/perscription_pharmacy.dart'; import 'package:diplomaticquarterapp/core/model/prescriptions/perscription_pharmacy.dart';
import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report.dart'; import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report.dart';
@ -16,8 +17,9 @@ import 'package:flutter/cupertino.dart';
class PrescriptionsService extends BaseService { class PrescriptionsService extends BaseService {
List<Prescriptions> prescriptionsList = List(); List<Prescriptions> prescriptionsList = List();
List<PrescriptionReportINP> prescriptionReportListINP = List(); List<PrescriptionReportINP> prescriptionReportListINP = List();
List<PrescriptionsOrder> prescriptionsOrderList = List(); List<GetCMCAllOrdersResponseModel> prescriptionsOrderList = List();
var isMedDeliveryAllowed; var isMedDeliveryAllowed;
Future getPrescriptions() async { Future getPrescriptions() async {
hasError = false; hasError = false;
Map<String, dynamic> body = Map(); Map<String, dynamic> body = Map();
@ -36,10 +38,24 @@ class PrescriptionsService extends BaseService {
Future getPrescriptionsOrders() async { Future getPrescriptionsOrders() async {
prescriptionsOrderList.clear(); prescriptionsOrderList.clear();
Map<String, dynamic> body = Map(); Map<String, dynamic> body = Map();
body['isDentalAllowedBackend'] = false; // body['isDentalAllowedBackend'] = false;
await baseAppClient.post(GET_PRESCRIPTIONS_ALL_ORDERS, onSuccess: (dynamic response, int statusCode) { await baseAppClient.post(GET_PRESCRIPTIONS_ALL_ORDERS, onSuccess: (dynamic response, int statusCode) {
response['PatientER_GetPatientAllPresOrdersList'].forEach((prescriptionsOrder) { response['PatientER_GetPatientAllPresOrdersList'].forEach((prescriptionsOrder) {
prescriptionsOrderList.add(PrescriptionsOrder.fromJson(prescriptionsOrder)); // prescriptionsOrderList.add(PrescriptionsOrder.fromJson(prescriptionsOrder));
});
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: body);
}
Future getPrescriptionsOrdersRC() async {
prescriptionsOrderList.clear();
Map<String, dynamic> body = Map();
// body['isDentalAllowedBackend'] = false;
await baseAppClient.post(GET_ALL_PRESCRIPTION_ORDERS_RC, onSuccess: (dynamic response, int statusCode) {
response['response'].forEach((prescriptionsOrder) {
prescriptionsOrderList.add(GetCMCAllOrdersResponseModel.fromJson(prescriptionsOrder));
}); });
}, onFailure: (String error, int statusCode) { }, onFailure: (String error, int statusCode) {
hasError = true; hasError = true;

@ -1,3 +1,4 @@
import 'package:diplomaticquarterapp/core/model/AlHabibMedicalService/ComprehensiveMedicalCheckup/GetCMCAllOrdersResponseModel.dart';
import 'package:diplomaticquarterapp/core/model/prescriptions/perscription_pharmacy.dart'; import 'package:diplomaticquarterapp/core/model/prescriptions/perscription_pharmacy.dart';
import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report.dart'; import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report.dart';
import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report_enh.dart'; import 'package:diplomaticquarterapp/core/model/prescriptions/prescription_report_enh.dart';
@ -26,7 +27,7 @@ class PrescriptionsViewModel extends BaseViewModel {
List<Prescriptions> get prescriptionsList => _prescriptionsService.prescriptionsList; List<Prescriptions> get prescriptionsList => _prescriptionsService.prescriptionsList;
List<PrescriptionsOrder> get prescriptionsHistory => _prescriptionsService.prescriptionsOrderList; List<GetCMCAllOrdersResponseModel> get prescriptionsHistory => _prescriptionsService.prescriptionsOrderList;
List<PharmacyPrescriptions> get pharmacyPrescriptionsList => _prescriptionsService.pharmacyPrescriptionsList; List<PharmacyPrescriptions> get pharmacyPrescriptionsList => _prescriptionsService.pharmacyPrescriptionsList;
@ -79,7 +80,8 @@ class PrescriptionsViewModel extends BaseViewModel {
getPrescriptionsOrders({bool showLoading = false}) async { getPrescriptionsOrders({bool showLoading = false}) async {
setState(ViewState.Busy); setState(ViewState.Busy);
Future.delayed(new Duration(milliseconds: 300)).then((value) async { Future.delayed(new Duration(milliseconds: 300)).then((value) async {
await _prescriptionsService.getPrescriptionsOrders(); // await _prescriptionsService.getPrescriptionsOrders();
await _prescriptionsService.getPrescriptionsOrdersRC();
if (_prescriptionsService.hasError) { if (_prescriptionsService.hasError) {
error = _prescriptionsService.error; error = _prescriptionsService.error;
setState(ViewState.ErrorLocal); setState(ViewState.ErrorLocal);

@ -27,6 +27,8 @@ class _HospitalsPageState extends State<HealthWeatherIndicator> {
LocationUtils locationUtils; LocationUtils locationUtils;
var weather = '--'; var weather = '--';
ProjectViewModel projectViewModel;
@override @override
void initState() { void initState() {
locationUtils = new LocationUtils(isShowConfirmDialog: true, context: context); locationUtils = new LocationUtils(isShowConfirmDialog: true, context: context);
@ -37,7 +39,7 @@ class _HospitalsPageState extends State<HealthWeatherIndicator> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
ProjectViewModel projectViewModel = Provider.of(context); projectViewModel = Provider.of(context);
return BaseView<WeatherViewModel>( return BaseView<WeatherViewModel>(
onModelReady: (model) => model.getWeatherData(), onModelReady: (model) => model.getWeatherData(),
allowAny: true, allowAny: true,
@ -131,7 +133,7 @@ class _HospitalsPageState extends State<HealthWeatherIndicator> {
padding: EdgeInsets.all(15), padding: EdgeInsets.all(15),
child: Column( child: Column(
children: mode.weatherIndicatorData.map((data) { children: mode.weatherIndicatorData.map((data) {
return WeatherSlider(data); return WeatherSlider(data, projectViewModel);
}).toList())) }).toList()))
])) ]))
: Center(child: AppCircularProgressIndicator())), : Center(child: AppCircularProgressIndicator())),

@ -1,5 +1,6 @@
import 'package:diplomaticquarterapp/pages/login/login-type.dart'; import 'package:diplomaticquarterapp/pages/login/login-type.dart';
import 'package:diplomaticquarterapp/pages/login/register.dart'; import 'package:diplomaticquarterapp/pages/login/register.dart';
import 'package:diplomaticquarterapp/pages/login/register_new.dart';
import 'package:diplomaticquarterapp/theme/colors.dart'; import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
@ -78,7 +79,7 @@ class _WelcomeLogin extends State<WelcomeLogin> {
child: DefaultButton( child: DefaultButton(
TranslationBase.of(context).no, TranslationBase.of(context).no,
() => { () => {
Navigator.of(context).push(FadePage(page: Register())), Navigator.of(context).push(FadePage(page: RegisterNew())),
}, },
color: CustomColors.accentColor, color: CustomColors.accentColor,
textColor: Colors.white, textColor: Colors.white,

@ -9,9 +9,10 @@ import 'package:diplomaticquarterapp/theme/colors.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/widgets/buttons/secondary_button.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/ConfirmWithMessageDialog.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/ConfirmWithMessageDialog.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/show_zoom_image_dialog.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -101,9 +102,16 @@ class PrescriptionOrderOverview extends StatelessWidget {
prescriptionReportEnhList.length, prescriptionReportEnhList.length,
(index) => Container( (index) => Container(
margin: EdgeInsets.all(0.0), margin: EdgeInsets.all(0.0),
decoration: cardRadius(0), // decoration: cardRadius(0),
child: Row( child: Row(
children: <Widget>[ children: <Widget>[
InkWell(
onTap: () {
showZoomImageDialog(context, prescriptionReportEnhList[index].imageSRCUrl);
},
child: Stack(
alignment: Alignment.center,
children: [
Container( Container(
margin: EdgeInsets.only(bottom: 10.0), margin: EdgeInsets.only(bottom: 10.0),
decoration: BoxDecoration( decoration: BoxDecoration(
@ -120,6 +128,19 @@ class PrescriptionOrderOverview extends StatelessWidget {
), ),
), ),
), ),
Container(
margin: EdgeInsets.only(bottom: 10.0),
child: Icon(
Icons.search,
size: 18,
color: Colors.white,
),
padding: EdgeInsets.all(3),
decoration: containerRadius(Colors.black.withOpacity(0.3), 200),
)
],
),
),
SizedBox(width: 14), SizedBox(width: 14),
Expanded( Expanded(
child: Padding( child: Padding(
@ -153,15 +174,14 @@ class PrescriptionOrderOverview extends StatelessWidget {
), ),
), ),
Container( Container(
decoration: cardRadius(0), // decoration: cardRadius(0),
margin: EdgeInsets.zero, margin: EdgeInsets.zero,
child: Container( child: Container(
width: double.infinity, width: double.infinity,
margin: EdgeInsets.all(12), margin: EdgeInsets.all(12),
child: SecondaryButton( child: DefaultButton(
label: TranslationBase.of(context).submit.toUpperCase(), TranslationBase.of(context).submit.toUpperCase(),
color: CustomColors.accentColor, () async {
onTap: () async {
showDialog( showDialog(
context: context, context: context,
child: ConfirmWithMessageDialog( child: ConfirmWithMessageDialog(

@ -23,6 +23,7 @@ import 'package:provider/provider.dart';
class PrescriptionDetailsPage extends StatelessWidget { class PrescriptionDetailsPage extends StatelessWidget {
final PrescriptionReport prescriptionReport; final PrescriptionReport prescriptionReport;
final Prescriptions prescriptions; final Prescriptions prescriptions;
PrescriptionDetailsPage({Key key, this.prescriptionReport, this.prescriptions}); PrescriptionDetailsPage({Key key, this.prescriptionReport, this.prescriptions});
@override @override
@ -111,13 +112,17 @@ class PrescriptionDetailsPage extends StatelessWidget {
decoration: cardRadius(2000), decoration: cardRadius(2000),
), ),
Container( Container(
child: Icon(Icons.search,size: 18,color: Colors.white,), child: Icon(
Icons.search,
size: 18,
color: Colors.white,
),
padding: EdgeInsets.all(6), padding: EdgeInsets.all(6),
decoration: containerRadius(Colors.black.withOpacity(0.3), 200), decoration: containerRadius(Colors.black.withOpacity(0.3), 200),
) )
], ],
), ),
onTap: (){ onTap: () {
showZoomImageDialog(context, prescriptionReport.imageSRCUrl); showZoomImageDialog(context, prescriptionReport.imageSRCUrl);
}, },
), ),

@ -1,12 +1,11 @@
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
import 'package:diplomaticquarterapp/core/viewModels/medical/prescriptions_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/medical/prescriptions_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/pages/medical/prescriptions/prescriptions_history_details_page.dart'; import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/pages/base/base_view.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -25,15 +24,17 @@ class PrescriptionsHistoryPage extends StatelessWidget {
onModelReady: (model) => model.getPrescriptionsOrders(showLoading: true), onModelReady: (model) => model.getPrescriptionsOrders(showLoading: true),
builder: (_, model, widget) => AppScaffold( builder: (_, model, widget) => AppScaffold(
baseViewModel: prescriptionsViewModel, baseViewModel: prescriptionsViewModel,
body: ListView.separated( body: model.state != ViewState.Busy
? prescriptionsViewModel.prescriptionsHistory.length > 0
? ListView.separated(
physics: BouncingScrollPhysics(), physics: BouncingScrollPhysics(),
padding: EdgeInsets.all(21), padding: EdgeInsets.all(21),
separatorBuilder: (context, index) { separatorBuilder: (context, index) {
return SizedBox(height: 12); return SizedBox(height: 12);
}, },
itemBuilder: (context, index) { itemBuilder: (context, index) {
int status = prescriptionsViewModel.prescriptionsHistory[index].status; int status = prescriptionsViewModel.prescriptionsHistory[index].statusId;
String _statusDisp = projectViewModel.isArabic ? prescriptionsViewModel.prescriptionsHistory[index].descriptionN : prescriptionsViewModel.prescriptionsHistory[index].description; String _statusDisp = prescriptionsViewModel.prescriptionsHistory[index].statusText;
Color _color; Color _color;
if (status == 1) { if (status == 1) {
//pending //pending
@ -44,24 +45,24 @@ class PrescriptionsHistoryPage extends StatelessWidget {
} else if (status == 3) { } else if (status == 3) {
//completed //completed
_color = Color(0xff359846); _color = Color(0xff359846);
} else if (status == 4) { } else if (status == 4 || status == 6 || status == 7) {
//cancel // Rejected //cancel // Rejected
_color = Color(0xffD02127); _color = Color(0xffD02127);
} }
return InkWell( return InkWell(
onTap: () async { onTap: () async {
final result = await Navigator.push( // final result = await Navigator.push(
context, // context,
FadePage( // FadePage(
page: PrescriptionsHistoryDetailsPage( // page: PrescriptionsHistoryDetailsPage(
prescriptionsOrder: prescriptionsViewModel.prescriptionsHistory[index], // prescriptionsOrder: prescriptionsViewModel.prescriptionsHistory[index],
), // ),
), // ),
); // );
if (result != null) { // if (result != null) {
showOrderLog(); // showOrderLog();
} // }
}, },
child: Container( child: Container(
height: 65, height: 65,
@ -121,11 +122,11 @@ class PrescriptionsHistoryPage extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
children: [ children: [
Text( Text(
DateUtil.getDayMonthYearDateFormatted(prescriptionsViewModel.prescriptionsHistory[index].createdOn), DateUtil.getDayMonthYearDateFormatted(DateTime.tryParse(prescriptionsViewModel.prescriptionsHistory[index].created)),
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.4, height: 16 / 10), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.4, height: 16 / 10),
), ),
Text( Text(
DateUtil.formatDateToTimeLang(prescriptionsViewModel.prescriptionsHistory[index].createdOn, false), DateUtil.formatDateToTimeLang(DateTime.tryParse(prescriptionsViewModel.prescriptionsHistory[index].created), false),
style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 16 / 10), style: TextStyle(fontSize: 12, fontWeight: FontWeight.w600, color: Color(0xff575757), letterSpacing: -0.4, height: 16 / 10),
), ),
], ],
@ -144,7 +145,9 @@ class PrescriptionsHistoryPage extends StatelessWidget {
)); ));
}, },
itemCount: prescriptionsViewModel.prescriptionsHistory.length, itemCount: prescriptionsViewModel.prescriptionsHistory.length,
), )
: getNoDataWidget(context)
: Container(),
)); ));
} }
} }

@ -90,7 +90,7 @@ class _HomePrescriptionsPageState extends State<HomePrescriptionsPage> with Sing
prescriptionsViewModel: model, prescriptionsViewModel: model,
showOrderLog: () async { showOrderLog: () async {
_tabController.animateTo(2); _tabController.animateTo(2);
await model.getPrescriptionsOrders(showLoading: true); // await model.getPrescriptionsOrders(showLoading: true);
setState(() {}); setState(() {});
}, },
), ),
@ -99,7 +99,7 @@ class _HomePrescriptionsPageState extends State<HomePrescriptionsPage> with Sing
prescriptionsViewModel: model, prescriptionsViewModel: model,
showOrderLog: () async { showOrderLog: () async {
_tabController.animateTo(2); _tabController.animateTo(2);
await model.getPrescriptionsOrders(showLoading: true); // await model.getPrescriptionsOrders(showLoading: true);
setState(() {}); setState(() {});
}, },
), ),

@ -14,11 +14,12 @@ import '../show_zoom_image_dialog.dart';
/// [height] the avatar height /// [height] the avatar height
/// [onTap] on tap function /// [onTap] on tap function
class LargeAvatar extends StatelessWidget { class LargeAvatar extends StatelessWidget {
LargeAvatar({Key key, @required this.name, this.url, this.disableProfileView: false, this.radius = 70.0, this.width = 70, this.height = 60, this.onTap}) : super(key: key); LargeAvatar({Key key, @required this.name, this.url, this.disableProfileView: false, this.radius = 70.0, this.width = 70, this.height = 60, this.onTap, this.isAppointmentAvatar: false}) : super(key: key);
final String name; final String name;
final String url; final String url;
final bool disableProfileView; final bool disableProfileView;
final bool isAppointmentAvatar;
final double radius; final double radius;
final double width; final double width;
final double height; final double height;
@ -38,7 +39,7 @@ class LargeAvatar extends StatelessWidget {
width: width, width: width,
height: height, height: height,
), ),
if (!disableProfileView) if (!disableProfileView && !isAppointmentAvatar)
Container( Container(
child: Icon(Icons.search,size: 18,color: Colors.white,), child: Icon(Icons.search,size: 18,color: Colors.white,),
padding: EdgeInsets.all(6), padding: EdgeInsets.all(6),
@ -62,7 +63,7 @@ class LargeAvatar extends StatelessWidget {
return InkWell( return InkWell(
onTap: disableProfileView onTap: disableProfileView
? null ? null
: () { : isAppointmentAvatar ? onTap : () {
print("ssssss " + url.trim()); print("ssssss " + url.trim());
showZoomImageDialog(context, url.trim() ?? ""); showZoomImageDialog(context, url.trim() ?? "");
}, },

@ -35,6 +35,7 @@ class _TimeLineViewState extends State<TimeLineView> {
List<DateObj> dateObjs = []; List<DateObj> dateObjs = [];
DateObj selectedDateObj = null; DateObj selectedDateObj = null;
final authService = new auth.AuthProvider(); final authService = new auth.AuthProvider();
@override @override
void initState() { void initState() {
super.initState(); super.initState();
@ -351,10 +352,11 @@ class TimelineNewWidget extends StatelessWidget {
))); )));
}, },
name: appoitmentAllHistoryResul.doctorNameObj, name: appoitmentAllHistoryResul.doctorNameObj,
disableProfileView: true, disableProfileView: false,
url: appoitmentAllHistoryResul.doctorImageURL, url: appoitmentAllHistoryResul.doctorImageURL,
width: 30, width: 30,
height: 30, height: 30,
isAppointmentAvatar: true,
), ),
mHeight(6), mHeight(6),
Text( Text(

@ -1,47 +1,29 @@
import 'package:diplomaticquarterapp/core/model/weahter/weather_model.dart'; import 'package:diplomaticquarterapp/core/model/weahter/weather_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class WeatherSlider extends StatelessWidget { class WeatherSlider extends StatelessWidget {
// final width;
// final LinearGradient color;
final GetCityInfoList data; final GetCityInfoList data;
WeatherSlider(this.data);
LinearGradient red = LinearGradient( final ProjectViewModel projectViewModel;
colors: [
Colors.redAccent[100], WeatherSlider(this.data, this.projectViewModel);
Colors.redAccent
]); LinearGradient red = LinearGradient(colors: [Colors.redAccent[100], Colors.redAccent]);
LinearGradient green = LinearGradient( LinearGradient green = LinearGradient(colors: [Colors.greenAccent[100], Colors.greenAccent]);
colors: [ LinearGradient grey = LinearGradient(colors: [Colors.grey[100], Colors.grey]);
Colors.greenAccent[100], LinearGradient orange = LinearGradient(colors: [Colors.orangeAccent[100], Colors.orange]);
Colors.greenAccent LinearGradient yellow = LinearGradient(colors: [Colors.yellow[100], Colors.yellow[600]]);
]);
LinearGradient grey = LinearGradient(
colors: [
Colors.grey[100],
Colors.grey
]);
LinearGradient orange = LinearGradient(
colors: [
Colors.orangeAccent[100],
Colors.orange
]);
LinearGradient yellow = LinearGradient(
colors: [
Colors.yellow[100],
Colors.yellow[600]
]);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
// TODO: implement build // TODO: implement build
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Padding( Padding(padding: EdgeInsets.only(top: 10), child: AppText(data.name)),
padding: EdgeInsets.only(top:10),
child: AppText(data.name)),
AppText( AppText(
data.category, data.category,
fontSize: 24, fontSize: 24,
@ -51,11 +33,8 @@ class WeatherSlider extends StatelessWidget {
child: Stack( child: Stack(
children: [ children: [
Container( Container(
margin: EdgeInsets.only(bottom:10), margin: EdgeInsets.only(bottom: 10),
decoration: BoxDecoration( decoration: BoxDecoration(gradient: LinearGradient(colors: [Colors.grey[100], Colors.grey[400]]), borderRadius: BorderRadius.circular(10)),
gradient: LinearGradient(
colors: [Colors.grey[100], Colors.grey[400]]),
borderRadius: BorderRadius.circular(10)),
height: 15, height: 15,
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
child: SizedBox(), child: SizedBox(),
@ -64,110 +43,200 @@ class WeatherSlider extends StatelessWidget {
top: 0, top: 0,
child: Container( child: Container(
decoration: BoxDecoration( decoration: BoxDecoration(
gradient: data.colorName =='red' ? red : data.colorName =='orange' ? orange : data.colorName =='green' ? green : data.colorName == 'yellow' ? yellow : grey, gradient: data.colorName == 'red'
? red
: data.colorName == 'orange'
? orange
: data.colorName == 'green'
? green
: data.colorName == 'yellow'
? yellow
: grey,
borderRadius: BorderRadius.circular(10)), borderRadius: BorderRadius.circular(10)),
height: 15, height: 15,
width: (MediaQuery.of(context).size.width * (double.parse(data.value) / 10)), width: (MediaQuery.of(context).size.width * (double.parse(data.value) / 10)),
padding: EdgeInsets.all(15), padding: EdgeInsets.all(15),
child: SizedBox(), child: SizedBox(),
)), )),
Positioned(child: Container( projectViewModel.isArabic
? Positioned(
child: Container(
height: 0, height: 0,
width:0, width: 0,
decoration: ShapeDecoration( decoration: ShapeDecoration(
color:data.colorName =='red' ? Colors.redAccent : data.colorName =='orange' ? Colors.orangeAccent : data.colorName =='green' ? Colors.greenAccent : data.colorName == 'yellow' ? Colors.yellowAccent : Colors.grey, color: data.colorName == 'red'
? Colors.redAccent
: data.colorName == 'orange'
? Colors.orangeAccent
: data.colorName == 'green'
? Colors.greenAccent
: data.colorName == 'yellow'
? Colors.yellowAccent
: Colors.grey,
shape: MessageBorder(), shape: MessageBorder(),
)),
)),top:25, left: (MediaQuery.of(context).size.width * (double.parse(data.value) / 10)),) top: 25,
right: (MediaQuery.of(context).size.width * (double.parse(data.value) / 10)),
)
: Positioned(
child: Container(
height: 0,
width: 0,
decoration: ShapeDecoration(
color: data.colorName == 'red'
? Colors.redAccent
: data.colorName == 'orange'
? Colors.orangeAccent
: data.colorName == 'green'
? Colors.greenAccent
: data.colorName == 'yellow'
? Colors.yellowAccent
: Colors.grey,
shape: MessageBorder(),
)),
top: 25,
left: (MediaQuery.of(context).size.width * (double.parse(data.value) / 10)),
)
], ],
), ),
), ),
Padding( Padding(
padding: EdgeInsets.only(top:10), padding: EdgeInsets.only(top: 10),
child: data.isValuesReversed == false ? Row( child: data.isValuesReversed == false
? Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
AppText( AppText(data.categoriesNames.category1,
data.categoriesNames.category1,
fontSize: 12, fontSize: 12,
color: data.categoriesNames.category1== data.category && data.colorName=='red' ? Colors.redAccent : data.categoriesNames.category1== data.category && data.colorName=='orange' ? Colors.orangeAccent : data.categoriesNames.category1== data.category && data.colorName=='green' ? Colors.greenAccent : data.categoriesNames.category1== data.category && data.colorName=='yellow' ? Colors.yellow[900] : Colors.black color: data.categoriesNames.category1 == data.category && data.colorName == 'red'
), ? Colors.redAccent
AppText( : data.categoriesNames.category1 == data.category && data.colorName == 'orange'
data.categoriesNames.category2, ? Colors.orangeAccent
: data.categoriesNames.category1 == data.category && data.colorName == 'green'
? Colors.greenAccent
: data.categoriesNames.category1 == data.category && data.colorName == 'yellow'
? Colors.yellow[900]
: Colors.black),
AppText(data.categoriesNames.category2,
fontSize: 12, fontSize: 12,
color: data.categoriesNames.category2== data.category && data.colorName=='red' ? Colors.redAccent : data.categoriesNames.category2== data.category && data.colorName=='orange' ? Colors.orangeAccent : data.categoriesNames.category2== data.category && data.colorName=='green' ? Colors.greenAccent : data.categoriesNames.category2== data.category && data.colorName=='yellow' ? Colors.yellow[900] : Colors.black color: data.categoriesNames.category2 == data.category && data.colorName == 'red'
? Colors.redAccent
), : data.categoriesNames.category2 == data.category && data.colorName == 'orange'
AppText( ? Colors.orangeAccent
data.categoriesNames.category3, : data.categoriesNames.category2 == data.category && data.colorName == 'green'
? Colors.greenAccent
: data.categoriesNames.category2 == data.category && data.colorName == 'yellow'
? Colors.yellow[900]
: Colors.black),
AppText(data.categoriesNames.category3,
fontSize: 12, fontSize: 12,
color: data.categoriesNames.category3== data.category && data.colorName=='red' ? Colors.redAccent : data.categoriesNames.category3== data.category && data.colorName=='orange' ? Colors.orangeAccent : data.categoriesNames.category3== data.category && data.colorName=='green' ? Colors.greenAccent : data.categoriesNames.category3== data.category && data.colorName=='yellow' ? Colors.yellow[900] : Colors.black color: data.categoriesNames.category3 == data.category && data.colorName == 'red'
? Colors.redAccent
), : data.categoriesNames.category3 == data.category && data.colorName == 'orange'
AppText( ? Colors.orangeAccent
data.categoriesNames.category4, : data.categoriesNames.category3 == data.category && data.colorName == 'green'
? Colors.greenAccent
: data.categoriesNames.category3 == data.category && data.colorName == 'yellow'
? Colors.yellow[900]
: Colors.black),
AppText(data.categoriesNames.category4,
fontSize: 12, fontSize: 12,
color: data.categoriesNames.category4== data.category && data.colorName=='red' ? Colors.redAccent : data.categoriesNames.category4== data.category && data.colorName=='orange' ? Colors.orangeAccent : data.categoriesNames.category4== data.category && data.colorName=='green' ? Colors.greenAccent : data.categoriesNames.category4== data.category && data.colorName=='yellow' ? Colors.yellow[900] : Colors.black color: data.categoriesNames.category4 == data.category && data.colorName == 'red'
? Colors.redAccent
), : data.categoriesNames.category4 == data.category && data.colorName == 'orange'
AppText( ? Colors.orangeAccent
data.categoriesNames.category5, : data.categoriesNames.category4 == data.category && data.colorName == 'green'
? Colors.greenAccent
: data.categoriesNames.category4 == data.category && data.colorName == 'yellow'
? Colors.yellow[900]
: Colors.black),
AppText(data.categoriesNames.category5,
fontSize: 12, fontSize: 12,
color: data.categoriesNames.category5== data.category && data.colorName=='red' ? Colors.redAccent : data.categoriesNames.category5== data.category && data.colorName=='orange' ? Colors.orangeAccent : data.categoriesNames.category5== data.category && data.colorName=='green' ? Colors.greenAccent : data.categoriesNames.category5== data.category && data.colorName=='yellow' ? Colors.yellow[900] : Colors.black color: data.categoriesNames.category5 == data.category && data.colorName == 'red'
? Colors.redAccent
), : data.categoriesNames.category5 == data.category && data.colorName == 'orange'
? Colors.orangeAccent
: data.categoriesNames.category5 == data.category && data.colorName == 'green'
? Colors.greenAccent
: data.categoriesNames.category5 == data.category && data.colorName == 'yellow'
? Colors.yellow[900]
: Colors.black),
], ],
) : Row( )
: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
AppText( AppText(data.categoriesNames.category5,
data.categoriesNames.category5,
fontSize: 12, fontSize: 12,
color: data.categoriesNames.category5== data.category && data.colorName=='red' ? Colors.redAccent : data.categoriesNames.category5== data.category && data.colorName=='orange' ? Colors.orangeAccent : data.categoriesNames.category5== data.category && data.colorName=='green' ? Colors.greenAccent : data.categoriesNames.category5== data.category && data.colorName=='yellow' ? Colors.yellow[900] : Colors.black color: data.categoriesNames.category5 == data.category && data.colorName == 'red'
), ? Colors.redAccent
AppText( : data.categoriesNames.category5 == data.category && data.colorName == 'orange'
data.categoriesNames.category4, ? Colors.orangeAccent
: data.categoriesNames.category5 == data.category && data.colorName == 'green'
? Colors.greenAccent
: data.categoriesNames.category5 == data.category && data.colorName == 'yellow'
? Colors.yellow[900]
: Colors.black),
AppText(data.categoriesNames.category4,
fontSize: 12, fontSize: 12,
color: data.categoriesNames.category4== data.category && data.colorName=='red' ? Colors.redAccent : data.categoriesNames.category4== data.category && data.colorName=='orange' ? Colors.orangeAccent : data.categoriesNames.category4== data.category && data.colorName=='green' ? Colors.greenAccent : data.categoriesNames.category4== data.category && data.colorName=='yellow' ? Colors.yellow[900] : Colors.black color: data.categoriesNames.category4 == data.category && data.colorName == 'red'
? Colors.redAccent
), : data.categoriesNames.category4 == data.category && data.colorName == 'orange'
AppText( ? Colors.orangeAccent
data.categoriesNames.category3, : data.categoriesNames.category4 == data.category && data.colorName == 'green'
? Colors.greenAccent
: data.categoriesNames.category4 == data.category && data.colorName == 'yellow'
? Colors.yellow[900]
: Colors.black),
AppText(data.categoriesNames.category3,
fontSize: 12, fontSize: 12,
color: data.categoriesNames.category3== data.category && data.colorName=='red' ? Colors.redAccent : data.categoriesNames.category3== data.category && data.colorName=='orange' ? Colors.orangeAccent : data.categoriesNames.category3== data.category && data.colorName=='green' ? Colors.greenAccent : data.categoriesNames.category3== data.category && data.colorName=='yellow' ? Colors.yellow[900] : Colors.black color: data.categoriesNames.category3 == data.category && data.colorName == 'red'
? Colors.redAccent
), : data.categoriesNames.category3 == data.category && data.colorName == 'orange'
AppText( ? Colors.orangeAccent
data.categoriesNames.category2, : data.categoriesNames.category3 == data.category && data.colorName == 'green'
? Colors.greenAccent
: data.categoriesNames.category3 == data.category && data.colorName == 'yellow'
? Colors.yellow[900]
: Colors.black),
AppText(data.categoriesNames.category2,
fontSize: 12, fontSize: 12,
color: data.categoriesNames.category2== data.category && data.colorName=='red' ? Colors.redAccent : data.categoriesNames.category2== data.category && data.colorName=='orange' ? Colors.orangeAccent : data.categoriesNames.category2== data.category && data.colorName=='green' ? Colors.greenAccent : data.categoriesNames.category2== data.category && data.colorName=='yellow' ? Colors.yellow[900] : Colors.black color: data.categoriesNames.category2 == data.category && data.colorName == 'red'
? Colors.redAccent
), : data.categoriesNames.category2 == data.category && data.colorName == 'orange'
AppText( ? Colors.orangeAccent
data.categoriesNames.category1, : data.categoriesNames.category2 == data.category && data.colorName == 'green'
? Colors.greenAccent
: data.categoriesNames.category2 == data.category && data.colorName == 'yellow'
? Colors.yellow[900]
: Colors.black),
AppText(data.categoriesNames.category1,
fontSize: 12, fontSize: 12,
color: data.categoriesNames.category1== data.category && data.colorName=='red' ? Colors.redAccent : data.categoriesNames.category1== data.category && data.colorName=='orange' ? Colors.orangeAccent : data.categoriesNames.category1== data.category && data.colorName=='green' ? Colors.greenAccent : data.categoriesNames.category1== data.category && data.colorName=='yellow' ? Colors.yellow[900] : Colors.black color: data.categoriesNames.category1 == data.category && data.colorName == 'red'
? Colors.redAccent
), : data.categoriesNames.category1 == data.category && data.colorName == 'orange'
? Colors.orangeAccent
: data.categoriesNames.category1 == data.category && data.colorName == 'green'
? Colors.greenAccent
: data.categoriesNames.category1 == data.category && data.colorName == 'yellow'
? Colors.yellow[900]
: Colors.black),
], ],
)), )),
Padding( Padding(padding: EdgeInsets.all(15), child: Divider())
padding: EdgeInsets.all(15),
child:Divider())
], ],
); );
} }
} }
class MessageBorder extends ShapeBorder { class MessageBorder extends ShapeBorder {
final bool usePadding; final bool usePadding;
final bool reverse; final bool reverse;
MessageBorder({this.usePadding = true, this.reverse =false});
MessageBorder({this.usePadding = true, this.reverse = false});
@override @override
EdgeInsetsGeometry get dimensions => EdgeInsets.only(bottom: usePadding? 0 : 0); EdgeInsetsGeometry get dimensions => EdgeInsets.only(bottom: usePadding ? 0 : 0);
@override @override
Path getInnerPath(Rect rect, {TextDirection textDirection}) => null; Path getInnerPath(Rect rect, {TextDirection textDirection}) => null;
@ -175,17 +244,16 @@ class MessageBorder extends ShapeBorder {
@override @override
Path getOuterPath(Rect rect, {TextDirection textDirection}) { Path getOuterPath(Rect rect, {TextDirection textDirection}) {
rect = Rect.fromPoints(rect.bottomRight, rect.bottomLeft - Offset(0, 0)); rect = Rect.fromPoints(rect.bottomRight, rect.bottomLeft - Offset(0, 0));
if(!reverse) { if (!reverse) {
return Path() return Path()
..addRRect( ..addRRect(RRect.fromRectAndRadius(rect, Radius.circular(rect.height / 2)))
RRect.fromRectAndRadius(rect, Radius.circular(rect.height / 2)))
..moveTo(rect.topCenter.dx - 10, rect.topCenter.dy) ..moveTo(rect.topCenter.dx - 10, rect.topCenter.dy)
..relativeLineTo(10, -10)..relativeLineTo(10, 10) ..relativeLineTo(10, -10)
..relativeLineTo(10, 10)
..close(); ..close();
}else{ } else {
return Path() return Path()
..addRRect( ..addRRect(RRect.fromRectAndRadius(rect, Radius.circular(rect.height / 2)))
RRect.fromRectAndRadius(rect, Radius.circular(rect.height / 2)))
..moveTo(rect.topCenter.dx, rect.topCenter.dy) ..moveTo(rect.topCenter.dx, rect.topCenter.dy)
..relativeLineTo(10, 20) ..relativeLineTo(10, 20)
..relativeLineTo(20, -20) ..relativeLineTo(20, -20)

Loading…
Cancel
Save