Compare commits
3 Commits
feature/li
...
look&feel
| Author | SHA1 | Date | |
|---|---|---|---|
| 094aad2d34 | |||
| d30c28f430 | |||
| 4be6a30a33 |
@@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:navigation/navigation.dart';
|
import 'package:navigation/navigation.dart';
|
||||||
import 'package:sf_localizations/sf_localizations.dart';
|
import 'package:sf_localizations/sf_localizations.dart';
|
||||||
|
import 'package:utils/utils.dart';
|
||||||
|
|
||||||
class RequestLinkPhoneScreen extends ConsumerWidget {
|
class RequestLinkPhoneScreen extends ConsumerWidget {
|
||||||
final NavigationContract navigationContract;
|
final NavigationContract navigationContract;
|
||||||
@@ -27,19 +28,22 @@ class RequestLinkPhoneScreen extends ConsumerWidget {
|
|||||||
Text(
|
Text(
|
||||||
context.translate(I18n.linkPhoneTitle),
|
context.translate(I18n.linkPhoneTitle),
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: const TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 30,
|
fontSize: SizeUtils.getByScreen(small: 30, big: 28, xl: 26),
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 24),
|
SizedBox(height: SizeUtils.getByScreen(small: 24, big: 22, xl: 20)),
|
||||||
Text(
|
Text(
|
||||||
context.translate(I18n.linkPhoneSubtitle),
|
context.translate(I18n.linkPhoneSubtitle),
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: const TextStyle(fontSize: 16, letterSpacing: 0),
|
style: TextStyle(
|
||||||
|
fontSize: SizeUtils.getByScreen(small: 16, big: 16, xl: 14),
|
||||||
|
letterSpacing: 0
|
||||||
),
|
),
|
||||||
const SizedBox(height: 48),
|
),
|
||||||
|
SizedBox(height: SizeUtils.getByScreen(small: 48, big: 46, xl: 44)),
|
||||||
|
|
||||||
Column(
|
Column(
|
||||||
spacing: 8,
|
spacing: 8,
|
||||||
@@ -89,7 +93,7 @@ class RequestLinkPhoneScreen extends ConsumerWidget {
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
||||||
const SizedBox(height: 24),
|
SizedBox(height: SizeUtils.getByScreen(small: 10, big: 10)),
|
||||||
|
|
||||||
PrimaryButton(
|
PrimaryButton(
|
||||||
onPressed: () async {
|
onPressed: () async {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:navigation/navigation.dart';
|
import 'package:navigation/navigation.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:sf_localizations/sf_localizations.dart';
|
import 'package:sf_localizations/sf_localizations.dart';
|
||||||
|
import 'package:utils/utils.dart';
|
||||||
|
|
||||||
class VerifyLinkPhoneCodeScreen extends ConsumerWidget {
|
class VerifyLinkPhoneCodeScreen extends ConsumerWidget {
|
||||||
final NavigationContract navigationContract;
|
final NavigationContract navigationContract;
|
||||||
@@ -34,30 +35,32 @@ class VerifyLinkPhoneCodeScreen extends ConsumerWidget {
|
|||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
context.translate(I18n.connect),
|
context.translate(I18n.connect),
|
||||||
style: TextStyle(fontWeight: FontWeight.bold, fontSize: 30),
|
style: TextStyle(fontWeight: FontWeight.bold, fontSize: SizeUtils.getByScreen(small: 30, big: 28)),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 24),
|
const SizedBox(height: 24),
|
||||||
Text.rich(
|
Text.rich(
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text: context.translate(I18n.verificationCodeSentTo),
|
text: context.translate(I18n.verificationCodeSentTo),
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: SizeUtils.getByScreen(small: 18, big: 15),
|
||||||
|
),
|
||||||
children: [
|
children: [
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text: '${viewState.dialCode}${viewState.phoneNumber}',
|
text: '${viewState.dialCode}${viewState.phoneNumber}',
|
||||||
style: const TextStyle(
|
style: TextStyle(
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
fontSize: 18,
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
),
|
),
|
||||||
const SizedBox(height: 48),
|
SizedBox(height: SizeUtils.getByScreen(small: 48, big: 42, xl: 36)),
|
||||||
Text(
|
Text(
|
||||||
context.translate(I18n.enterCodeHere),
|
context.translate(I18n.enterCodeHere),
|
||||||
style: TextStyle(fontSize: 16),
|
style: TextStyle(fontSize: 16),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 24),
|
SizedBox(height: SizeUtils.getByScreen(small: 24, big: 24, xl: 20)),
|
||||||
|
|
||||||
LinkPhoneCodeInput(
|
LinkPhoneCodeInput(
|
||||||
length: 6,
|
length: 6,
|
||||||
@@ -90,21 +93,22 @@ class VerifyLinkPhoneCodeScreen extends ConsumerWidget {
|
|||||||
},
|
},
|
||||||
text: context.translate(I18n.enter),
|
text: context.translate(I18n.enter),
|
||||||
color: theme.getColorFor(ThemeCode.buttonPrimary),
|
color: theme.getColorFor(ThemeCode.buttonPrimary),
|
||||||
|
size: SizeUtils.getByScreen(small: 18, big: 17, xl: 16),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 24),
|
const SizedBox(height: 24),
|
||||||
Text(
|
Text(
|
||||||
context.translate(I18n.didNotReceiveIt),
|
context.translate(I18n.didNotReceiveIt),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 18,
|
fontSize: SizeUtils.getByScreen(small: 18, big: 17, xl: 16),
|
||||||
letterSpacing: 0,
|
letterSpacing: 0,
|
||||||
height: 1.5,
|
height: SizeUtils.getByScreen(small: 1.5, big: 0),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 8),
|
SizedBox(height: SizeUtils.getByScreen(small: 8, big: 0)),
|
||||||
CustomTextButton(
|
CustomTextButton(
|
||||||
onPressed: () => navigationContract.goBack(),
|
onPressed: () => navigationContract.goBack(),
|
||||||
text: context.translate(I18n.tryAgain),
|
text: context.translate(I18n.tryAgain),
|
||||||
size: 18,
|
size: SizeUtils.getByScreen(small: 18, big: 17, xl: 16),
|
||||||
weight: FontWeight.w500,
|
weight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
import 'package:utils/utils.dart';
|
||||||
|
|
||||||
class LinkPhoneCodeInput extends StatefulWidget {
|
class LinkPhoneCodeInput extends StatefulWidget {
|
||||||
const LinkPhoneCodeInput({
|
const LinkPhoneCodeInput({
|
||||||
@@ -74,8 +75,9 @@ class _LinkPhoneCodeInputState extends State<LinkPhoneCodeInput> {
|
|||||||
decoration: const InputDecoration(
|
decoration: const InputDecoration(
|
||||||
hintText: '0',
|
hintText: '0',
|
||||||
counterText: '',
|
counterText: '',
|
||||||
border: OutlineInputBorder(),
|
border: OutlineInputBorder(borderRadius: BorderRadius.all(Radius.circular(14))),
|
||||||
),
|
),
|
||||||
|
style: TextStyle(fontSize: SizeUtils.getByScreen(small: 20, big: 22, xl: 17)),
|
||||||
maxLength: 1,
|
maxLength: 1,
|
||||||
onChanged: (value) => _onDigitChanged(i, value),
|
onChanged: (value) => _onDigitChanged(i, value),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:navigation/navigation.dart';
|
import 'package:navigation/navigation.dart';
|
||||||
import 'package:sf_localizations/sf_localizations.dart';
|
import 'package:sf_localizations/sf_localizations.dart';
|
||||||
|
import 'package:utils/utils.dart';
|
||||||
|
|
||||||
class LoginScreen extends ConsumerWidget {
|
class LoginScreen extends ConsumerWidget {
|
||||||
final NavigationContract navigationContract;
|
final NavigationContract navigationContract;
|
||||||
@@ -98,27 +99,28 @@ class LoginScreen extends ConsumerWidget {
|
|||||||
child: AbsorbPointer(
|
child: AbsorbPointer(
|
||||||
absorbing: isLoading,
|
absorbing: isLoading,
|
||||||
child: SingleChildScrollView(
|
child: SingleChildScrollView(
|
||||||
padding: EdgeInsets.symmetric(horizontal: 24),
|
padding: EdgeInsets.symmetric(horizontal: SizeUtils.getByScreen(small: 24, big: 24)),
|
||||||
child: Column(
|
child: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.stretch,
|
crossAxisAlignment: CrossAxisAlignment.stretch,
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
|
SizedBox(height: SizeUtils.getByScreen(small: 0, big: 30, xl: 44)),
|
||||||
_Header(theme: theme),
|
_Header(theme: theme),
|
||||||
SizedBox(height: 48),
|
SizedBox(height: SizeUtils.getByScreen(small: 26, big: 30, xl: 40)),
|
||||||
const _EmailSection(),
|
const _EmailSection(),
|
||||||
SizedBox(height: 24),
|
SizedBox(height: SizeUtils.getByScreen(small: 18, big: 24, xl: 20)),
|
||||||
_PasswordSection(onSubmitted: () => _onLogIn(context, ref)),
|
_PasswordSection(onSubmitted: () => _onLogIn(context, ref)),
|
||||||
SizedBox(height: 16),
|
|
||||||
_ForgotPassword(navigationContract: navigationContract),
|
_ForgotPassword(navigationContract: navigationContract),
|
||||||
SizedBox(height: 30),
|
SizedBox(height: SizeUtils.getByScreen(small: 0, big: 24, xl: 22)),
|
||||||
_SignInSection(
|
_SignInSection(
|
||||||
theme: theme,
|
theme: theme,
|
||||||
onSignIn: () => _onLogIn(context, ref),
|
onSignIn: () => _onLogIn(context, ref),
|
||||||
),
|
),
|
||||||
SizedBox(height: 30),
|
SizedBox(height: SizeUtils.getByScreen(small: 30, big: 60, xl: 56)),
|
||||||
_OrContinueWith(theme: theme),
|
_OrContinueWith(theme: theme),
|
||||||
SizedBox(height: 24),
|
SizedBox(height: SizeUtils.getByScreen(small: 24, big: 24, xl: 26)),
|
||||||
_SocialButtons(theme: theme),
|
_SocialButtons(theme: theme),
|
||||||
SizedBox(height: 30),
|
SizedBox(height: SizeUtils.getByScreen(small: 18, big: 36)),
|
||||||
_Footer(navigationContract: navigationContract),
|
_Footer(navigationContract: navigationContract),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -140,12 +142,15 @@ class _Header extends StatelessWidget {
|
|||||||
Icon(
|
Icon(
|
||||||
Icons.check,
|
Icons.check,
|
||||||
color: theme.getColorFor(ThemeCode.buttonPrimary),
|
color: theme.getColorFor(ThemeCode.buttonPrimary),
|
||||||
size: 54,
|
size: SizeUtils.getByScreen(small: 54, big: 50, xl: 46),
|
||||||
),
|
),
|
||||||
Text(
|
Text(
|
||||||
context.translate(I18n.welcome),
|
context.translate(I18n.welcome),
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: const TextStyle(fontSize: 30, fontWeight: FontWeight.bold),
|
style: TextStyle(
|
||||||
|
fontSize: SizeUtils.getByScreen(small: 30, big: 28, xl: 27),
|
||||||
|
fontWeight: FontWeight.w500
|
||||||
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
@@ -168,6 +173,7 @@ class _EmailSection extends ConsumerWidget {
|
|||||||
CustomTextField(
|
CustomTextField(
|
||||||
hint: context.translate(I18n.username),
|
hint: context.translate(I18n.username),
|
||||||
label: context.translate(I18n.username),
|
label: context.translate(I18n.username),
|
||||||
|
labelSize: SizeUtils.getByScreen(small: 14, big: 14, xl: 12),
|
||||||
controller: vm.emailController,
|
controller: vm.emailController,
|
||||||
keyboardType: TextInputType.emailAddress,
|
keyboardType: TextInputType.emailAddress,
|
||||||
textInputAction: TextInputAction.next,
|
textInputAction: TextInputAction.next,
|
||||||
@@ -199,6 +205,7 @@ class _PasswordSection extends ConsumerWidget {
|
|||||||
CustomTextField(
|
CustomTextField(
|
||||||
showPassword: passwordVisible,
|
showPassword: passwordVisible,
|
||||||
label: context.translate(I18n.password),
|
label: context.translate(I18n.password),
|
||||||
|
labelSize: SizeUtils.getByScreen(small: 14, big: 14, xl: 12),
|
||||||
hint: '********',
|
hint: '********',
|
||||||
controller: vm.passwordController,
|
controller: vm.passwordController,
|
||||||
textInputAction: TextInputAction.done,
|
textInputAction: TextInputAction.done,
|
||||||
@@ -227,7 +234,7 @@ class _ForgotPassword extends ConsumerWidget {
|
|||||||
onPressed: isLoading
|
onPressed: isLoading
|
||||||
? () {}
|
? () {}
|
||||||
: () => navigationContract.pushTo(AppRoutes.recoverPassword),
|
: () => navigationContract.pushTo(AppRoutes.recoverPassword),
|
||||||
size: 16,
|
size: SizeUtils.getByScreen(small: 16, big: 15, xl: 14),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -265,6 +272,7 @@ class _SignInSection extends ConsumerWidget {
|
|||||||
),
|
),
|
||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
|
size: SizeUtils.getByScreen(small: 18, big: 17, xl: 16),
|
||||||
),
|
),
|
||||||
if (errorMessage.isNotEmpty)
|
if (errorMessage.isNotEmpty)
|
||||||
Padding(
|
Padding(
|
||||||
@@ -274,7 +282,7 @@ class _SignInSection extends ConsumerWidget {
|
|||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: Theme.of(context).colorScheme.error,
|
color: Theme.of(context).colorScheme.error,
|
||||||
fontSize: 13,
|
fontSize: SizeUtils.getByScreen(small: 13, big: 12, xl: 11),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@@ -328,7 +336,7 @@ class _SocialButtons extends ConsumerWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
radius: 16,
|
radius: 16,
|
||||||
padding: 44,
|
padding: SizeUtils.getByScreen(small: 44, big: 40, xl: 36),
|
||||||
text: context.translate(I18n.google),
|
text: context.translate(I18n.google),
|
||||||
label: 'Google',
|
label: 'Google',
|
||||||
),
|
),
|
||||||
@@ -336,7 +344,7 @@ class _SocialButtons extends ConsumerWidget {
|
|||||||
SecondaryButton(
|
SecondaryButton(
|
||||||
onPressed: isLoading ? () {} : () {},
|
onPressed: isLoading ? () {} : () {},
|
||||||
radius: 16,
|
radius: 16,
|
||||||
padding: 44,
|
padding: SizeUtils.getByScreen(small: 44, big: 40, xl: 36),
|
||||||
icon: Icons.apple,
|
icon: Icons.apple,
|
||||||
label: 'Apple',
|
label: 'Apple',
|
||||||
),
|
),
|
||||||
@@ -359,20 +367,15 @@ class _Footer extends ConsumerWidget {
|
|||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
context.translate(I18n.dontHaveAccount),
|
context.translate(I18n.dontHaveAccount),
|
||||||
style: const TextStyle(fontSize: 18, letterSpacing: 0),
|
style: TextStyle(fontSize: SizeUtils.getByScreen(small: 18, big: 17, xl: 16), letterSpacing: 0, height: 0),
|
||||||
),
|
),
|
||||||
TextButton(
|
CustomTextButton(
|
||||||
onPressed: isLoading
|
onPressed: isLoading
|
||||||
? null
|
? null
|
||||||
: () => navigationContract.pushTo(AppRoutes.signup),
|
: () => navigationContract.pushTo(AppRoutes.signup),
|
||||||
child: Text(
|
text: context.translate(I18n.createOneNow),
|
||||||
context.translate(I18n.createOneNow),
|
size: SizeUtils.getByScreen(small: 18, big: 17, xl: 16),
|
||||||
style: const TextStyle(
|
weight: FontWeight.w500,
|
||||||
fontSize: 18,
|
|
||||||
fontWeight: FontWeight.w500,
|
|
||||||
letterSpacing: 0,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import 'dart:async';
|
|||||||
import 'package:auth/src/features/login/presentation/widgets/otp_code_fields.dart';
|
import 'package:auth/src/features/login/presentation/widgets/otp_code_fields.dart';
|
||||||
import 'package:design_system/design_system.dart';
|
import 'package:design_system/design_system.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:utils/utils.dart';
|
||||||
|
|
||||||
class TwoFactorBottomSheetView extends StatelessWidget {
|
class TwoFactorBottomSheetView extends StatelessWidget {
|
||||||
const TwoFactorBottomSheetView({
|
const TwoFactorBottomSheetView({
|
||||||
@@ -82,8 +83,9 @@ class TwoFactorBottomSheetView extends StatelessWidget {
|
|||||||
if (isOtpLoading || !_isValidOtp) return;
|
if (isOtpLoading || !_isValidOtp) return;
|
||||||
unawaited(onVerify());
|
unawaited(onVerify());
|
||||||
},
|
},
|
||||||
|
gap: SizeUtils.getByScreen(small: 10, big: 8, xl: 4),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 20),
|
SizedBox(height: SizeUtils.getByScreen(small: 24, big: 38)),
|
||||||
|
|
||||||
PrimaryButton(
|
PrimaryButton(
|
||||||
onPressed: (isOtpLoading || !_isValidOtp)
|
onPressed: (isOtpLoading || !_isValidOtp)
|
||||||
@@ -103,7 +105,7 @@ class TwoFactorBottomSheetView extends StatelessWidget {
|
|||||||
: null,
|
: null,
|
||||||
),
|
),
|
||||||
|
|
||||||
const SizedBox(height: 12),
|
SizedBox(height: SizeUtils.getByScreen(small: 12, big: 9)),
|
||||||
|
|
||||||
TextButton(
|
TextButton(
|
||||||
onPressed: isOtpLoading ? null : onClose,
|
onPressed: isOtpLoading ? null : onClose,
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:navigation/navigation.dart';
|
import 'package:navigation/navigation.dart';
|
||||||
import 'package:sf_localizations/sf_localizations.dart';
|
import 'package:sf_localizations/sf_localizations.dart';
|
||||||
|
import 'package:utils/utils.dart';
|
||||||
|
|
||||||
final onboardingPageControllerProvider = Provider.autoDispose<PageController>((
|
final onboardingPageControllerProvider = Provider.autoDispose<PageController>((
|
||||||
ref,
|
ref,
|
||||||
@@ -57,19 +58,22 @@ class OnboardingScreen extends ConsumerWidget {
|
|||||||
image: page.image,
|
image: page.image,
|
||||||
title: page.title,
|
title: page.title,
|
||||||
subtitle: page.subtitle,
|
subtitle: page.subtitle,
|
||||||
|
isLast: isLast,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
SizedBox(height: SizeUtils.getByScreen(small: 36, big: 28)),
|
||||||
StepIndicator(
|
StepIndicator(
|
||||||
current: state.cardIndex + 1,
|
current: state.cardIndex + 1,
|
||||||
total: onboardingPages.length,
|
total: onboardingPages.length,
|
||||||
color: const Color(0xFF4A4A4A),
|
color: const Color(0xFF4A4A4A),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 38),
|
SizedBox(height: SizeUtils.getByScreen(small: 38, big: 38)),
|
||||||
Container(
|
Container(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 24),
|
padding: const EdgeInsets.symmetric(horizontal: 24),
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
|
height: SizeUtils.getByScreen(small: 64, big: 62),
|
||||||
child: TextButton(
|
child: TextButton(
|
||||||
onPressed: goToNext,
|
onPressed: goToNext,
|
||||||
style: TextButton.styleFrom(
|
style: TextButton.styleFrom(
|
||||||
@@ -117,7 +121,7 @@ class OnboardingScreen extends ConsumerWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 48),
|
SizedBox(height: SizeUtils.getByScreen(small: 24, big: 48)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,17 +1,20 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:sf_localizations/sf_localizations.dart';
|
import 'package:sf_localizations/sf_localizations.dart';
|
||||||
|
import 'package:utils/utils.dart';
|
||||||
|
|
||||||
class OnboardingContent extends StatelessWidget {
|
class OnboardingContent extends StatelessWidget {
|
||||||
final String image;
|
final String image;
|
||||||
final String title;
|
final String title;
|
||||||
final String subtitle;
|
final String subtitle;
|
||||||
|
final bool isLast;
|
||||||
|
|
||||||
const OnboardingContent({
|
const OnboardingContent({
|
||||||
super.key,
|
super.key,
|
||||||
required this.image,
|
required this.image,
|
||||||
required this.title,
|
required this.title,
|
||||||
required this.subtitle,
|
required this.subtitle,
|
||||||
|
required this.isLast,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -22,13 +25,15 @@ class OnboardingContent extends StatelessWidget {
|
|||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
Flexible(flex: 3, child: SvgPicture.asset(image)),
|
Flexible(flex: 3, child: SvgPicture.asset(image)),
|
||||||
const SizedBox(height: 48),
|
isLast
|
||||||
|
? SizedBox(height: SizeUtils.getByScreen(small: 24, big: 48))
|
||||||
|
: SizedBox(height: SizeUtils.getByScreen(small: 48, big: 68)),
|
||||||
Text(
|
Text(
|
||||||
context.translate(title),
|
context.translate(title),
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: const TextStyle(
|
style: TextStyle(
|
||||||
fontWeight: FontWeight.w700,
|
fontWeight: FontWeight.w500,
|
||||||
fontSize: 28,
|
fontSize: SizeUtils.getByScreen(small: 28, big: 28),
|
||||||
height: 1.4,
|
height: 1.4,
|
||||||
letterSpacing: 0.3,
|
letterSpacing: 0.3,
|
||||||
color: Color(0xFF4A4A4A),
|
color: Color(0xFF4A4A4A),
|
||||||
@@ -38,7 +43,7 @@ class OnboardingContent extends StatelessWidget {
|
|||||||
Text(
|
Text(
|
||||||
context.translate(subtitle),
|
context.translate(subtitle),
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: const TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 18,
|
fontSize: 18,
|
||||||
height: 1.4,
|
height: 1.4,
|
||||||
letterSpacing: 0.3,
|
letterSpacing: 0.3,
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ class NewPasswordScreen extends ConsumerWidget {
|
|||||||
// color: viewState.equalPasswords ? const Color(0xFF4B4B4B) : const Color.fromRGBO(239, 17, 17, 1),
|
// color: viewState.equalPasswords ? const Color(0xFF4B4B4B) : const Color.fromRGBO(239, 17, 17, 1),
|
||||||
),
|
),
|
||||||
if (!viewState.equalPasswords) ...[
|
if (!viewState.equalPasswords) ...[
|
||||||
SizedBox(height: 4),
|
SizedBox(height: SizeUtils.getByScreen(small: 8, big: 8)),
|
||||||
Row(
|
Row(
|
||||||
spacing: 8,
|
spacing: 8,
|
||||||
children: [
|
children: [
|
||||||
@@ -79,7 +79,7 @@ class NewPasswordScreen extends ConsumerWidget {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
SizedBox(height: 12),
|
SizedBox(height: SizeUtils.getByScreen(small: 14, big: 12)),
|
||||||
Row(
|
Row(
|
||||||
spacing: 8,
|
spacing: 8,
|
||||||
children: [
|
children: [
|
||||||
@@ -176,7 +176,7 @@ class NewPasswordScreen extends ConsumerWidget {
|
|||||||
],
|
],
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: SizeUtils.getByScreen(small: 32, big: 32, xl: 24),
|
height: SizeUtils.getByScreen(small: 28, big: 32, xl: 24),
|
||||||
),
|
),
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.bottomLeft,
|
alignment: Alignment.bottomLeft,
|
||||||
|
|||||||
@@ -23,14 +23,14 @@ class RequestRecoveryScreen extends ConsumerWidget {
|
|||||||
return Scaffold(
|
return Scaffold(
|
||||||
backgroundColor: theme.getColorFor(ThemeCode.backgroundPrimary),
|
backgroundColor: theme.getColorFor(ThemeCode.backgroundPrimary),
|
||||||
body: Container(
|
body: Container(
|
||||||
margin: EdgeInsets.all(SizeUtils.getByScreen(small: 30, big: 30, xl: 20)),
|
margin: EdgeInsets.symmetric(horizontal: SizeUtils.getByScreen(small: 30, big: 30, xl: 20)),
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
context.translate(I18n.recoverPasswordTitle),
|
context.translate(I18n.recoverPasswordTitle),
|
||||||
style: TextStyle(fontWeight: FontWeight.bold, fontSize: SizeUtils.getByScreen(small: 29, big: 29, xl: 26)),
|
style: TextStyle(fontWeight: FontWeight.w500, fontSize: SizeUtils.getByScreen(small: 29, big: 27, xl: 26)),
|
||||||
),
|
),
|
||||||
SizedBox(height: SizeUtils.getByScreen(small: 24, big: 32)),
|
SizedBox(height: SizeUtils.getByScreen(small: 24, big: 32)),
|
||||||
Text(
|
Text(
|
||||||
@@ -38,13 +38,13 @@ class RequestRecoveryScreen extends ConsumerWidget {
|
|||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: TextStyle(letterSpacing: 0, fontSize: SizeUtils.getByScreen(small: 18, big: 18, xl: 16)),
|
style: TextStyle(letterSpacing: 0, fontSize: SizeUtils.getByScreen(small: 18, big: 18, xl: 16)),
|
||||||
),
|
),
|
||||||
SizedBox(height: SizeUtils.getByScreen(small: 56, big: 48)),
|
SizedBox(height: SizeUtils.getByScreen(small: 56, big: 52)),
|
||||||
CustomTextField(
|
CustomTextField(
|
||||||
label: context.translate(I18n.email),
|
label: context.translate(I18n.email),
|
||||||
hint: context.translate(I18n.email),
|
hint: context.translate(I18n.email),
|
||||||
controller: viewModel.emailController,
|
controller: viewModel.emailController,
|
||||||
),
|
),
|
||||||
SizedBox(height: SizeUtils.getByScreen(small: 40, big: 40, xl: 28)),
|
SizedBox(height: SizeUtils.getByScreen(small: 36, big: 36, xl: 26)),
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.bottomLeft,
|
alignment: Alignment.bottomLeft,
|
||||||
child: Text(
|
child: Text(
|
||||||
|
|||||||
@@ -60,9 +60,9 @@ class SentScreen extends ConsumerWidget {
|
|||||||
? context.translate(I18n.checkEmail1)
|
? context.translate(I18n.checkEmail1)
|
||||||
: context.translate(I18n.checkSms1),
|
: context.translate(I18n.checkSms1),
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: TextStyle(fontSize: SizeUtils.getByScreen(small: 17, big: 17, xl: 15), letterSpacing: 0),
|
style: TextStyle(fontSize: SizeUtils.getByScreen(small: 17, big: 17, xl: 14), letterSpacing: 0),
|
||||||
),
|
),
|
||||||
SizedBox(height: 16),
|
SizedBox(height: SizeUtils.getByScreen(small: 16, big: 16, xl: 14)),
|
||||||
Text(
|
Text(
|
||||||
viewState.recoveryFormat == "email"
|
viewState.recoveryFormat == "email"
|
||||||
? context.translate(I18n.checkEmail2)
|
? context.translate(I18n.checkEmail2)
|
||||||
@@ -70,7 +70,7 @@ class SentScreen extends ConsumerWidget {
|
|||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: TextStyle(fontSize: SizeUtils.getByScreen(small: 14, big: 14, xl: 12), letterSpacing: 0),
|
style: TextStyle(fontSize: SizeUtils.getByScreen(small: 14, big: 14, xl: 12), letterSpacing: 0),
|
||||||
),
|
),
|
||||||
SizedBox(height: SizeUtils.getByScreen(small: 48, big: 48, xl: 40)),
|
SizedBox(height: SizeUtils.getByScreen(small: 48, big: 48, xl: 38)),
|
||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
Expanded(
|
Expanded(
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:navigation/navigation.dart';
|
import 'package:navigation/navigation.dart';
|
||||||
import 'package:sf_localizations/sf_localizations.dart';
|
import 'package:sf_localizations/sf_localizations.dart';
|
||||||
|
import 'package:utils/utils.dart';
|
||||||
|
|
||||||
class AccountCreatedScreen extends ConsumerWidget {
|
class AccountCreatedScreen extends ConsumerWidget {
|
||||||
final NavigationContract navigationContract;
|
final NavigationContract navigationContract;
|
||||||
@@ -23,10 +24,9 @@ class AccountCreatedScreen extends ConsumerWidget {
|
|||||||
backgroundColor: theme.getColorFor(ThemeCode.backgroundPrimary),
|
backgroundColor: theme.getColorFor(ThemeCode.backgroundPrimary),
|
||||||
body: Container(
|
body: Container(
|
||||||
margin: const EdgeInsets.all(30),
|
margin: const EdgeInsets.all(30),
|
||||||
child: Center(
|
|
||||||
child: Column(
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
const Spacer(flex: 10),
|
|
||||||
Icon(
|
Icon(
|
||||||
Icons.check,
|
Icons.check,
|
||||||
color: theme.getColorFor(ThemeCode.buttonPrimary),
|
color: theme.getColorFor(ThemeCode.buttonPrimary),
|
||||||
@@ -46,6 +46,7 @@ class AccountCreatedScreen extends ConsumerWidget {
|
|||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text: '${context.translate(I18n.accountCreatedForLabel)}\n',
|
text: '${context.translate(I18n.accountCreatedForLabel)}\n',
|
||||||
|
style: TextStyle(fontSize: SizeUtils.getByScreen(small: 16, big: 15, xl: 14)),
|
||||||
children: [
|
children: [
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text: fullName,
|
text: fullName,
|
||||||
@@ -55,12 +56,13 @@ class AccountCreatedScreen extends ConsumerWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
const SizedBox(height: 16),
|
SizedBox(height: SizeUtils.getByScreen(small: 40, big: 40)),
|
||||||
Text.rich(
|
Text.rich(
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text:
|
text:
|
||||||
'${context.translate(I18n.accountCreatedEmailVerificationSentLabel)}\n',
|
'${context.translate(I18n.accountCreatedEmailVerificationSentLabel)}\n',
|
||||||
|
style: TextStyle(fontSize: SizeUtils.getByScreen(small: 15, big: 15, xl: 13)),
|
||||||
children: [
|
children: [
|
||||||
TextSpan(
|
TextSpan(
|
||||||
text: email,
|
text: email,
|
||||||
@@ -70,23 +72,22 @@ class AccountCreatedScreen extends ConsumerWidget {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
const SizedBox(height: 20),
|
SizedBox(height: SizeUtils.getByScreen(small: 40, big: 40)),
|
||||||
Text(
|
Text(
|
||||||
context.translate(I18n.accountCreatedChildSetupHint),
|
context.translate(I18n.accountCreatedChildSetupHint),
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
|
style: TextStyle(fontSize: SizeUtils.getByScreen(small: 16, big: 15, xl: 13)),
|
||||||
),
|
),
|
||||||
|
|
||||||
const SizedBox(height: 20),
|
SizedBox(height: SizeUtils.getByScreen(small: 40, big: 40)),
|
||||||
PrimaryButton(
|
PrimaryButton(
|
||||||
onPressed: () => navigationContract.goTo(AppRoutes.login),
|
onPressed: () => navigationContract.goTo(AppRoutes.login),
|
||||||
text: context.translate(I18n.accountCreatedContinue),
|
text: context.translate(I18n.accountCreatedContinue),
|
||||||
color: theme.getColorFor(ThemeCode.buttonPrimary),
|
color: theme.getColorFor(ThemeCode.buttonPrimary),
|
||||||
),
|
),
|
||||||
const Spacer(flex: 8),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'package:country_code_picker/country_code_picker.dart';
|
|||||||
import 'package:design_system/design_system.dart';
|
import 'package:design_system/design_system.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:sf_localizations/sf_localizations.dart';
|
import 'package:sf_localizations/sf_localizations.dart';
|
||||||
|
import 'package:utils/utils.dart';
|
||||||
|
|
||||||
class SignupAddressScreen extends StatelessWidget {
|
class SignupAddressScreen extends StatelessWidget {
|
||||||
const SignupAddressScreen({
|
const SignupAddressScreen({
|
||||||
@@ -145,7 +146,9 @@ class SignupAddressScreen extends StatelessWidget {
|
|||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.bottomLeft,
|
alignment: Alignment.bottomLeft,
|
||||||
child: Text(birthCountryLabel, style: const TextStyle(fontSize: 14)),
|
child: Text(birthCountryLabel, style: TextStyle(
|
||||||
|
fontSize: SizeUtils.getByScreen(small: 14, big: 13, xl: 12),
|
||||||
|
)),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
Row(
|
Row(
|
||||||
@@ -168,6 +171,7 @@ class SignupAddressScreen extends StatelessWidget {
|
|||||||
|
|
||||||
CustomTextField(
|
CustomTextField(
|
||||||
label: streetLabel,
|
label: streetLabel,
|
||||||
|
labelSize: SizeUtils.getByScreen(small: 14, big: 13, xl: 12),
|
||||||
hint: streetHint,
|
hint: streetHint,
|
||||||
controller: streetController,
|
controller: streetController,
|
||||||
),
|
),
|
||||||
@@ -175,6 +179,7 @@ class SignupAddressScreen extends StatelessWidget {
|
|||||||
|
|
||||||
CustomTextField(
|
CustomTextField(
|
||||||
label: cityLabel,
|
label: cityLabel,
|
||||||
|
labelSize: SizeUtils.getByScreen(small: 14, big: 13, xl: 12),
|
||||||
hint: cityHint,
|
hint: cityHint,
|
||||||
controller: cityController,
|
controller: cityController,
|
||||||
),
|
),
|
||||||
@@ -182,6 +187,7 @@ class SignupAddressScreen extends StatelessWidget {
|
|||||||
|
|
||||||
CustomTextField(
|
CustomTextField(
|
||||||
label: provinceLabel,
|
label: provinceLabel,
|
||||||
|
labelSize: SizeUtils.getByScreen(small: 14, big: 13, xl: 12),
|
||||||
hint: provinceHint,
|
hint: provinceHint,
|
||||||
controller: provinceController,
|
controller: provinceController,
|
||||||
),
|
),
|
||||||
@@ -189,6 +195,7 @@ class SignupAddressScreen extends StatelessWidget {
|
|||||||
|
|
||||||
CustomTextField(
|
CustomTextField(
|
||||||
label: stateLabel,
|
label: stateLabel,
|
||||||
|
labelSize: SizeUtils.getByScreen(small: 14, big: 13, xl: 12),
|
||||||
hint: stateHint,
|
hint: stateHint,
|
||||||
controller: stateController,
|
controller: stateController,
|
||||||
),
|
),
|
||||||
@@ -222,6 +229,7 @@ class SignupAddressScreen extends StatelessWidget {
|
|||||||
|
|
||||||
CustomTextField(
|
CustomTextField(
|
||||||
label: postCodeLabel,
|
label: postCodeLabel,
|
||||||
|
labelSize: SizeUtils.getByScreen(small: 14, big: 13, xl: 12),
|
||||||
hint: postCodeHint,
|
hint: postCodeHint,
|
||||||
keyboardType: TextInputType.number,
|
keyboardType: TextInputType.number,
|
||||||
controller: postCodeController,
|
controller: postCodeController,
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import 'package:country_code_picker/country_code_picker.dart';
|
|||||||
import 'package:design_system/design_system.dart';
|
import 'package:design_system/design_system.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:sf_localizations/sf_localizations.dart';
|
import 'package:sf_localizations/sf_localizations.dart';
|
||||||
|
import 'package:utils/utils.dart';
|
||||||
|
|
||||||
class SignupPersonalScreen extends StatelessWidget {
|
class SignupPersonalScreen extends StatelessWidget {
|
||||||
final TextEditingController firstNameTextFieldController;
|
final TextEditingController firstNameTextFieldController;
|
||||||
@@ -72,12 +73,14 @@ class SignupPersonalScreen extends StatelessWidget {
|
|||||||
children: [
|
children: [
|
||||||
CustomTextField(
|
CustomTextField(
|
||||||
label: firstNameLabel,
|
label: firstNameLabel,
|
||||||
|
labelSize: SizeUtils.getByScreen(small: 14, big: 13, xl: 12),
|
||||||
hint: firstNameHint,
|
hint: firstNameHint,
|
||||||
controller: firstNameTextFieldController,
|
controller: firstNameTextFieldController,
|
||||||
),
|
),
|
||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
CustomTextField(
|
CustomTextField(
|
||||||
label: lastNameLabel,
|
label: lastNameLabel,
|
||||||
|
labelSize: SizeUtils.getByScreen(small: 14, big: 13, xl: 12),
|
||||||
hint: lastNameHint,
|
hint: lastNameHint,
|
||||||
controller: lastNameTextFieldController,
|
controller: lastNameTextFieldController,
|
||||||
),
|
),
|
||||||
@@ -99,6 +102,7 @@ class SignupPersonalScreen extends StatelessWidget {
|
|||||||
Expanded(
|
Expanded(
|
||||||
child: CustomTextField(
|
child: CustomTextField(
|
||||||
label: documentNumberLabel,
|
label: documentNumberLabel,
|
||||||
|
labelSize: SizeUtils.getByScreen(small: 14, big: 13, xl: 12),
|
||||||
hint: documentNumberHint,
|
hint: documentNumberHint,
|
||||||
controller: documentNumberTextFieldController,
|
controller: documentNumberTextFieldController,
|
||||||
),
|
),
|
||||||
@@ -108,7 +112,9 @@ class SignupPersonalScreen extends StatelessWidget {
|
|||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.bottomLeft,
|
alignment: Alignment.bottomLeft,
|
||||||
child: Text(phoneLabel, style: const TextStyle(fontSize: 14)),
|
child: Text(phoneLabel, style: TextStyle(
|
||||||
|
fontSize: SizeUtils.getByScreen(small: 14, big: 13, xl: 12)
|
||||||
|
)),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
Row(
|
Row(
|
||||||
@@ -130,11 +136,12 @@ class SignupPersonalScreen extends StatelessWidget {
|
|||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
CustomTextField(
|
CustomTextField(
|
||||||
label: emailLabel,
|
label: emailLabel,
|
||||||
|
labelSize: SizeUtils.getByScreen(small: 14, big: 13, xl: 12),
|
||||||
hint: emailHint,
|
hint: emailHint,
|
||||||
keyboardType: TextInputType.emailAddress,
|
keyboardType: TextInputType.emailAddress,
|
||||||
controller: emailTextFieldController,
|
controller: emailTextFieldController,
|
||||||
),
|
),
|
||||||
|
const SizedBox(height: 8),
|
||||||
CheckboxListTile(
|
CheckboxListTile(
|
||||||
value: acceptTerms,
|
value: acceptTerms,
|
||||||
onChanged: onAcceptTermsPressed,
|
onChanged: onAcceptTermsPressed,
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import 'package:design_system/design_system.dart';
|
import 'package:design_system/design_system.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
|
import 'package:utils/utils.dart';
|
||||||
|
|
||||||
class FormStepLayout extends ConsumerWidget {
|
class FormStepLayout extends ConsumerWidget {
|
||||||
final int currentStep;
|
final int currentStep;
|
||||||
@@ -70,7 +71,7 @@ class FormStepLayout extends ConsumerWidget {
|
|||||||
Text(
|
Text(
|
||||||
subtitle!,
|
subtitle!,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: TextStyle(fontSize: 18),
|
style: TextStyle(fontSize: SizeUtils.getByScreen(small: 18, big: 17)),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import 'package:auth/src/widgets/form_error_banner.dart';
|
import 'package:auth/src/widgets/form_error_banner.dart';
|
||||||
import 'package:design_system/design_system.dart';
|
import 'package:design_system/design_system.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:utils/utils.dart';
|
||||||
|
|
||||||
class SignUpLayout extends StatelessWidget {
|
class SignUpLayout extends StatelessWidget {
|
||||||
final ThemePort theme;
|
final ThemePort theme;
|
||||||
@@ -53,24 +54,24 @@ class SignUpLayout extends StatelessWidget {
|
|||||||
Text(
|
Text(
|
||||||
supertitle,
|
supertitle,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: const TextStyle(fontSize: 18),
|
style: TextStyle(fontSize: SizeUtils.getByScreen(small: 18, big: 16, xl: 15)),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 10),
|
SizedBox(height: SizeUtils.getByScreen(small: 8, big: 5)),
|
||||||
Text(
|
Text(
|
||||||
title,
|
title,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: const TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 30,
|
fontSize: SizeUtils.getByScreen(small: 30, big: 28, xl: 26),
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.w500,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 16),
|
const SizedBox(height: 16),
|
||||||
Text(
|
Text(
|
||||||
subtitle,
|
subtitle,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
style: const TextStyle(fontSize: 18),
|
style: TextStyle(fontSize: SizeUtils.getByScreen(small: 18, big: 17, xl: 15)),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 16),
|
SizedBox(height: SizeUtils.getByScreen(small: 16, big: 20, xl: 36)),
|
||||||
|
|
||||||
Expanded(
|
Expanded(
|
||||||
child: SingleChildScrollView(
|
child: SingleChildScrollView(
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class CustomTextButton extends StatelessWidget {
|
class CustomTextButton extends StatelessWidget {
|
||||||
final VoidCallback onPressed;
|
final VoidCallback? onPressed;
|
||||||
final String text;
|
final String text;
|
||||||
final double size;
|
final double size;
|
||||||
final FontWeight weight;
|
final FontWeight weight;
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ class CustomTextFieldState extends State<CustomTextField> {
|
|||||||
suffixIcon: widget.showPassword != null
|
suffixIcon: widget.showPassword != null
|
||||||
? IconButton(
|
? IconButton(
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
_showPassword ? Icons.visibility_off : Icons.visibility,
|
_showPassword ? Icons.visibility_off_outlined : Icons.visibility_outlined,
|
||||||
),
|
),
|
||||||
onPressed: () {
|
onPressed: () {
|
||||||
setState(() {
|
setState(() {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
"next": "Siguiente",
|
"next": "Siguiente",
|
||||||
"skip": "Omitir",
|
"skip": "Omitir",
|
||||||
"linkPhoneTitle": "¡Nos alegra mucho tenerte por aquí!",
|
"linkPhoneTitle": "¡Nos alegra mucho tenerte por aquí!",
|
||||||
"linkPhoneSubtitle": "Para poder entrar de forma segura, te vamos a enviar un código al teléfono",
|
"linkPhoneSubtitle": "Para poder entrar de forma segura,\nte vamos a enviar un código al teléfono",
|
||||||
"mobilePhone": "Teléfono móvil",
|
"mobilePhone": "Teléfono móvil",
|
||||||
"phoneNumber": "Teléfono",
|
"phoneNumber": "Teléfono",
|
||||||
"selectYourCountry": "Selecciona tu país",
|
"selectYourCountry": "Selecciona tu país",
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
"connect": "Conéctate",
|
"connect": "Conéctate",
|
||||||
"verificationCodeSentTo": "Hemos enviado el código al ",
|
"verificationCodeSentTo": "Hemos enviado el código al ",
|
||||||
"enterCodeHere": "Introduce el código aquí",
|
"enterCodeHere": "Introduce el código aquí",
|
||||||
"enter": "entrar",
|
"enter": "Entrar",
|
||||||
"didNotReceiveIt": "¿No lo has recibido?",
|
"didNotReceiveIt": "¿No lo has recibido?",
|
||||||
"tryAgain": "Volver a intentarlo",
|
"tryAgain": "Volver a intentarlo",
|
||||||
"welcome": "¡Te damos la bienvenida!",
|
"welcome": "¡Te damos la bienvenida!",
|
||||||
|
|||||||
Reference in New Issue
Block a user