You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1119 lines
46 KiB

import 'dart:convert';
import 'package:doctor/connected_patients/records_on_click.dart';
import 'package:doctor/models/patient_records_model.dart';
import 'package:flutter/material.dart';
import 'package:doctor/common/settings.dart';
import 'package:intl/intl.dart';
class PatientRecords extends StatefulWidget {
var patientDetails;
PatientRecords({this.patientDetails});
@override
State<PatientRecords> createState() => _PatientRecordsState();
}
class _PatientRecordsState extends State<PatientRecords> {
List<PatientRecordsModel> recordsList = [];
List<PatientRecordsModel> recordsListOriginal = [];
bool isReportsDataLoading = false;
bool isDynamicDigitsVisible = false;
bool isSereverIssue = false;
TextEditingController searchController = TextEditingController();
TextEditingController dateInput = TextEditingController();
TextEditingController fromdateController = TextEditingController();
TextEditingController todateController = TextEditingController();
final TextEditingController _fieldOne = TextEditingController();
final TextEditingController _fieldTwo = TextEditingController();
final TextEditingController _fieldThree = TextEditingController();
final TextEditingController _fieldFour = TextEditingController();
final TextEditingController _fieldFive = TextEditingController();
final TextEditingController _fieldSix = TextEditingController();
DateTime fromDate=DateTime.now();
String dropdownSearchType = 'Problem';
String? searchBy;
var typeOfSearchItems = [
'Problem',
'Doctor',
'Date',
];
String? _otp;
Future<void> getAllRecords() async {
isReportsDataLoading=true;
try {
var response = await AppSettings.getAllRecords(widget.patientDetails.customer_id);
setState(() {
recordsListOriginal = ((jsonDecode(response)) as List)
.map((dynamic model) {
return PatientRecordsModel.fromJson(model);
}).toList();
recordsList=recordsListOriginal.reversed.toList();
isReportsDataLoading = false;
});
} catch (e) {
setState(() {
isReportsDataLoading = false;
isSereverIssue = true;
});
}
}
Future<void> getRecordsByProblemName(var problem) async {
isReportsDataLoading=true;
try {
var response = await AppSettings.getAllRecords(widget.patientDetails.customer_id);
setState(() {
recordsListOriginal = ((jsonDecode(response)) as List)
.map((dynamic model) {
return PatientRecordsModel.fromJson(model);
}).toList();
recordsList=recordsListOriginal.reversed.toList();
recordsList= recordsListOriginal.where(
(x) => x.problem.toString().toLowerCase().contains(problem.toString().toLowerCase())
).toList();
isReportsDataLoading = false;
});
} catch (e) {
setState(() {
isReportsDataLoading = false;
isSereverIssue = true;
});
}
}
Future<void> getRecordsByDoctorName(var doctor) async {
isReportsDataLoading=true;
try {
var response = await AppSettings.getAllRecords(widget.patientDetails.customer_id);
setState(() {
recordsListOriginal = ((jsonDecode(response)) as List)
.map((dynamic model) {
return PatientRecordsModel.fromJson(model);
}).toList();
recordsList=recordsListOriginal.reversed.toList();
recordsList= recordsListOriginal.where(
(x) => x.doctorName.toString().toLowerCase().contains(doctor.toString().toLowerCase())
).toList();
isReportsDataLoading = false;
});
} catch (e) {
setState(() {
isReportsDataLoading = false;
isSereverIssue = true;
});
}
}
Future<void> getRecordsByDate(var date) async {
isReportsDataLoading=true;
try {
var response = await AppSettings.getAllRecords(widget.patientDetails.customer_id);
setState(() {
recordsListOriginal = ((jsonDecode(response)) as List)
.map((dynamic model) {
return PatientRecordsModel.fromJson(model);
}).toList();
recordsList=recordsListOriginal.reversed.toList();
recordsList= recordsListOriginal.where(
(x) => x.date.toString().toLowerCase().contains(date.toString().toLowerCase())
).toList();
isReportsDataLoading = false;
});
} catch (e) {
setState(() {
isReportsDataLoading = false;
isSereverIssue = true;
});
}
}
Future<void> getRecordsByDateRange(var fromDate,var toDate) async {
isReportsDataLoading = true;
try {
var response = await AppSettings.getAllRecords(widget.patientDetails.customer_id);
setState(() {
recordsListOriginal = ((jsonDecode(response)) as List)
.map((dynamic model) {
return PatientRecordsModel.fromJson(model);
}).toList();
recordsList=recordsListOriginal.reversed.toList();
var dateToCheck = DateTime.now().add(Duration(days: -1));
recordsList = recordsListOriginal.reversed.where((product) {
final date = product.dateForFilter;
final startDate =DateFormat('dd-MM-yyyy').parse(fromDate);
final endDate = DateFormat('dd-MM-yyyy').parse(toDate);
return date.isAfter(startDate) && date.isBefore(endDate);
//reportsList=reportsListOriginal.reversed.toList();
}).toList();
/*if( dateToCheck.isAfter(startDate) && dateToCheck.isBefore(endDate))
{
print("dateToCheck is between now and lastYear");
}
else
{
print("dateToCheck is not between now and lastYear");
}*/
isReportsDataLoading = false;
});
} catch (e) {
setState(() {
isReportsDataLoading = false;
isSereverIssue = true;
});
}
}
@override
void initState() {
getAllRecords();
var now = new DateTime.now();
String formattedDate = DateFormat('dd-MM-yyyy').format(now);
fromdateController.text=formattedDate;
todateController.text=formattedDate;
super.initState();
}
Widget _filtereddata(){
if(recordsList.length!=0){
recordsList.sort((a, b) => b.date.compareTo(a.date));
return ListView.builder(
padding: EdgeInsets.all(0),
itemCount: recordsList.length,
itemBuilder: (BuildContext context, int index) {
if(recordsList[index].patient_type.toLowerCase().toString()=='self'){
recordsList[index].age=widget.patientDetails.age;
recordsList[index].patient_name=widget.patientDetails.user_name;
recordsList[index].gender=widget.patientDetails.gender;
}
return GestureDetector(
onTap: (){
/* Navigator.push(
context,
new MaterialPageRoute(
builder: (__) => new AllRecordsOnClick(recordDetails:recordsList[index],initialIndex: 0,))).then((value) {
getAllRecords();
});*/
},
child: Card(
//color: prescriptionsList[index].cardColor,
child: Padding(
padding:EdgeInsets.all(8) ,
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: double.infinity,
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('Problem:',style: problemTextStyle()),
Text(recordsList[index].problem.toString().toUpperCase(),style: valuesTextStyle()),
Text('Doctor details: ',style: problemTextStyle()),
Text(recordsList[index].doctorName.toString().toUpperCase(),style: valuesTextStyle()),
Text(recordsList[index].hospitalName.toString().toUpperCase(),style: valuesTextStyle()),
Text('Date: ',style: problemTextStyle()),
Text(recordsList[index].date.toString().toUpperCase(),style: valuesTextStyle()),
Text('Patient details: ',style: problemTextStyle()),
Text(recordsList[index].patient_name.toString().toUpperCase(),style: valuesTextStyle()),
Row(
children: [
Text(recordsList[index].gender.toString().toUpperCase(),style: valuesTextStyle()),
SizedBox(width:MediaQuery.of(context).size.width * .05,),
Text(recordsList[index].age.toString().toUpperCase()+" Yrs",style: valuesTextStyle()),
],
),
],
),
),
Visibility(
visible:true,
child: recordsList[index].isReportVisible?Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
ElevatedButton(
style: ElevatedButton.styleFrom(
primary: primaryColor, // background
onPrimary: Colors.white, // foreground
),
onPressed: () async {
Navigator.push(
context,
new MaterialPageRoute(
builder: (__) => new AllRecordsOnClick(recordDetails:recordsList[index],initialIndex: 0,))).then((value) {
getAllRecords();
});
},
child: Text('Findings: '+recordsList[index].findingsImages.length.toString(),style:textButtonStyleReports(),),
),
SizedBox(
width:MediaQuery.of(context).size.width * .05,
),
ElevatedButton(
style: ElevatedButton.styleFrom(
primary: primaryColor, // background
onPrimary: Colors.white, // foreground
),
onPressed: () async {
Navigator.push(
context,
new MaterialPageRoute(
builder: (__) => new AllRecordsOnClick(recordDetails:recordsList[index],initialIndex: 0,))).then((value) {
getAllRecords();
});
},
child: Text('Reports: '+recordsList[index].reportImages.length.toString(),style:textButtonStyleReports()),
),
SizedBox(
width:MediaQuery.of(context).size.width * .05,
),
ElevatedButton(
style: ElevatedButton.styleFrom(
primary: primaryColor, // background
onPrimary: Colors.white, // foreground
),
onPressed: () async {
Navigator.push(
context,
new MaterialPageRoute(
builder: (__) => new AllRecordsOnClick(recordDetails:recordsList[index],initialIndex: 0,))).then((value) {
getAllRecords();
});
},
child: Text('Prescriptions: '+recordsList[index].prescriptionImages.length.toString(),style:textButtonStyleReports()),
),
],
):Container(
child: TextButton(
onPressed: () async{
var payload = new Map<String, dynamic>();
payload["customerId"] = recordsList[index].customerId;
payload["doctorId"] =AppSettings.doctorId;
payload["recordId"] = recordsList[index].recordId;
try{
var response = await AppSettings.getDynamicCode(payload);
print(jsonDecode(response));
setState(() {
recordsList[index].isDynamicDigitsVisible=true;
});
}
catch(e){
print(e);
}
},
child: Column(
children: [
Visibility(
visible: !recordsList[index].isDynamicDigitsVisible,
child: Text('Click here to request to see patient records',
style: TextStyle(
color: primaryColor,
fontSize: 14,
decoration: TextDecoration.underline,
)),),
SizedBox(
height:MediaQuery.of(context).size.height * .02,
),
Visibility(
visible:recordsList[index].isDynamicDigitsVisible,
child: Column(
children: [
Text('Please enter 6 digit code provided by the patient',
style: TextStyle(
color: primaryColor,
fontSize: 14,
)),
SizedBox(
height:MediaQuery.of(context).size.height * .02,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
OtpInput(_fieldOne, true), // auto focus
OtpInput(_fieldTwo, false),
OtpInput(_fieldThree, false),
OtpInput(_fieldFour, false),
OtpInput(_fieldFive, false),
OtpInput(_fieldSix, false),
],
),
SizedBox(
height:MediaQuery.of(context).size.height * .02,
),
Container(
width:double.infinity,
height: MediaQuery.of(context).size.height * .06,
child: ElevatedButton(
style: ElevatedButton.styleFrom(
primary: buttonColors, // background
onPrimary: Colors.black, // foreground
),
onPressed: () async {
setState(() {
_otp = _fieldOne.text +
_fieldTwo.text +
_fieldThree.text +
_fieldFour.text+
_fieldFive.text +
_fieldSix.text;
});
if (_otp!.length == 6) {
AppSettings.preLoaderDialog(context);
bool isOnline = await AppSettings.internetConnectivity();
if(isOnline){
var payload = new Map<String, dynamic>();
payload["dynamicCode"] = _otp.toString();
payload["recordId"] = recordsList[index].recordId;
payload["customerId"] = recordsList[index].customerId;
bool codeVerified = await AppSettings.dynamicCodeVerification(payload);
if(codeVerified){
Navigator.of(context,rootNavigator: true).pop();
AppSettings.longSuccessToast("Code verified successfully");
setState(() {
recordsList[index].isReportVisible=true;
recordsList[index].isDynamicDigitsVisible=false;
_fieldOne.clear();
_fieldTwo.clear();
_fieldThree.clear();
_fieldFour.clear();
_fieldFive.clear();
_fieldSix.clear();
});
//getAllRecords();
}
else{
Navigator.of(context,rootNavigator: true).pop();
AppSettings.longFailedToast(
"please enter valid pin");
recordsList[index].isReportVisible=false;
//getAllRecords();
}
}
else{
Navigator.of(context,rootNavigator: true).pop();
AppSettings.longFailedToast(
"Please check your internet");
}
}
else{
}
},
child: Text('Verify'),
)),
],
)),
],
)
),
),)
],
),
),
),
);
});
}
else{
return Padding(padding: EdgeInsets.fromLTRB(60,10,60,10),
child: Column(
children: [
Text('No records found related to your search'),
SizedBox(
height: 20,
),
CircleAvatar(
backgroundColor: Colors.red,
radius: 30,
child: const Icon(
Icons.info,
color: Colors.white,
),
)
],
),);
}
}
Widget _allreports(){
if(recordsListOriginal.length!=0){
return Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
/*Container(
padding: const EdgeInsets.fromLTRB(10, 10, 10, 0),
child: DropdownButtonFormField(
// Initial Value
value: dropdownSearchType,
isExpanded: true,
decoration: const InputDecoration(
prefixIcon: Icon(
Icons.search,
color: greyColor,
),
border: OutlineInputBorder(
borderSide: BorderSide(color: greyColor)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: greyColor),
),
labelText: 'Search By',
labelStyle: TextStyle(
color: greyColor, //<-- SEE HERE
),
),
hint: Text('Select Search Type'),
// Down Arrow Icon
icon: const Icon(Icons.keyboard_arrow_down),
// Array list of items
items: typeOfSearchItems.map((String items) {
return DropdownMenuItem(
value: items,
child: Text(items),
);
}).toList(),
// After selecting the desired option,it will
// change button value to selected value
onChanged: (String? newValue) {
setState(() {
dropdownSearchType = newValue!;
});
},
),
),*/
Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Padding(padding: EdgeInsets.fromLTRB(10,10,0,0),
child: Text('Please select search option',style: TextStyle(color: Colors.red,fontWeight: FontWeight.bold,fontSize: 16),),),
Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Expanded(
child: RadioListTile(
title: Text("Problem", style: TextStyle(fontSize: 10)),
value: "problem",
groupValue: searchBy,
activeColor: primaryColor,
onChanged: (value) {
setState(() {
searchBy = value.toString();
});
},
),
),
Expanded(
child: RadioListTile(
title: Text(
"Doctor",
style: TextStyle(fontSize: 10),
),
value: "doctor",
groupValue: searchBy,
activeColor: primaryColor,
onChanged: (value) {
setState(() {
searchBy = value.toString();
});
},
),
),
Expanded(
child: RadioListTile(
title:
Text("Date", style: TextStyle(fontSize: 10)),
value: "date",
groupValue: searchBy,
activeColor: primaryColor,
onChanged: (value) {
setState(() {
searchBy = value.toString();
});
},
),
),
],
),
],
)
),
Visibility(
visible:searchBy.toString().toLowerCase()=='problem' ,
child: Container(
height: MediaQuery.of(context).size.height * .07,
padding: EdgeInsets.all(5),
child: Center(child: TextField(
cursorColor: primaryColor,
controller: searchController,
onChanged: (string) {
if(string.length>=1){
getRecordsByProblemName(string);
}
else{
getAllRecords();
}
},
decoration: InputDecoration(
prefixIcon: Icon(
Icons.search,
color: primaryColor,
),
/*suffixIcon: Icon(
Icons.clear,
color: greyColor,
),*/
suffixIcon: searchController.text!=''?IconButton(
icon: Icon(
Icons.clear,
color: Colors.red,
),
onPressed: () {
setState(() {
searchController.text='';
});
getAllRecords();
},
):IconButton(
icon: Icon(
Icons.clear,
color: Colors.transparent,
),
onPressed: () {
},
),
border: OutlineInputBorder(
borderSide: BorderSide(color: primaryColor),
borderRadius: BorderRadius.circular(30),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: primaryColor),
borderRadius: BorderRadius.circular(30),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: primaryColor),
borderRadius: BorderRadius.circular(30),
),
//labelText: 'Search by phone number',
hintText: 'Search by problem',
labelStyle: TextStyle(
color: greyColor, //<-- SEE HERE
),
),
),)
),),
Visibility(
visible:searchBy.toString().toLowerCase()=='doctor' ,
child: Container(
height: MediaQuery.of(context).size.height * .07,
padding: EdgeInsets.all(5),
child: Center(child: TextField(
cursorColor: primaryColor,
controller: searchController,
onChanged: (string) {
if(string.length>=1){
getRecordsByDoctorName(string);
}
else{
getAllRecords();
}
},
decoration: InputDecoration(
prefixIcon: Icon(
Icons.search,
color: primaryColor,
),
/*suffixIcon: Icon(
Icons.clear,
color: greyColor,
),*/
suffixIcon: searchController.text!=''?IconButton(
icon: Icon(
Icons.clear,
color: Colors.red,
),
onPressed: () {
setState(() {
searchController.text='';
});
getAllRecords();
},
):IconButton(
icon: Icon(
Icons.clear,
color: Colors.transparent,
),
onPressed: () {
},
),
border: OutlineInputBorder(
borderSide: BorderSide(color: primaryColor),
borderRadius: BorderRadius.circular(30),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: primaryColor),
borderRadius: BorderRadius.circular(30),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: primaryColor),
borderRadius: BorderRadius.circular(30),
),
//labelText: 'Search by phone number',
hintText: 'Search by doctor',
labelStyle: TextStyle(
color: greyColor, //<-- SEE HERE
),
),
),)
),),
Visibility(
visible:searchBy.toString().toLowerCase()=='date',
child: Container(
//height: 60,
padding: EdgeInsets.all(5),
child: Row(
children: [
Expanded(
child: TextField(
cursorColor: primaryColor,
controller: fromdateController,
onChanged: (string) {
if(string.length>=1){
//getRecordsByDate(string);
}
else{
getAllRecords();
}
},
onTap: () async {
DateTime? pickedDate = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(1950),
lastDate: DateTime.now(),
builder: (BuildContext context, Widget? child) {
return Theme(
data: ThemeData.dark().copyWith(
colorScheme: ColorScheme.dark(
primary: buttonColors,
onPrimary: Colors.white,
surface: buttonColors,
onSurface: Colors.white,
),
dialogBackgroundColor: primaryColor,
),
child: child!,
);
},
);
if (pickedDate != null) {
print(pickedDate); //pickedDate output format => 2021-03-10 00:00:00.000
String formattedDate = DateFormat('dd-MM-yyyy').format(pickedDate);
print(formattedDate); //formatted date output using intl package => 2021-03-16
setState(() {
fromDate=pickedDate;
fromdateController.text = formattedDate; //set output date to TextField value.
});
getRecordsByDateRange(fromdateController.text,todateController.text);
} else {}
},
decoration: InputDecoration(
prefixIcon: Icon(
Icons.calendar_month,
color: primaryColor,
),
suffixIcon: fromdateController.text!=''?IconButton(
icon: Icon(
Icons.clear,
color: Colors.red,
),
onPressed: () {
setState(() {
fromdateController.text='';
});
getAllRecords();
},
):IconButton(
icon: Icon(
Icons.clear,
color: Colors.transparent,
),
onPressed: () {
},
),
border: OutlineInputBorder(
borderSide: BorderSide(color: primaryColor),
borderRadius: BorderRadius.circular(30),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: primaryColor),
borderRadius: BorderRadius.circular(30),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: primaryColor),
borderRadius: BorderRadius.circular(30),
),
//labelText: 'Search by phone number',
hintText: 'From date',
labelStyle: TextStyle(
color: greyColor, //<-- SEE HERE
),
),
),
),
SizedBox(width: 5),
Expanded(
child: TextField(
cursorColor: primaryColor,
controller: todateController,
onChanged: (string) {
if(string.length>=1){
//getRecordsByDate(string);
}
else{
getAllRecords();
}
},
onTap: () async {
DateTime? pickedDate = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: fromDate,
lastDate: DateTime.now(),
builder: (BuildContext context, Widget? child) {
return Theme(
data: ThemeData.dark().copyWith(
colorScheme: ColorScheme.dark(
primary: buttonColors,
onPrimary: Colors.white,
surface: buttonColors,
onSurface: Colors.white,
),
dialogBackgroundColor: primaryColor,
),
child: child!,
);
},
);
if (pickedDate != null) {
print(
pickedDate); //pickedDate output format => 2021-03-10 00:00:00.000
String formattedDate =
DateFormat('dd-MM-yyyy').format(pickedDate);
print(
formattedDate); //formatted date output using intl package => 2021-03-16
setState(() {
todateController.text = formattedDate; //set output date to TextField value.
});
getRecordsByDateRange(fromdateController.text,todateController.text);
} else {}
},
decoration: InputDecoration(
prefixIcon: Icon(
Icons.calendar_month,
color: primaryColor,
),
suffixIcon: todateController.text!=''?IconButton(
icon: Icon(
Icons.clear,
color: Colors.red,
),
onPressed: () {
setState(() {
todateController.text='';
});
getAllRecords();
},
):IconButton(
icon: Icon(
Icons.clear,
color: Colors.transparent,
),
onPressed: () {
},
),
border: OutlineInputBorder(
borderSide: BorderSide(color: primaryColor),
borderRadius: BorderRadius.circular(30),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: primaryColor),
borderRadius: BorderRadius.circular(30),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: primaryColor),
borderRadius: BorderRadius.circular(30),
),
//labelText: 'Search by phone number',
hintText: 'To date',
labelStyle: TextStyle(
color: greyColor, //<-- SEE HERE
),
),
),
),
SizedBox(width: 5),
],
),
),),
/*Visibility(
visible:searchBy.toString().toLowerCase()=='date' ,
child: Container(
height: MediaQuery.of(context).size.height * .07,
padding: EdgeInsets.all(5),
child: Center(child: TextField(
cursorColor: primaryColor,
controller: searchController,
onChanged: (string) {
if(string.length>=1){
getRecordsByDate(string);
}
else{
getAllRecords();
}
},
onTap: () async {
DateTime? pickedDate = await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(1950),
lastDate: DateTime.now(),
builder: (BuildContext context, Widget? child) {
return Theme(
data: ThemeData.dark().copyWith(
colorScheme: ColorScheme.dark(
primary: buttonColors,
onPrimary: Colors.white,
surface: buttonColors,
onSurface: Colors.white,
),
dialogBackgroundColor: primaryColor,
),
child: child!,
);
},
);
if (pickedDate != null) {
print(
pickedDate); //pickedDate output format => 2021-03-10 00:00:00.000
String formattedDate =
DateFormat('dd-MM-yyyy').format(pickedDate);
print(
formattedDate); //formatted date output using intl package => 2021-03-16
setState(() {
searchController.text = formattedDate; //set output date to TextField value.
});
getRecordsByDate(searchController.text);
} else {}
},
decoration: InputDecoration(
prefixIcon: Icon(
Icons.search,
color: primaryColor,
),
suffixIcon: searchController.text!=''?IconButton(
icon: Icon(
Icons.clear,
color: Colors.red,
),
onPressed: () {
setState(() {
searchController.text='';
});
getAllRecords();
},
):IconButton(
icon: Icon(
Icons.clear,
color: Colors.transparent,
),
onPressed: () {
},
),
border: OutlineInputBorder(
borderSide: BorderSide(color: primaryColor),
borderRadius: BorderRadius.circular(30),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: primaryColor),
borderRadius: BorderRadius.circular(30),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: primaryColor),
borderRadius: BorderRadius.circular(30),
),
//labelText: 'Search by phone number',
hintText: 'Search by date',
labelStyle: TextStyle(
color: greyColor, //<-- SEE HERE
),
),
),)
),
),*/
Expanded(child: _filtereddata()),
]);
}
else{
return Center(
child: Padding(
padding: EdgeInsets.fromLTRB(0, 40, 0, 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(height: MediaQuery.of(context).size.height * .25,),
Text('No Records found related to selected patient'),
SizedBox(
height: 20,
),
CircleAvatar(
backgroundColor: primaryColor,
radius: 40,
child: IconButton(
iconSize: 40,
icon: const Icon(
Icons.info,
color: Colors.white,
),
onPressed: () async {
/*Navigator.push(context, MaterialPageRoute(builder: (context) => AddReports())).then((value) {
getAllRecords();
});*/
},
),
)
],
),
)
);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppSettings.appBar('Records'),
body: isReportsDataLoading?Center(
child: CircularProgressIndicator(
color: primaryColor,
strokeWidth: 5.0,
),
): _allreports(),
);
}
}
class OtpInput extends StatelessWidget {
final TextEditingController controller;
final bool autoFocus;
const OtpInput(this.controller, this.autoFocus, {Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return SizedBox(
height: 60,
width: 50,
child: TextField(
autofocus: autoFocus,
textAlign: TextAlign.center,
keyboardType: TextInputType.number,
controller: controller,
maxLength: 1,
cursorColor: Theme.of(context).primaryColor,
decoration: const InputDecoration(
filled: true,
fillColor: Colors.white,
border: OutlineInputBorder(borderSide: BorderSide(color: primaryColor)),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: primaryColor),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: primaryColor),
),
counterText: '',
hintStyle: TextStyle(color: Colors.black, fontSize: 20.0)),
onChanged: (value) {
if (value.length == 1) {
FocusScope.of(context).nextFocus();
}
},
),
);
}
}