Files
Remever/lib/screens/auth/screens/initial_auth.dart
2025-04-01 22:38:36 +03:00

100 lines
2.6 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Flutter imports:
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
// Project imports:
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/auth/cubit/auth_cubit.dart';
import 'package:remever/widgets/primary_button.dart';
///
/// Отрисовка инициализации авторизации
///
class InitialAuth extends StatelessWidget {
const InitialAuth({super.key});
// Константы для стилей и отступов
static final EdgeInsetsGeometry _padding = EdgeInsets.all(16).r;
static final _regular14 = Regular14px();
void _onEnterTap(BuildContext context) {
context.read<AuthCubit>().toEmailState();
}
void _onPolicyTap() {}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: AppColors.bg,
body: Padding(
padding: _padding,
child: SingleChildScrollView(
physics: BouncingScrollPhysics(),
child: Column(
children: <Widget>[
HSpace(148),
_buildLogo(),
_buildQuote(),
HSpace(245),
_buildLoginButton(context),
HSpace(28),
_buildPolicyLink(),
_buildBottomSpacing(),
],
),
),
),
);
}
Widget _buildLogo() {
return Assets.images.logo.image(width: 308.w, height: 100.h);
}
Widget _buildQuote() {
return Column(
children: <Widget>[
HSpace(16),
Assets.images.quote.image(width: 324.w, height: 64.h),
],
);
}
Widget _buildLoginButton(BuildContext context) {
return PrimaryButton(
onTap: () => _onEnterTap(context),
child: AppTypography(
'Войти по e-mail',
type: _regular14,
color: AppColors.white,
),
);
}
Widget _buildPolicyLink() {
return InkWell(
onTap: () => _onPolicyTap(),
child: AppTypography.rich(
'Отправляя данные, Вы подтверждаете согласие с ',
type: _regular14,
color: AppColors.disabled,
children: <TextSpan>[
TextSpan(
text: 'Политикой обработки персональных данных',
style: _regular14.style.copyWith(color: AppColors.primary),
),
],
),
);
}
Widget _buildBottomSpacing() {
return HSpace(40);
}
}