import 'dart:convert'; import 'dart:typed_data'; import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/core/viewModel/medicine_view_model.dart'; import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart'; import 'package:doctor_app_flutter/screens/base/base_view.dart'; import 'package:doctor_app_flutter/util/dr_app_shared_pref.dart'; import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/rounded_container_widget.dart'; import 'package:flutter/material.dart'; import 'package:maps_launcher/maps_launcher.dart'; import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; DrAppSharedPreferances sharedPref = DrAppSharedPreferances(); class PharmaciesListScreen extends StatefulWidget { final int itemID; final String url; // In the constructor, require a item id. PharmaciesListScreen({Key key, @required this.itemID, this.url}) : super(key: key); @override _PharmaciesListState createState() => _PharmaciesListState(); } class _PharmaciesListState extends State { var _data; Helpers helpers = new Helpers(); ProjectViewModel projectsProvider; bool _isInit = true; //bool _isOutOfStuck = false; @override void didChangeDependencies() { super.didChangeDependencies(); _isInit = false; } @override Widget build(BuildContext context) { projectsProvider = Provider.of(context); return BaseView( onModelReady: (model) => model.getPharmaciesList(widget.itemID), builder: (_, model, w) => AppScaffold( baseViewModel: model, appBarTitle: TranslationBase.of(context).pharmaciesList, body: Container( height: SizeConfig.screenHeight, child: ListView( shrinkWrap: true, scrollDirection: Axis.vertical, physics: const AlwaysScrollableScrollPhysics(), children: [ model.pharmaciesList.length > 0 ? RoundedContainer( child: Row( children: [ Expanded( flex: 1, child: ClipRRect( borderRadius: BorderRadius.all(Radius.circular(7)), child: widget.url != null ? Image.network( widget.url, height: SizeConfig.imageSizeMultiplier * 21, width: SizeConfig.imageSizeMultiplier * 20, fit: BoxFit.cover, ): Container(), ), ), Expanded( flex: 3, child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.stretch, children: [ AppText( TranslationBase.of(context) .description, marginLeft: 10, marginTop: 0, marginRight: 10, marginBottom: 2, fontWeight: FontWeight.bold, ), AppText( model.pharmaciesList[0]["ItemDescription"], marginLeft: 10, marginTop: 0, marginRight: 10, marginBottom: 10, ), AppText( TranslationBase.of(context).price, marginLeft: 10, marginTop: 0, marginRight: 10, marginBottom: 2, fontWeight: FontWeight.bold, ), AppText( model.pharmaciesList[0]["SellingPrice"] .toString(), marginLeft: 10, marginTop: 0, marginRight: 10, marginBottom: 10, ), ], ), ) ], )): Container(), Container( margin: EdgeInsets.only( top: SizeConfig.widthMultiplier * 2, bottom: SizeConfig.widthMultiplier * 2, right: SizeConfig.widthMultiplier * 4, left: SizeConfig.widthMultiplier * 4, ), child: Align( alignment: Alignment.centerLeft, child: AppText( TranslationBase.of(context).youCanFindItIn, fontWeight: FontWeight.bold, ), ), alignment: projectsProvider.isArabic ? Alignment.topRight : Alignment.topLeft, ), Expanded( child: Container( width: SizeConfig.screenWidth * 0.99, child: ListView.builder( shrinkWrap: true, physics: const NeverScrollableScrollPhysics(), itemCount: model.pharmaciesList == null ? 0 : model .pharmaciesList.length, itemBuilder: (BuildContext context, int index) { return RoundedContainer( child: Row( children: [ Expanded( flex: 1, child: ClipRRect( borderRadius: BorderRadius.all(Radius.circular(7)), child: Image.network( model .pharmaciesList[index]["ProjectImageURL"], height: SizeConfig.imageSizeMultiplier * 15, width: SizeConfig.imageSizeMultiplier * 15, fit: BoxFit.cover, ), ), ), Expanded( flex: 4, child: AppText( model .pharmaciesList[index]["LocationDescription"], margin: 10, ), ), Expanded( flex: 2, child: Wrap( direction: Axis.horizontal, alignment: WrapAlignment.end, crossAxisAlignment: WrapCrossAlignment.end, children: [ Padding( padding: EdgeInsets.all(5), child: InkWell( child: Icon( Icons.call, color: Colors.red, ), onTap: () => launch("tel://" + model .pharmaciesList[index]["PhoneNumber"]), ), ), Padding( padding: EdgeInsets.all(5), child: InkWell( child: Icon( Icons.pin_drop, color: Colors.red, ), onTap: () { MapsLauncher.launchCoordinates( double.parse( model .pharmaciesList[index]["Latitude"]), double.parse( model .pharmaciesList[index]["Longitude"]), model.pharmaciesList[index] ["LocationDescription"]); }, ), ), ], ), ), ], ), ); }), ), ) ]), ),),); } Image imageFromBase64String(String base64String) { return Image.memory(base64Decode(base64String)); } //TODO CHECK THE URL IS NULL OR NOT Uint8List dataFromBase64String(String base64String) { if(base64String !=null) return base64Decode(base64String); } String base64String(Uint8List data) { return base64Encode(data); } }