Conflicts:
	lib/config/config.dart
	lib/config/localized_values.dart
	lib/uitl/translations_delegate_base.dart
merge-update-with-lab-changes
Mohammad Aljammal 6 years ago
commit 1ac420ef7c

@ -15,6 +15,7 @@ const GET_CLINICS_LIST_URL = "Services/lists.svc/REST/GetClinicCentralized";
//URL to get doctors list
const GET_DOCTORS_LIST_URL = "Services/Doctors.svc/REST/SearchDoctorsByTime";
//URL to get medicine and pharmacies list
const CHANNEL = 3;
const GENERAL_ID = 'Cs2020@2016\$2958';
const IP_ADDRESS = '10.20.10.20';
@ -45,3 +46,8 @@ class AppGlobal {
return request;
}
}
const CHANNEL = 3;
const GENERAL_ID = 'Cs2020@2016\$2958';
const IP_ADDRESS = '10.20.10.20';
const VERSION_ID = 8.5;

@ -109,6 +109,13 @@ const Map<String, Map<String, String>> localizedValues = {
'en': 'Search Medicine Here',
'ar': 'ابحث عن الدواء هنا'
},
'description': {'en': 'Description', 'ar': 'الوصف'},
'price': {'en': 'Price', 'ar': 'السعر'},
'youCanFindItIn': {'en': 'You can find it in', 'ar': 'يمكنكة ان تجده في'},
'pleaseEnterMedicineName': {
'en': 'Please Enter Medicine Name',
'ar': 'الرجائ ادخال اسم الدواء'
},
"verification_message": {
"en": "Please enter verification code",
"ar": "الرجاء إدخال رمز التحقق"

@ -14,22 +14,46 @@ class PharmaciesListModel {
int editedBy;
int projectID;
int clinicID;
double price;
String imageLocation;
String desLocation;
String itemDes;
String phoneNumber;
String longitude;
String latitude;
PharmaciesListModel({
this.itemID,
this.patientTypeID = 1,
this.languageID = 2,
this.stamp = '2020-04-23T21:01:21.492Z',
this.iPAdress = '11.11.11.11',
this.versionID = 1.2,
this.tokenID,
this.sessionID = 'e29zoooEJ4',
this.isLoginForDoctorApp = true,
this.channel = 9,
//this.patientOutSA = true,
});
PharmaciesListModel(
{this.itemID,
this.patientTypeID,
this.languageID,
this.stamp,
this.iPAdress,
this.versionID,
this.tokenID,
this.sessionID,
this.isLoginForDoctorApp,
this.channel,
this.editedBy,
this.doctorID,
this.patientOutSA,
this.clinicID,
this.projectID,
this.price,
this.imageLocation,
this.desLocation,
this.itemDes,
this.phoneNumber,
this.longitude,
this.latitude});
PharmaciesListModel.fromJson(Map<String, dynamic> json) {
longitude = json['Longitude'];
latitude = json['Latitude'];
phoneNumber = json['PhoneNumber'];
itemDes = json['ItemDescription'];
desLocation = json['LocationDescription'];
imageLocation = json['ProjectImageURL'];
price = json['SellingPrice'];
itemID = json['ItemID'];
patientTypeID = json['PatientTypeID'];
languageID = json['LanguageID'];

@ -20,6 +20,7 @@ class PharmaciesModel {
bool isLoginForDoctorApp;
String itemDes;
String productImage;
int itemID;
PharmaciesModel(
{this.pHRItemName,
@ -42,9 +43,12 @@ class PharmaciesModel {
this.stamp,
this.itemDes,
this.productImage,
this.isLoginForDoctorApp});
this.isLoginForDoctorApp,
this.itemID});
PharmaciesModel.fromJson(Map<String, dynamic> json) {
itemID = json['ItemID'];
productImage = json['ProductImageBase64'];
itemDes = json['ItemDescription'];
pHRItemName = json['PHR_itemName'];

@ -2,17 +2,23 @@ import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/pharmacies_list_model.dart';
import 'package:diplomaticquarterapp/core/service/base_service.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/pharmacies_model.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/pharmacies_list_model.dart';
class PharmacyService extends BaseService {
List<PharmaciesModel> _pharmaciesList = List();
List<PharmaciesModel> _medicineItem = List();
List<PharmaciesListModel> _pharmaciesList = List();
List<PharmaciesModel> get medicineItem => _medicineItem;
List<PharmaciesListModel> get pharmaciesList => _pharmaciesList;
List<PharmaciesModel> get pharmaciesList => _pharmaciesList;
bool isFinished = true;
bool hasError = false;
String errorMsg = '';
void clearPharmaciesLis() {
void clearMedicineList() {
_medicineItem.clear();
}
void clearPharmaciesList() {
_pharmaciesList.clear();
}
@ -35,17 +41,33 @@ class PharmacyService extends BaseService {
sessionID: "BlUSkYymTt",
stamp: "2020-04-27T12:17:17.721Z",
tokenID: "6EfeKCLRu0GPdFutIt3m7Q==",
versionID: 5.3);
versionID: 8.3);
Future getMedicine({String drugName}) async {
PharmaciesListModel _pharmaciesListModel = PharmaciesListModel(
patientTypeID: 1,
languageID: 2,
stamp: '2020-04-23T21:01:21.492Z',
iPAdress: '11.11.11.11',
versionID: 8.3,
sessionID: 'e29zoooEJ4',
isLoginForDoctorApp: true,
channel: 9,
editedBy: 1485,
doctorID: 1485,
patientOutSA: 0,
clinicID: 1,
projectID: 15,
);
Future getMedicineList({String drugName}) async {
hasError = false;
_requestGetPharmaciesModel.pHRItemName = drugName ?? 'panadol';
_requestGetPharmaciesModel.pHRItemName = drugName;
try {
await baseAppClient.post(GET_PHARMCY_ITEMS,
onSuccess: (dynamic response, int statusCode) {
_pharmaciesList.clear();
_medicineItem.clear();
response['ListPharmcy_Region'].forEach((item) {
_pharmaciesList.add(PharmaciesModel.fromJson(item));
_medicineItem.add(PharmaciesModel.fromJson(item));
});
}, onFailure: (String error, int statusCode) {
hasError = true;
@ -56,17 +78,22 @@ class PharmacyService extends BaseService {
}
}
Future getMedicineList({String name}) async {
_requestGetPharmaciesModel.pHRItemName = name ?? 'panadol';
await baseAppClient.post(GET_PHARMACY_LIST,
onSuccess: (dynamic response, int statusCode) {
_pharmaciesList.clear();
response['PharmList'].forEach((item) {
_pharmaciesList.add(PharmaciesModel.fromJson(item));
});
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: _requestGetPharmaciesModel.toJson());
Future getPharmaciesList({int itemID}) async {
_pharmaciesListModel.itemID = itemID;
try {
await baseAppClient.post(GET_PHARMACY_LIST,
onSuccess: (dynamic response, int statusCode) {
_pharmaciesList.clear();
response['PharmList'].forEach((item) {
_pharmaciesList.add(PharmaciesListModel.fromJson(item));
hasError = false;
});
}, onFailure: (String error, int statusCode) {
hasError = true;
super.error = error;
}, body: _pharmaciesListModel.toJson());
} catch (error) {
throw error;
}
}
}

@ -1,3 +1,4 @@
import 'package:diplomaticquarterapp/core/model/pharmacies/pharmacies_list_model.dart';
import '../../locator.dart';
import 'base_view_model.dart';
import 'package:diplomaticquarterapp/core/enum/viewstate.dart';
@ -10,23 +11,26 @@ class PharmacyViewModel extends BaseViewModel {
String errorMsg = '';
PharmacyService _pharmacyService = locator<PharmacyService>();
List<PharmaciesModel> get pharmacy => _pharmacyService.pharmaciesList;
List<PharmaciesModel> get pharmacy => _pharmacyService.medicineItem;
List<PharmaciesListModel> get pharmacyList => _pharmacyService.pharmaciesList;
Future getMedicine() async {
Future getPharmacies({int id}) async {
setState(ViewState.Busy);
await _pharmacyService.getMedicine();
await _pharmacyService.getPharmaciesList(itemID: id);
if (_pharmacyService.hasError) {
error = _pharmacyService.error;
setState(ViewState.Error);
} else
setState(ViewState.Idle);
//_pharmacyService.clearPharmaciesList();
}
Future getMedicine2({String name}) async {
Future getMedicine({String name}) async {
hasError = false;
_pharmacyService.clearPharmaciesLis();
_pharmacyService.clearMedicineList();
setState(ViewState.BusyLocal);
await _pharmacyService.getMedicine(drugName: name);
await _pharmacyService.getMedicineList(drugName: name);
if (_pharmacyService.hasError) {
error = _pharmacyService.error;
setState(ViewState.ErrorLocal);

@ -4,14 +4,13 @@ import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:rating_bar/rating_bar.dart';
import 'Components/AppointmentActions.dart';
class AppointmentDetails extends StatefulWidget {
@override
_AppointmentDetailsState createState() => _AppointmentDetailsState();
}
class _AppointmentDetailsState extends State<AppointmentDetails> with SingleTickerProviderStateMixin {
class _AppointmentDetailsState extends State<AppointmentDetails>
with SingleTickerProviderStateMixin {
TabController _tabController;
bool showFooterButton = false;

@ -6,6 +6,7 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/pharmacies_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacies_view_model.dart';
import 'package:diplomaticquarterapp/core/model/pharmacies/pharmacies_list_model.dart';
import '../base/base_view.dart';
@ -18,7 +19,7 @@ class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return BaseView<PharmacyViewModel>(
// onModelReady: (model) => model.getMedicine(),
onModelReady: (model) => model.getMedicine(),
builder: (BuildContext context, PharmacyViewModel model, Widget child) =>
AppScaffold(
baseViewModel: model,

@ -11,18 +11,11 @@ import '../base/base_view.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/input/text_field.dart';
import 'package:diplomaticquarterapp/widgets/buttons/BottomButton.dart';
import 'package:diplomaticquarterapp/widgets/pharmacy/drug_item.dart';
import '../../locator.dart';
import 'package:diplomaticquarterapp/core/service/pharmacies_service.dart';
import 'package:diplomaticquarterapp/pages/pharmacies/pharmacies_list_screen.dart';
class MedicineSearch extends StatefulWidget {
@override
_MedicineSearchState createState() => _MedicineSearchState();
}
class _MedicineSearchState extends State<MedicineSearch> {
class MedicineSearch extends StatelessWidget {
final textController = TextEditingController();
final _formKey = GlobalKey<FormState>();
@override
@ -31,115 +24,121 @@ class _MedicineSearchState extends State<MedicineSearch> {
builder: (BuildContext context, PharmacyViewModel model, Widget child) =>
AppScaffold(
baseViewModel: model,
appBarTitle: 'Search Medicine',
body: Column(
children: <Widget>[
Padding(
padding: EdgeInsets.only(
bottom: SizeConfig.heightMultiplier * 1,
right: SizeConfig.heightMultiplier * 2.5,
top: SizeConfig.heightMultiplier * 4,
left: SizeConfig.heightMultiplier * 2.5,
),
child: Form(
key: _formKey,
child: TextFields(
hintText: 'Search Medicine here ',
inputAction: TextInputAction.search,
onSaved: (value) {},
onSubmit: (value) {
searchMedicine(model);
},
controller: textController,
validator: (value) {
if (value.isEmpty) {
return 'please enter medicine name';
}
return null;
},
appBarTitle: TranslationBase.of(context).searchMedicine,
body: Container(
height: SizeConfig.screenHeight,
child: Column(
children: <Widget>[
Padding(
padding: EdgeInsets.only(
bottom: SizeConfig.heightMultiplier * 1,
right: SizeConfig.heightMultiplier * 2.5,
top: SizeConfig.heightMultiplier * 4,
left: SizeConfig.heightMultiplier * 2.5,
),
),
),
Container(
margin: EdgeInsets.only(
bottom: SizeConfig.heightMultiplier * 0.0,
right: SizeConfig.heightMultiplier * 5,
top: SizeConfig.heightMultiplier * 1,
left: SizeConfig.heightMultiplier * 5,
),
child: Wrap(
children: <Widget>[
Container(
child: Button(
loading: model.state == ViewState.BusyLocal,
label: 'Search',
onTap: () {
searchMedicine(model);
}),
width: 350.0,
child: Form(
key: _formKey,
child: TextFields(
hintText:
TranslationBase.of(context).searchMedicineHere,
inputAction: TextInputAction.search,
onSaved: (value) {},
onSubmit: (value) {
searchMedicine(model, context);
},
controller: textController,
validator: (value) {
if (value.isEmpty) {
return TranslationBase.of(context)
.pleaseEnterMedicineName;
}
return null;
},
),
],
),
),
),
Container(
margin:
EdgeInsets.only(left: SizeConfig.heightMultiplier * 2),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Texts(
'You Can Find ' +
'${model.pharmacy == null ? '0' : model.pharmacy.length.toString()}'
' Item In Search ',
),
],
Container(
margin: EdgeInsets.only(
bottom: SizeConfig.heightMultiplier * 0.0,
right: SizeConfig.heightMultiplier * 5,
top: SizeConfig.heightMultiplier * 1,
left: SizeConfig.heightMultiplier * 5,
),
child: Wrap(
children: <Widget>[
Container(
child: Button(
loading: model.state == ViewState.BusyLocal,
label: TranslationBase.of(context).search,
onTap: () {
searchMedicine(model, context);
}),
width: 350.0,
),
],
),
),
),
if (model.state == ViewState.ErrorLocal)
Container(
child: Texts(model.error),
margin: EdgeInsets.only(
left: SizeConfig.heightMultiplier * 2),
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Texts(
'You Can Find ' +
'${model.pharmacy == null ? '0' : model.pharmacy.length.toString()}'
' Item In Search ',
),
],
),
),
Expanded(
child: Container(
width: SizeConfig.screenWidth * 0.85,
//child: _getHospitals(model.pharmacy),
child: ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: model.pharmacy == null
? 0
: model.pharmacy.length,
itemBuilder: (BuildContext context, int index) {
return InkWell(
child: MedicineItemWidget(
label: model.pharmacy[index].itemDes,
url: model.pharmacy[index].productImage),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => PharmaciesList()),
);
},
);
}),
if (model.state == ViewState.ErrorLocal)
Container(
child: Texts(model.error),
),
Expanded(
child: Container(
width: SizeConfig.screenWidth * 0.85,
//child: _getHospitals(model.pharmacy),
child: ListView.builder(
//physics: NeverScrollableScrollPhysics(),
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: model.pharmacy == null
? 0
: model.pharmacy.length,
itemBuilder: (BuildContext context, int index) {
return InkWell(
child: MedicineItemWidget(
label: model.pharmacy[index].itemDes,
url: model.pharmacy[index].productImage),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => PharmaciesList(
medicineID:
model.pharmacy[index].itemID,
imageURL: model
.pharmacy[index].productImage,
medicineDescription:
model.pharmacy[index].itemDes),
),
);
},
);
}),
),
),
)
],
],
),
)),
);
}
searchMedicine(PharmacyViewModel model) {
searchMedicine(PharmacyViewModel model, BuildContext context) {
Utils.hideKeyboard(context);
if (_formKey.currentState.validate())
model.getMedicine2(name: textController.text);
model.getMedicine(name: textController.text);
}
Widget _getHospitals(List<PharmaciesModel> hospitals) => ListView.builder(
itemCount: hospitals.length,
itemBuilder: (BuildContext context, int index) => Container(
child: Texts(hospitals[index].itemDes),
),
);
}

@ -1,99 +1,191 @@
import 'package:diplomaticquarterapp/core/model/pharmacies/pharmacies_model.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:flutter/material.dart';
import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:flutter/cupertino.dart';
import 'package:maps_launcher/maps_launcher.dart';
import '../base/base_view.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/progress_indicator/app_circular_progress_Indeicator.dart';
import 'package:diplomaticquarterapp/widgets/others/rounded_container.dart';
import 'dart:typed_data';
import 'dart:convert';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/core/viewModels/pharmacies_view_model.dart';
import 'package:map_launcher/map_launcher.dart';
import 'package:url_launcher/url_launcher.dart';
class PharmaciesList extends StatefulWidget {
String medicineID;
int url;
PharmaciesList({this.url, this.medicineID});
@override
_PharmaciesListState createState() => _PharmaciesListState();
class PharmaciesList extends StatelessWidget {
final int medicineID;
final String imageURL;
final String medicineDescription;
//
}
PharmaciesList({this.medicineID, this.imageURL, this.medicineDescription});
class _PharmaciesListState extends State<PharmaciesList> {
@override
Widget build(BuildContext context) {
return BaseView<PharmacyViewModel>(
//onModelReady: (model) => model.getMedicine(),
onModelReady: (model) => model.getPharmacies(id: medicineID),
builder: (BuildContext context, PharmacyViewModel model, Widget child) =>
AppScaffold(
appBarTitle: 'Pharmacies List',
body: !model.isFinished
? AppCircularProgressIndicator()
: model.hasError
? Center(
child: Text(
model.errorMsg,
style: TextStyle(color: Colors.red),
appBarTitle: TranslationBase.of(context).pharmaciesList,
baseViewModel: model,
body: Container(
height: SizeConfig.screenHeight,
child: ListView(
shrinkWrap: true,
scrollDirection: Axis.vertical,
physics: AlwaysScrollableScrollPhysics(),
children: <Widget>[
RoundedContainer(
child: Row(
children: <Widget>[
Expanded(
flex: 1,
child: ClipRRect(
borderRadius: BorderRadius.all(
Radius.circular(7),
),
child: Image.memory(
dataFromBase64String(imageURL),
height: SizeConfig.imageSizeMultiplier * 19,
width: SizeConfig.imageSizeMultiplier * 18,
fit: BoxFit.cover,
),
),
),
Expanded(
flex: 3,
child: Padding(
padding: EdgeInsets.symmetric(
horizontal: 6.8, vertical: 3.5),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Texts(
TranslationBase.of(context).description,
),
Texts(
medicineDescription,
),
Texts(
TranslationBase.of(context).price,
marginRight: 10,
marginLeft: 10,
marginBottom: 2.0,
),
if (model.pharmacyList.length > 0)
Texts(
model.pharmacyList[0].price.toString(),
),
],
),
),
),
],
),
),
Container(
margin: EdgeInsets.only(
top: SizeConfig.widthMultiplier * 2.0,
bottom: SizeConfig.widthMultiplier * 3.0,
right: SizeConfig.widthMultiplier * 4.0,
left: SizeConfig.widthMultiplier * 2.5,
),
child: Align(
alignment: Alignment.center,
child: Texts(
TranslationBase.of(context).youCanFindItIn,
),
),
alignment: Alignment.topRight,
),
Container(
width: SizeConfig.screenWidth * 1.0,
child: ListView.builder(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
itemCount: model.pharmacyList == null
? 0
: model.pharmacyList.length,
itemBuilder: (BuildContext context, int index) {
return RoundedContainer(
child: Row(
children: <Widget>[
Expanded(
child: ClipRRect(
borderRadius:
BorderRadius.all(Radius.circular(7)),
child: Image.network(
model.pharmacyList[index].imageLocation,
height: SizeConfig.imageSizeMultiplier * 13.0,
width: SizeConfig.imageSizeMultiplier * 11.0,
fit: BoxFit.cover,
),
),
),
Expanded(
flex: 4,
child: Padding(
padding: EdgeInsets.all(9.0),
child: Texts(
model.pharmacyList[index].desLocation,
),
),
),
)
: Container(
height: SizeConfig.screenHeight,
child: ListView(
shrinkWrap: true,
scrollDirection: Axis.vertical,
physics: AlwaysScrollableScrollPhysics(),
children: <Widget>[
RoundedContainer(
child: Row(
children: <Widget>[
Expanded(
flex: 1,
child: ClipRRect(
borderRadius: BorderRadius.all(
Radius.circular(7),
),
child: Image.memory(
dataFromBase64String(
widget.url.toString()),
height:
SizeConfig.imageSizeMultiplier * 19,
width:
SizeConfig.imageSizeMultiplier * 18,
fit: BoxFit.cover,
),
Expanded(
flex: 2,
child: Wrap(
direction: Axis.horizontal,
alignment: WrapAlignment.end,
crossAxisAlignment: WrapCrossAlignment.end,
children: <Widget>[
Padding(
padding: EdgeInsets.all(6.0),
child: InkWell(
child: Icon(
Icons.phone,
color: Colors.red,
),
onTap: () => launch("tel://" +
model.pharmacyList[index].phoneNumber),
),
Expanded(
flex: 3,
child: Column(
mainAxisAlignment:
MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.stretch,
children: <Widget>[],
),
Padding(
padding: EdgeInsets.all(6.0),
child: InkWell(
child: Icon(
Icons.local_pharmacy,
color: Colors.red,
),
)
],
))
],
),
)),
onTap: () {
MapsLauncher.launchCoordinates(
double.parse(
model.pharmacyList[index].latitude),
double.parse(model
.pharmacyList[index].longitude),
);
},
),
),
],
),
)
],
),
);
},
),
),
],
),
),
),
);
}
Image imageFromBase64String(String base64String) {
return Image.memory(base64Decode(base64String));
}
Uint8List dataFromBase64String(String base64String) {
return base64Decode(base64String);
}
String base64String(Uint8List data) {
return base64Encode(data);
}
}

@ -150,6 +150,14 @@ class TranslationBase {
localizedValues['searchMedicine'][locale.languageCode];
String get searchMedicineHere =>
localizedValues['searchMedicineHere'][locale.languageCode];
String get pharmaciesList =>
localizedValues['pharmaciesList'][locale.languageCode];
String get description => localizedValues['description'][locale.languageCode];
String get price => localizedValues['price'][locale.languageCode];
String get youCanFindItIn =>
localizedValues['youCanFindItIn'][locale.languageCode];
String get pleaseEnterMedicineName =>
localizedValues['pleaseEnterMedicineName'][locale.languageCode];
String get verificationMessage =>
localizedValues['verification_message'][locale.languageCode];
String get validationMessage =>

@ -16,6 +16,11 @@ class Texts extends StatefulWidget {
final bool allowExpand;
final double fontSize;
final String fontWeight;
final double margin;
final double marginTop;
final double marginRight;
final double marginBottom;
final double marginLeft;
Texts(this.text,
{Key key,
@ -32,7 +37,12 @@ class Texts extends StatefulWidget {
this.readMore = false,
this.style,
this.fontSize,
this.fontWeight})
this.fontWeight,
this.margin,
this.marginBottom,
this.marginLeft,
this.marginRight,
this.marginTop})
: super(key: key);
@override
@ -228,7 +238,7 @@ class _TextsState extends State<Texts> {
Theme.of(context).backgroundColor.withOpacity(0),
], begin: Alignment.bottomCenter, end: Alignment.topCenter),
),
height: 30,
height: 30.0,
),
)
],

@ -29,7 +29,7 @@ class _MedicineItemWidgetState extends State<MedicineItemWidget> {
@override
Widget build(BuildContext context) {
return new RoundedContainer(
height: SizeConfig.heightMultiplier * 10.5,
height: SizeConfig.heightMultiplier * 12.9,
child: Padding(
padding: const EdgeInsets.all(2.0),
child: Row(
@ -38,8 +38,8 @@ class _MedicineItemWidgetState extends State<MedicineItemWidget> {
children: <Widget>[
if (widget.url != null)
Container(
height: 39,
width: 39,
height: 39.0,
width: 39.0,
child: ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(7)),
child: Image.memory(
@ -51,11 +51,15 @@ class _MedicineItemWidgetState extends State<MedicineItemWidget> {
),
),
Expanded(
child: Padding(
padding: EdgeInsets.all(3),
child: Align(
alignment: Alignment.centerLeft,
child: Texts(widget.label),
child: Center(
child: Padding(
padding: EdgeInsets.all(2.5),
child: Align(
alignment: Alignment.centerLeft,
child: Texts(
widget.label,
),
),
),
),
)
@ -70,15 +74,7 @@ class _MedicineItemWidgetState extends State<MedicineItemWidget> {
);
}
Image imageFromBase64String(String base64String) {
return Image.memory(base64Decode(base64String));
}
Uint8List dataFromBase64String(String base64String) {
return base64Decode(base64String);
}
String base64String(Uint8List data) {
return base64Encode(data);
}
}

@ -86,6 +86,7 @@ dependencies:
dev_dependencies:
flutter_test:
sdk: flutter

Loading…
Cancel
Save