silent login fix
parent
449c693fdb
commit
afe169d2d9
@ -0,0 +1,259 @@
|
||||
import 'package:hmg_patient_app_new/core/utils/date_util.dart';
|
||||
|
||||
class VitalSignResModel {
|
||||
var transNo;
|
||||
var projectID;
|
||||
var weightKg;
|
||||
var heightCm;
|
||||
var temperatureCelcius;
|
||||
var pulseBeatPerMinute;
|
||||
var respirationBeatPerMinute;
|
||||
var bloodPressureLower;
|
||||
var bloodPressureHigher;
|
||||
var sAO2;
|
||||
var fIO2;
|
||||
var painScore;
|
||||
var bodyMassIndex;
|
||||
var headCircumCm;
|
||||
var leanBodyWeightLbs;
|
||||
var idealBodyWeightLbs;
|
||||
var temperatureCelciusMethod;
|
||||
var pulseRhythm;
|
||||
var respirationPattern;
|
||||
var bloodPressureCuffLocation;
|
||||
var bloodPressureCuffSize;
|
||||
var bloodPressurePatientPosition;
|
||||
var painLocation;
|
||||
var painDuration;
|
||||
var painCharacter;
|
||||
var painFrequency;
|
||||
bool? isPainManagementDone;
|
||||
var status;
|
||||
bool? isVitalsRequired;
|
||||
var patientID;
|
||||
var createdOn;
|
||||
var doctorID;
|
||||
var clinicID;
|
||||
var triageCategory;
|
||||
var gCScore;
|
||||
var lineItemNo;
|
||||
DateTime? vitalSignDate;
|
||||
var actualTimeTaken;
|
||||
var sugarLevel;
|
||||
var fBS;
|
||||
var rBS;
|
||||
var observationType;
|
||||
var heartRate;
|
||||
var muscleTone;
|
||||
var reflexIrritability;
|
||||
var bodyColor;
|
||||
var isFirstAssessment;
|
||||
var dateofBirth;
|
||||
var timeOfBirth;
|
||||
var bloodPressure;
|
||||
var bloodPressureCuffLocationDesc;
|
||||
var bloodPressureCuffSizeDesc;
|
||||
var bloodPressurePatientPositionDesc;
|
||||
var clinicName;
|
||||
var doctorImageURL;
|
||||
var doctorName;
|
||||
var painScoreDesc;
|
||||
var pulseRhythmDesc;
|
||||
var respirationPatternDesc;
|
||||
var temperatureCelciusMethodDesc;
|
||||
var time;
|
||||
|
||||
VitalSignResModel(
|
||||
{this.transNo,
|
||||
this.projectID,
|
||||
this.weightKg,
|
||||
this.heightCm,
|
||||
this.temperatureCelcius,
|
||||
this.pulseBeatPerMinute,
|
||||
this.respirationBeatPerMinute,
|
||||
this.bloodPressureLower,
|
||||
this.bloodPressureHigher,
|
||||
this.sAO2,
|
||||
this.fIO2,
|
||||
this.painScore,
|
||||
this.bodyMassIndex,
|
||||
this.headCircumCm,
|
||||
this.leanBodyWeightLbs,
|
||||
this.idealBodyWeightLbs,
|
||||
this.temperatureCelciusMethod,
|
||||
this.pulseRhythm,
|
||||
this.respirationPattern,
|
||||
this.bloodPressureCuffLocation,
|
||||
this.bloodPressureCuffSize,
|
||||
this.bloodPressurePatientPosition,
|
||||
this.painLocation,
|
||||
this.painDuration,
|
||||
this.painCharacter,
|
||||
this.painFrequency,
|
||||
this.isPainManagementDone,
|
||||
this.status,
|
||||
this.isVitalsRequired,
|
||||
this.patientID,
|
||||
this.createdOn,
|
||||
this.doctorID,
|
||||
this.clinicID,
|
||||
this.triageCategory,
|
||||
this.gCScore,
|
||||
this.lineItemNo,
|
||||
this.vitalSignDate,
|
||||
this.actualTimeTaken,
|
||||
this.sugarLevel,
|
||||
this.fBS,
|
||||
this.rBS,
|
||||
this.observationType,
|
||||
this.heartRate,
|
||||
this.muscleTone,
|
||||
this.reflexIrritability,
|
||||
this.bodyColor,
|
||||
this.isFirstAssessment,
|
||||
this.dateofBirth,
|
||||
this.timeOfBirth,
|
||||
this.bloodPressure,
|
||||
this.bloodPressureCuffLocationDesc,
|
||||
this.bloodPressureCuffSizeDesc,
|
||||
this.bloodPressurePatientPositionDesc,
|
||||
this.clinicName,
|
||||
this.doctorImageURL,
|
||||
this.doctorName,
|
||||
this.painScoreDesc,
|
||||
this.pulseRhythmDesc,
|
||||
this.respirationPatternDesc,
|
||||
this.temperatureCelciusMethodDesc,
|
||||
this.time});
|
||||
|
||||
VitalSignResModel.fromJson(Map<String, dynamic> json) {
|
||||
transNo = json['TransNo'];
|
||||
projectID = json['ProjectID'];
|
||||
weightKg = json['WeightKg'];
|
||||
heightCm = json['HeightCm'];
|
||||
temperatureCelcius = json['TemperatureCelcius'];
|
||||
pulseBeatPerMinute = json['PulseBeatPerMinute'];
|
||||
respirationBeatPerMinute = json['RespirationBeatPerMinute'];
|
||||
bloodPressureLower = json['BloodPressureLower'];
|
||||
bloodPressureHigher = json['BloodPressureHigher'];
|
||||
sAO2 = json['SAO2'];
|
||||
fIO2 = json['FIO2'];
|
||||
painScore = json['PainScore'];
|
||||
bodyMassIndex = json['BodyMassIndex'];
|
||||
headCircumCm = json['HeadCircumCm'];
|
||||
leanBodyWeightLbs = json['LeanBodyWeightLbs'];
|
||||
idealBodyWeightLbs = json['IdealBodyWeightLbs'];
|
||||
temperatureCelciusMethod = json['TemperatureCelciusMethod'];
|
||||
pulseRhythm = json['PulseRhythm'];
|
||||
respirationPattern = json['RespirationPattern'];
|
||||
bloodPressureCuffLocation = json['BloodPressureCuffLocation'];
|
||||
bloodPressureCuffSize = json['BloodPressureCuffSize'];
|
||||
bloodPressurePatientPosition = json['BloodPressurePatientPosition'];
|
||||
painLocation = json['PainLocation'];
|
||||
painDuration = json['PainDuration'];
|
||||
painCharacter = json['PainCharacter'];
|
||||
painFrequency = json['PainFrequency'];
|
||||
isPainManagementDone = json['IsPainManagementDone'];
|
||||
status = json['Status'];
|
||||
isVitalsRequired = json['IsVitalsRequired'];
|
||||
patientID = json['PatientID'];
|
||||
createdOn = json['CreatedOn'];
|
||||
doctorID = json['DoctorID'];
|
||||
clinicID = json['ClinicID'];
|
||||
triageCategory = json['TriageCategory'];
|
||||
gCScore = json['GCScore'];
|
||||
lineItemNo = json['LineItemNo'];
|
||||
vitalSignDate = DateUtil.convertStringToDate(json['CreatedOn']);
|
||||
actualTimeTaken = json['ActualTimeTaken'];
|
||||
sugarLevel = json['SugarLevel'];
|
||||
fBS = json['FBS'];
|
||||
rBS = json['RBS'];
|
||||
observationType = json['ObservationType'];
|
||||
heartRate = json['HeartRate'];
|
||||
muscleTone = json['MuscleTone'];
|
||||
reflexIrritability = json['ReflexIrritability'];
|
||||
bodyColor = json['BodyColor'];
|
||||
isFirstAssessment = json['IsFirstAssessment'];
|
||||
dateofBirth = json['DateofBirth'];
|
||||
timeOfBirth = json['TimeOfBirth'];
|
||||
bloodPressure = json['BloodPressure'];
|
||||
bloodPressureCuffLocationDesc = json['BloodPressureCuffLocationDesc'];
|
||||
bloodPressureCuffSizeDesc = json['BloodPressureCuffSizeDesc'];
|
||||
bloodPressurePatientPositionDesc = json['BloodPressurePatientPositionDesc'];
|
||||
clinicName = json['ClinicName'];
|
||||
doctorImageURL = json['DoctorImageURL'];
|
||||
doctorName = json['DoctorName'];
|
||||
painScoreDesc = json['PainScoreDesc'];
|
||||
pulseRhythmDesc = json['PulseRhythmDesc'];
|
||||
respirationPatternDesc = json['RespirationPatternDesc'];
|
||||
temperatureCelciusMethodDesc = json['TemperatureCelciusMethodDesc'];
|
||||
time = json['Time'];
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
final Map<String, dynamic> data = new Map<String, dynamic>();
|
||||
data['TransNo'] = this.transNo;
|
||||
data['ProjectID'] = this.projectID;
|
||||
data['WeightKg'] = this.weightKg;
|
||||
data['HeightCm'] = this.heightCm;
|
||||
data['TemperatureCelcius'] = this.temperatureCelcius;
|
||||
data['PulseBeatPerMinute'] = this.pulseBeatPerMinute;
|
||||
data['RespirationBeatPerMinute'] = this.respirationBeatPerMinute;
|
||||
data['BloodPressureLower'] = this.bloodPressureLower;
|
||||
data['BloodPressureHigher'] = this.bloodPressureHigher;
|
||||
data['SAO2'] = this.sAO2;
|
||||
data['FIO2'] = this.fIO2;
|
||||
data['PainScore'] = this.painScore;
|
||||
data['BodyMassIndex'] = this.bodyMassIndex;
|
||||
data['HeadCircumCm'] = this.headCircumCm;
|
||||
data['LeanBodyWeightLbs'] = this.leanBodyWeightLbs;
|
||||
data['IdealBodyWeightLbs'] = this.idealBodyWeightLbs;
|
||||
data['TemperatureCelciusMethod'] = this.temperatureCelciusMethod;
|
||||
data['PulseRhythm'] = this.pulseRhythm;
|
||||
data['RespirationPattern'] = this.respirationPattern;
|
||||
data['BloodPressureCuffLocation'] = this.bloodPressureCuffLocation;
|
||||
data['BloodPressureCuffSize'] = this.bloodPressureCuffSize;
|
||||
data['BloodPressurePatientPosition'] = this.bloodPressurePatientPosition;
|
||||
data['PainLocation'] = this.painLocation;
|
||||
data['PainDuration'] = this.painDuration;
|
||||
data['PainCharacter'] = this.painCharacter;
|
||||
data['PainFrequency'] = this.painFrequency;
|
||||
data['IsPainManagementDone'] = this.isPainManagementDone;
|
||||
data['Status'] = this.status;
|
||||
data['IsVitalsRequired'] = this.isVitalsRequired;
|
||||
data['PatientID'] = this.patientID;
|
||||
data['CreatedOn'] = this.createdOn;
|
||||
data['DoctorID'] = this.doctorID;
|
||||
data['ClinicID'] = this.clinicID;
|
||||
data['TriageCategory'] = this.triageCategory;
|
||||
data['GCScore'] = this.gCScore;
|
||||
data['LineItemNo'] = this.lineItemNo;
|
||||
data['VitalSignDate'] = this.vitalSignDate;
|
||||
data['ActualTimeTaken'] = this.actualTimeTaken;
|
||||
data['SugarLevel'] = this.sugarLevel;
|
||||
data['FBS'] = this.fBS;
|
||||
data['RBS'] = this.rBS;
|
||||
data['ObservationType'] = this.observationType;
|
||||
data['HeartRate'] = this.heartRate;
|
||||
data['MuscleTone'] = this.muscleTone;
|
||||
data['ReflexIrritability'] = this.reflexIrritability;
|
||||
data['BodyColor'] = this.bodyColor;
|
||||
data['IsFirstAssessment'] = this.isFirstAssessment;
|
||||
data['DateofBirth'] = this.dateofBirth;
|
||||
data['TimeOfBirth'] = this.timeOfBirth;
|
||||
data['BloodPressure'] = this.bloodPressure;
|
||||
data['BloodPressureCuffLocationDesc'] = this.bloodPressureCuffLocationDesc;
|
||||
data['BloodPressureCuffSizeDesc'] = this.bloodPressureCuffSizeDesc;
|
||||
data['BloodPressurePatientPositionDesc'] =
|
||||
this.bloodPressurePatientPositionDesc;
|
||||
data['ClinicName'] = this.clinicName;
|
||||
data['DoctorImageURL'] = this.doctorImageURL;
|
||||
data['DoctorName'] = this.doctorName;
|
||||
data['PainScoreDesc'] = this.painScoreDesc;
|
||||
data['PulseRhythmDesc'] = this.pulseRhythmDesc;
|
||||
data['RespirationPatternDesc'] = this.respirationPatternDesc;
|
||||
data['TemperatureCelciusMethodDesc'] = this.temperatureCelciusMethodDesc;
|
||||
data['Time'] = this.time;
|
||||
return data;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,308 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hmg_patient_app_new/core/app_assets.dart';
|
||||
import 'package:hmg_patient_app_new/core/utils/size_utils.dart';
|
||||
import 'package:hmg_patient_app_new/core/utils/utils.dart';
|
||||
import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
|
||||
import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
|
||||
import 'package:hmg_patient_app_new/features/hmg_services/hmg_services_view_model.dart';
|
||||
import 'package:hmg_patient_app_new/features/hmg_services/models/resq_models/vital_sign_respo_model.dart';
|
||||
import 'package:hmg_patient_app_new/theme/colors.dart';
|
||||
import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart';
|
||||
import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart';
|
||||
import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class VitalSignPage extends StatefulWidget {
|
||||
const VitalSignPage({super.key});
|
||||
|
||||
@override
|
||||
State<VitalSignPage> createState() => _VitalSignPageState();
|
||||
}
|
||||
|
||||
class _VitalSignPageState extends State<VitalSignPage> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
final HmgServicesViewModel hmgServicesViewModel = context.read<HmgServicesViewModel>();
|
||||
|
||||
scheduleMicrotask(() async {
|
||||
LoaderBottomSheet.showLoader(loadingText: 'Loading Vital Signs...');
|
||||
await hmgServicesViewModel.getPatientVitalSign(
|
||||
onSuccess: (_) {
|
||||
LoaderBottomSheet.hideLoader();
|
||||
},
|
||||
onError: (_) {
|
||||
LoaderBottomSheet.hideLoader();
|
||||
},
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: AppColors.bgScaffoldColor,
|
||||
body: CollapsingListView(
|
||||
title: 'Vital Signs',
|
||||
child: Consumer<HmgServicesViewModel>(
|
||||
builder: (context, viewModel, child) {
|
||||
|
||||
// Get the latest vital sign data (first item in the list)
|
||||
VitalSignResModel? latestVitalSign = viewModel.vitalSignList.isNotEmpty
|
||||
? viewModel.vitalSignList.first
|
||||
: null;
|
||||
|
||||
return SingleChildScrollView(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(height: 16.h),
|
||||
|
||||
// Main content with body image
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 24.h),
|
||||
child: Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
// Left side - Vital Sign Cards
|
||||
Expanded(
|
||||
child: Column(
|
||||
children: [
|
||||
// BMI Card
|
||||
_buildVitalSignCard(
|
||||
icon: AppAssets.activity,
|
||||
iconColor: AppColors.successColor,
|
||||
iconBgColor: AppColors.successColor.withValues(alpha: 0.1),
|
||||
label: 'BMI',
|
||||
value: latestVitalSign?.bodyMassIndex?.toString() ?? '--',
|
||||
unit: '',
|
||||
chipText: _getBMIStatus(latestVitalSign?.bodyMassIndex),
|
||||
chipBgColor: AppColors.successColor.withValues(alpha: 0.1),
|
||||
chipTextColor: AppColors.successColor,
|
||||
),
|
||||
SizedBox(height: 16.h),
|
||||
|
||||
// Height Card
|
||||
_buildVitalSignCard(
|
||||
icon: AppAssets.height,
|
||||
iconColor: AppColors.infoColor,
|
||||
iconBgColor: AppColors.infoColor.withValues(alpha: 0.1),
|
||||
label: 'Height',
|
||||
value: latestVitalSign?.heightCm?.toString() ?? '--',
|
||||
unit: 'cm',
|
||||
),
|
||||
SizedBox(height: 16.h),
|
||||
|
||||
// Weight Card
|
||||
_buildVitalSignCard(
|
||||
icon: AppAssets.weight,
|
||||
iconColor: AppColors.successColor,
|
||||
iconBgColor: AppColors.successColor.withValues(alpha: 0.1),
|
||||
label: 'Weight',
|
||||
value: latestVitalSign?.weightKg?.toString() ?? '--',
|
||||
unit: 'kg',
|
||||
chipText: 'Normal',
|
||||
chipBgColor: AppColors.successColor.withValues(alpha: 0.1),
|
||||
chipTextColor: AppColors.successColor,
|
||||
),
|
||||
SizedBox(height: 16.h),
|
||||
|
||||
// Blood Pressure Card
|
||||
_buildVitalSignCard(
|
||||
icon: AppAssets.activity,
|
||||
iconColor: AppColors.warningColor,
|
||||
iconBgColor: AppColors.warningColor.withValues(alpha: 0.1),
|
||||
label: 'Blood Pressure',
|
||||
value: latestVitalSign != null &&
|
||||
latestVitalSign.bloodPressureHigher != null &&
|
||||
latestVitalSign.bloodPressureLower != null
|
||||
? '${latestVitalSign.bloodPressureHigher}/${latestVitalSign.bloodPressureLower}'
|
||||
: '--',
|
||||
unit: '',
|
||||
),
|
||||
SizedBox(height: 16.h),
|
||||
|
||||
// Temperature Card
|
||||
_buildVitalSignCard(
|
||||
icon: AppAssets.activity,
|
||||
iconColor: AppColors.errorColor,
|
||||
iconBgColor: AppColors.errorColor.withValues(alpha: 0.1),
|
||||
label: 'Temperature',
|
||||
value: latestVitalSign?.temperatureCelcius?.toString() ?? '--',
|
||||
unit: '°C',
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
SizedBox(width: 16.h),
|
||||
|
||||
// Right side - Body Image and Heart Rate + Respiratory Rate
|
||||
Expanded(
|
||||
child: Column(
|
||||
children: [
|
||||
// Body anatomy image
|
||||
Container(
|
||||
height: 280.h,
|
||||
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
|
||||
color: AppColors.whiteColor,
|
||||
borderRadius: 20.h,
|
||||
hasShadow: true,
|
||||
),
|
||||
child: Center(
|
||||
child: Image.asset(
|
||||
AppAssets.fullBodyFront,
|
||||
height: 260.h,
|
||||
fit: BoxFit.contain,
|
||||
),
|
||||
),
|
||||
),
|
||||
SizedBox(height: 16.h),
|
||||
|
||||
// Heart Rate Card
|
||||
_buildVitalSignCard(
|
||||
icon: AppAssets.heart,
|
||||
iconColor: AppColors.errorColor,
|
||||
iconBgColor: AppColors.errorColor.withValues(alpha: 0.1),
|
||||
label: 'Heart Rate',
|
||||
value: latestVitalSign?.heartRate?.toString() ??
|
||||
latestVitalSign?.pulseBeatPerMinute?.toString() ?? '--',
|
||||
unit: 'bpm',
|
||||
chipText: 'Normal',
|
||||
chipBgColor: AppColors.successColor.withValues(alpha: 0.1),
|
||||
chipTextColor: AppColors.successColor,
|
||||
),
|
||||
SizedBox(height: 16.h),
|
||||
|
||||
// Respiratory rate Card
|
||||
_buildVitalSignCard(
|
||||
icon: AppAssets.activity,
|
||||
iconColor: AppColors.successColor,
|
||||
iconBgColor: AppColors.successColor.withValues(alpha: 0.1),
|
||||
label: 'Respiratory rate',
|
||||
value: latestVitalSign?.respirationBeatPerMinute?.toString() ?? '--',
|
||||
unit: 'bpm',
|
||||
chipText: 'Normal',
|
||||
chipBgColor: AppColors.successColor.withValues(alpha: 0.1),
|
||||
chipTextColor: AppColors.successColor,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
SizedBox(height: 60.h),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
String? _getBMIStatus(dynamic bmi) {
|
||||
if (bmi == null) return null;
|
||||
double bmiValue = double.tryParse(bmi.toString()) ?? 0;
|
||||
if (bmiValue < 18.5) return 'Underweight';
|
||||
if (bmiValue < 25) return 'Normal';
|
||||
if (bmiValue < 30) return 'Overweight';
|
||||
return 'Obese';
|
||||
}
|
||||
|
||||
Widget _buildVitalSignCard({
|
||||
required String icon,
|
||||
required Color iconColor,
|
||||
required Color iconBgColor,
|
||||
required String label,
|
||||
required String value,
|
||||
required String unit,
|
||||
String? chipText,
|
||||
Color? chipBgColor,
|
||||
Color? chipTextColor,
|
||||
}) {
|
||||
return Container(
|
||||
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
|
||||
color: AppColors.whiteColor,
|
||||
borderRadius: 20.h,
|
||||
hasShadow: true,
|
||||
),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.all(12.h),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
// Icon with background
|
||||
Container(
|
||||
padding: EdgeInsets.all(8.h),
|
||||
decoration: BoxDecoration(
|
||||
color: iconBgColor,
|
||||
borderRadius: BorderRadius.circular(12.r),
|
||||
),
|
||||
child: Utils.buildSvgWithAssets(
|
||||
icon: icon,
|
||||
width: 16.w,
|
||||
height: 16.h,
|
||||
iconColor: iconColor,
|
||||
fit: BoxFit.contain,
|
||||
),
|
||||
),
|
||||
SizedBox(width: 8.w),
|
||||
Expanded(
|
||||
child: label.toText10(
|
||||
color: AppColors.textColorLight,
|
||||
weight: FontWeight.w500,
|
||||
),
|
||||
),
|
||||
// Forward arrow
|
||||
Utils.buildSvgWithAssets(
|
||||
icon: AppAssets.arrow_forward,
|
||||
width: 16.w,
|
||||
height: 16.h,
|
||||
iconColor: AppColors.textColorLight,
|
||||
fit: BoxFit.contain,
|
||||
),
|
||||
],
|
||||
),
|
||||
SizedBox(height: 12.h),
|
||||
|
||||
// Value
|
||||
Row(
|
||||
crossAxisAlignment: CrossAxisAlignment.end,
|
||||
children: [
|
||||
value.toText18(
|
||||
isBold: true,
|
||||
color: AppColors.textColor,
|
||||
),
|
||||
if (unit.isNotEmpty) ...[
|
||||
SizedBox(width: 4.w),
|
||||
unit.toText12(
|
||||
color: AppColors.textColorLight,
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
|
||||
// Chip if available
|
||||
if (chipText != null) ...[
|
||||
SizedBox(height: 8.h),
|
||||
AppCustomChipWidget(
|
||||
labelText: chipText,
|
||||
backgroundColor: chipBgColor,
|
||||
textColor: chipTextColor,
|
||||
padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h),
|
||||
),
|
||||
],
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue