Merge branch 'dev_sultan'
# Conflicts: # assets/langs/ar-SA.json # assets/langs/en-US.json # lib/generated/locale_keys.g.dartpull/13/head
commit
cce7c7166d
@ -0,0 +1,116 @@
|
||||
import 'package:easy_localization/easy_localization.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hmg_patient_app_new/core/app_assets.dart';
|
||||
import 'package:hmg_patient_app_new/core/app_export.dart';
|
||||
import 'package:hmg_patient_app_new/extensions/string_extensions.dart';
|
||||
import 'package:hmg_patient_app_new/generated/locale_keys.g.dart';
|
||||
import 'package:hmg_patient_app_new/theme/colors.dart';
|
||||
import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart';
|
||||
import 'package:hmg_patient_app_new/widgets/input_widget.dart';
|
||||
import 'package:sizer/sizer.dart';
|
||||
|
||||
class SearchLabResultsContent extends StatelessWidget {
|
||||
const SearchLabResultsContent({super.key});
|
||||
|
||||
final List<String> _chipLabels = const [
|
||||
"Blood Test",
|
||||
"X-Ray",
|
||||
"MRI Scan",
|
||||
"CT Scan",
|
||||
"Ultrasound",
|
||||
"Urine Test",
|
||||
"Allergy Test",
|
||||
"Cholesterol Test",
|
||||
"Diabetes Test",
|
||||
"Thyroid Test",
|
||||
];
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
TextInputWidget(
|
||||
labelText:"Search lab results",
|
||||
hintText: "Type test name",
|
||||
controller: TextEditingController(),
|
||||
isEnable: true,
|
||||
prefix: null,
|
||||
autoFocus: true,
|
||||
isBorderAllowed: false,
|
||||
padding: EdgeInsets.symmetric(vertical:ResponsiveExtension(10).h, horizontal: ResponsiveExtension(15).h),
|
||||
|
||||
),
|
||||
SizedBox(height: ResponsiveExtension(20).h),
|
||||
"Suggestions".toText16(isBold: true),
|
||||
const SizedBox(height: 12),
|
||||
],
|
||||
),
|
||||
),
|
||||
Expanded(
|
||||
child: SingleChildScrollView(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||
child: Wrap(
|
||||
alignment: WrapAlignment.start,
|
||||
spacing: 10,
|
||||
runSpacing: 10,
|
||||
children: _chipLabels
|
||||
.map((label) => SuggestionChip(
|
||||
label: label,
|
||||
onTap: () {},
|
||||
))
|
||||
.toList(),
|
||||
),
|
||||
),
|
||||
),
|
||||
Container(
|
||||
color: Colors.white,
|
||||
padding: EdgeInsets.all(ResponsiveExtension(20).h),
|
||||
child: CustomButton(
|
||||
text: LocaleKeys.search.tr(),
|
||||
icon: AppAssets.search_icon,
|
||||
iconColor: Colors.white,
|
||||
onPressed: () => Navigator.pop(context),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class SuggestionChip extends StatelessWidget {
|
||||
final String label;
|
||||
final bool isSelected;
|
||||
final VoidCallback? onTap;
|
||||
|
||||
const SuggestionChip({
|
||||
super.key,
|
||||
required this.label,
|
||||
this.isSelected = false,
|
||||
this.onTap,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return GestureDetector(
|
||||
onTap: onTap, // optional tap callback
|
||||
child: Container(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 8),
|
||||
decoration: BoxDecoration(
|
||||
color: isSelected ? AppColors.primaryRedColor : AppColors.whiteColor,
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
),
|
||||
child: label.toText12(
|
||||
color: isSelected ? Colors.white : Colors.black87,
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,82 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hmg_patient_app_new/core/app_assets.dart';
|
||||
import 'package:hmg_patient_app_new/core/app_export.dart';
|
||||
import 'package:hmg_patient_app_new/core/utils/utils.dart';
|
||||
import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
|
||||
import 'package:hmg_patient_app_new/presentation/lab/search_lab_report.dart';
|
||||
import 'package:hmg_patient_app_new/theme/colors.dart';
|
||||
|
||||
void showCommonBottomSheet(BuildContext context, {required Widget child, required VoidCallback callBackFunc, String? title, required double height, bool isCloseButtonVisible = true}) {
|
||||
showModalBottomSheet<String>(
|
||||
context: context,
|
||||
isScrollControlled: true,
|
||||
backgroundColor: AppColors.scaffoldBgColor,
|
||||
builder: (BuildContext context) {
|
||||
return Container(
|
||||
height: height,
|
||||
decoration: const BoxDecoration(
|
||||
borderRadius: BorderRadius.vertical(top: Radius.circular(20)),
|
||||
),
|
||||
child: ButtonSheetContent(
|
||||
title: title!,
|
||||
isCloseButtonVisible: isCloseButtonVisible,
|
||||
child: child,
|
||||
),
|
||||
);
|
||||
}).then((value) {
|
||||
callBackFunc();
|
||||
});
|
||||
}
|
||||
|
||||
class ButtonSheetContent extends StatelessWidget {
|
||||
final Widget child;
|
||||
final String title;
|
||||
final bool isCloseButtonVisible;
|
||||
|
||||
const ButtonSheetContent({super.key, required this.child, required this.isCloseButtonVisible, required this.title});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
SizedBox(height: 20.h,),
|
||||
Center(
|
||||
child: Container(
|
||||
margin: const EdgeInsets.only(top: 18, bottom: 12),
|
||||
height: 4,
|
||||
width: 40.h,
|
||||
decoration: BoxDecoration(
|
||||
color: Colors.grey[400],
|
||||
borderRadius: BorderRadius.circular(2),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
// Close button
|
||||
isCloseButtonVisible
|
||||
? Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16), child: Utils.buildSvgWithAssets( icon: AppAssets.closeBottomNav,
|
||||
width: 32,
|
||||
height: 32).onPress((){
|
||||
Navigator.of(context).pop();
|
||||
}),
|
||||
)
|
||||
: SizedBox(),
|
||||
|
||||
SizedBox(height: 20,),
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16),
|
||||
child: Text(
|
||||
title,
|
||||
style: TextStyle(fontSize: 27.h, fontWeight: FontWeight.bold),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
|
||||
Expanded(child: child)
|
||||
],
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue