import 'dart:convert'; import 'dart:io'; import 'package:flutter/material.dart'; import 'package:geolocator/geolocator.dart'; import 'package:healthcare_pharmacy/models/medicineview_model.dart'; import 'package:healthcare_pharmacy/settings.dart'; import 'package:flutter/services.dart'; import 'package:url_launcher/url_launcher.dart'; import 'package:cloudinary_public/cloudinary_public.dart'; class GetMedicines extends StatefulWidget { const GetMedicines({Key? key}) : super(key: key); @override State createState() => _GetMedicinesState(); } class _GetMedicinesState extends State with TickerProviderStateMixin { bool isMedecineDataLoading=false; bool isSereverIssue = false; List medecineList = []; List FilteredList = []; String userAddress=''; TextEditingController searchController = TextEditingController(); String dropdownArea = '2'; String medicine_name=''; List medImages=[]; //String dropdownType = 'Tank'; Future getAllMedecineData(var medicineName) async { FilteredList=[]; isMedecineDataLoading = true; try { var medecineResponse = await AppSettings.getAllMedecines(medicineName); print(jsonDecode(medecineResponse)); if(jsonDecode(medecineResponse)!=''){ setState(() { medicine_name=jsonDecode(medecineResponse)['medicine'][0]['name']; medImages=jsonDecode(medecineResponse)['imageUrls']; /* medecineList = ((jsonDecode(medecineResponse)['medicine']) as List).map((dynamic model) { return GetMedecineDetailsModel.fromJson(model); }).toList();*/ isMedecineDataLoading = false; }); } else{ setState(() { medicine_name=''; isMedecineDataLoading = false; }); } } catch (e) { setState(() { medicine_name=''; isMedecineDataLoading = false; isSereverIssue = true; }); } } @override void initState() { // TODO: implement initState super.initState(); } Widget _bindMedicines() { if (medicine_name!='') { return Padding(padding: EdgeInsets.all(10), child: Container( width: double.infinity, child: Row( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ Container( width: MediaQuery.of(context).size.width * .18, height: MediaQuery.of(context).size.height * .10, decoration: BoxDecoration( shape: BoxShape.rectangle, image: DecorationImage( image: NetworkImage(medImages[0]) as ImageProvider, // picked file fit: BoxFit.contain)), ), Text(medicine_name), ], ), ), ); } else { return Center( child: Padding( padding: EdgeInsets.fromLTRB(0, 40, 0, 0), child: isSereverIssue ? Column( mainAxisAlignment: MainAxisAlignment.center, children: [ SizedBox( height: 20, ), Text( 'No medicine found with your search',style:serverIssueTextStyle() ,), ], ) : userAddress==''?Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon(Icons.search,color: primaryColor,size: 40,), SizedBox( height: 20, ), Text( 'Please enter atleast 4 letters to continue search',style:TextStyle( color: primaryColor, fontWeight: FontWeight.bold, ),), ], ): Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon(Icons.dataset_rounded,color: primaryColor,size: 40,), SizedBox( height: 20, ), SizedBox( height: 20, ), Text( 'No medicine found with your search',style:serverIssueTextStyle() ,), ], ), )); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Medecine Details'), backgroundColor: primaryColor,), /* body: */ body: Container( //color: Colors.purpleAccent, child:Column( children: [ Padding(padding:EdgeInsets.all(10) , child: Container( height: MediaQuery.of(context).size.height * .07, padding: EdgeInsets.all(5), child: Center(child: TextField( cursorColor: greyColor, controller: searchController, onChanged: (string) { if(string.length>=4){ getAllMedecineData(searchController.text); } else{ setState(() { medicine_name=''; }); } }, decoration: InputDecoration( prefixIcon: Icon( Icons.search, color: greyColor, ), suffixIcon: IconButton( icon: Icon( Icons.clear, color: greyColor, ), onPressed: () { setState(() { searchController.text=''; medicine_name=''; }); }, ), border: OutlineInputBorder( borderSide: BorderSide(color: greyColor), borderRadius: BorderRadius.circular(30), ), focusedBorder: OutlineInputBorder( borderSide: BorderSide(color: greyColor), borderRadius: BorderRadius.circular(30), ), enabledBorder: OutlineInputBorder( borderSide: BorderSide(color: greyColor), borderRadius: BorderRadius.circular(30), ), //labelText: 'Search by phone number', hintText: 'Search by medicine name', labelStyle: TextStyle( color: greyColor, //<-- SEE HERE ), ), ),) ),), Expanded(child: Container( child:isMedecineDataLoading ? Center( child: CircularProgressIndicator( color: primaryColor, strokeWidth: 5.0, ), ) : _bindMedicines() , )) ], ), ), ); } }