131 lines
3.7 KiB
Dart
131 lines
3.7 KiB
Dart
import 'package:flutter/cupertino.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import 'package:remever/common/resources.dart';
|
|
import 'package:remever/common/widgets/typography.dart';
|
|
import 'package:remever/common/widgets/wspace.dart';
|
|
import 'package:remever/components/extensions/context.dart';
|
|
import 'package:remever/gen/assets.gen.dart';
|
|
import 'package:remever/screens/settings/cubit/settings_cubit.dart';
|
|
import 'package:remever/common/functions.dart';
|
|
|
|
class ProfileSettingsState extends StatelessWidget {
|
|
const ProfileSettingsState({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
backgroundColor: AppColors.bg,
|
|
appBar: _buildAppBar(context),
|
|
body: Padding(
|
|
padding: EdgeInsets.all(16.r),
|
|
child: Container(
|
|
width: double.infinity,
|
|
height: 410.h,
|
|
decoration: BoxDecoration(
|
|
color: AppColors.white,
|
|
borderRadius: BorderRadius.circular(12.r),
|
|
),
|
|
child: Column(
|
|
children: [
|
|
HSpace(32),
|
|
_buildAvatar(),
|
|
HSpace(12),
|
|
_buildInfoLine(
|
|
context,
|
|
Assets.icons.settingsName,
|
|
'Антон Городецкий',
|
|
Colors.black,
|
|
() {},
|
|
),
|
|
_buildDivider(),
|
|
_buildInfoLine(
|
|
context,
|
|
Assets.icons.settingsMail,
|
|
'anton.gorod@gmail.com',
|
|
Colors.black,
|
|
() {},
|
|
),
|
|
_buildDivider(),
|
|
_buildInfoLine(
|
|
context,
|
|
Assets.icons.settingsPhone,
|
|
'+7 900 123 45 67',
|
|
Colors.black,
|
|
() {},
|
|
),
|
|
_buildDivider(thickness: 3),
|
|
_buildInfoLine(
|
|
context,
|
|
Assets.icons.settingsTrash,
|
|
'Удалить профиль',
|
|
AppColors.danger,
|
|
() {},
|
|
),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
/// AppBar экрана профиля
|
|
AppBar _buildAppBar(BuildContext context) {
|
|
return AppBar(
|
|
toolbarHeight: 66.h,
|
|
backgroundColor: AppColors.white,
|
|
shadowColor: Colors.transparent,
|
|
centerTitle: true,
|
|
title: AppTypography('Профиль', type: SemiBold20px()),
|
|
leading: IconButton(
|
|
onPressed: () => context.read<SettingsCubit>().toInitialState(),
|
|
icon: const Icon(CupertinoIcons.left_chevron),
|
|
color: Colors.black,
|
|
),
|
|
actions: [
|
|
IconButton(
|
|
onPressed: () => showInfoToast('Тут будет выход'),
|
|
icon: Assets.icons.settingsExit.image(height: 24.h, width: 24.w),
|
|
color: Colors.black,
|
|
),
|
|
],
|
|
);
|
|
}
|
|
|
|
/// Аватар пользователя
|
|
Widget _buildAvatar() {
|
|
return CircleAvatar(
|
|
backgroundImage: Assets.images.imgCard.provider(),
|
|
radius: 82.r,
|
|
);
|
|
}
|
|
|
|
/// Общий элемент информации
|
|
Widget _buildInfoLine(
|
|
BuildContext context,
|
|
AssetGenImage icon,
|
|
String title,
|
|
Color color,
|
|
void Function()? onTap,
|
|
) {
|
|
return GestureDetector(
|
|
onTap: onTap,
|
|
child: Padding(
|
|
padding: EdgeInsets.all(16.r),
|
|
child: Row(
|
|
children: [
|
|
icon.image(height: 20.h, width: 20.w),
|
|
WSpace(12),
|
|
AppTypography(title, type: Medium16px(), color: color),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
/// Переиспользуемый разделитель
|
|
Widget _buildDivider({double thickness = 1}) {
|
|
return Divider(height: 1, thickness: thickness);
|
|
}
|
|
}
|