You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
174 lines
6.3 KiB
Dart
174 lines
6.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_swiper_view/flutter_swiper_view.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/string_extensions.dart';
|
|
import 'package:hmg_patient_app_new/extensions/widget_extensions.dart';
|
|
import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart';
|
|
import 'package:hmg_patient_app_new/presentation/lab/collapsing_list_view.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/chip/app_custom_chip_widget.dart';
|
|
import 'package:provider/provider.dart';
|
|
|
|
class ProfileSettings extends StatefulWidget {
|
|
ProfileSettings({Key? key}) : super(key: key);
|
|
|
|
@override
|
|
_ProfileSettingsState createState() {
|
|
return _ProfileSettingsState();
|
|
}
|
|
}
|
|
|
|
class _ProfileSettingsState extends State<ProfileSettings> {
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
super.dispose();
|
|
}
|
|
|
|
int length = 3;
|
|
final SwiperController _controller = SwiperController();
|
|
|
|
int _index = 0;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return CollapsingListView(
|
|
title: "Profile & Settings".needTranslation,
|
|
logout: () {},
|
|
isClose: true,
|
|
child: SingleChildScrollView(
|
|
padding: EdgeInsets.only(top: 24, bottom: 24),
|
|
physics: NeverScrollableScrollPhysics(),
|
|
child: Consumer<ProfileSettingsViewModel>(
|
|
builder: (context, model, child) {
|
|
return Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
Swiper(
|
|
itemCount: length,
|
|
layout: SwiperLayout.STACK,
|
|
loop: true,
|
|
itemWidth: MediaQuery.of(context).size.width - 42,
|
|
indicatorLayout: PageIndicatorLayout.COLOR,
|
|
axisDirection: AxisDirection.right,
|
|
controller: _controller,
|
|
itemHeight: 210 + 16,
|
|
pagination: const SwiperPagination(
|
|
alignment: Alignment.bottomCenter,
|
|
margin: EdgeInsets.only(top: 210 + 8 + 24),
|
|
builder: DotSwiperPaginationBuilder(color: Color(0xffD9D9D9), activeColor: AppColors.blackBgColor),
|
|
),
|
|
itemBuilder: (BuildContext context, int index) {
|
|
return FamilyCardWidget().paddingOnly(right: 16);
|
|
},
|
|
),
|
|
GridView(
|
|
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, childAspectRatio: 105 / 105, crossAxisSpacing: 9, mainAxisSpacing: 9),
|
|
physics: const NeverScrollableScrollPhysics(),
|
|
padding: const EdgeInsets.all(24),
|
|
shrinkWrap: true,
|
|
children: [
|
|
Container(
|
|
padding: EdgeInsets.all(16),
|
|
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
|
|
color: AppColors.whiteColor,
|
|
borderRadius: 20.h,
|
|
hasShadow: true,
|
|
),
|
|
child: Column(
|
|
children: [
|
|
Row(
|
|
children: [
|
|
Utils.buildSvgWithAssets(icon: AppAssets.wallet, width: 40.h, height: 40.h),
|
|
],
|
|
)
|
|
],
|
|
),
|
|
)
|
|
],
|
|
)
|
|
],
|
|
);
|
|
},
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|
|
|
|
class FamilyCardWidget extends StatelessWidget {
|
|
FamilyCardWidget();
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Container(
|
|
decoration: RoundedRectangleBorder().toSmoothCornerDecoration(
|
|
color: AppColors.whiteColor,
|
|
borderRadius: 20.h,
|
|
hasShadow: true,
|
|
),
|
|
child: Column(
|
|
children: [
|
|
Column(
|
|
spacing: 8.h,
|
|
children: [
|
|
Row(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
spacing: 8.h,
|
|
children: [
|
|
Image.asset(true ? AppAssets.male_img : AppAssets.femaleImg, width: 56.h, height: 56.h),
|
|
Column(
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
spacing: 0.h,
|
|
mainAxisSize: MainAxisSize.min,
|
|
children: [
|
|
"Mahmoud Shrouf Shrouf".toText18(isBold: true, weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1),
|
|
AppCustomChipWidget(
|
|
icon: AppAssets.file_icon,
|
|
labelText: "File no: 3423443",
|
|
iconSize: 14,
|
|
),
|
|
],
|
|
).expanded,
|
|
Icon(Icons.qr_code, size: 56)
|
|
],
|
|
).expanded,
|
|
SizedBox(
|
|
width: double.infinity,
|
|
child: Wrap(
|
|
alignment: WrapAlignment.start,
|
|
spacing: 8.h,
|
|
children: [
|
|
AppCustomChipWidget(labelText: "35 Years Old"),
|
|
AppCustomChipWidget(labelText: "Blood: A+"),
|
|
AppCustomChipWidget(
|
|
icon: AppAssets.insurance_active_icon,
|
|
labelText: "Insurance Active",
|
|
iconColor: AppColors.bgGreenColor,
|
|
iconSize: 14,
|
|
backgroundColor: AppColors.bgGreenColor.withValues(alpha: 0.15),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
],
|
|
).paddingOnly(top: 16, right: 16, left: 16, bottom: 12).expanded,
|
|
Divider(
|
|
height: 1,
|
|
thickness: 1,
|
|
color: Color(0x30D2D2D2),
|
|
),
|
|
CustomButton(icon: AppAssets.add_family, text: "Add a new family member", onPressed: () {}).paddingOnly(top: 12, right: 16, left: 16, bottom: 16),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|