Files
Remever/lib/screens/settings/states/profile.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);
}
}