CTK 1.0.0

This commit is contained in:
Carlos Correia
2026-07-14 22:19:26 +01:00
parent afce79b9b9
commit fb39e1f722
7 changed files with 79 additions and 65 deletions

View File

@@ -113,7 +113,7 @@ class _HomeScreenState extends State<HomeScreen> {
final user = response.user;
if (user == null) {
throw StateError('Usuário não encontrado após criar conta.');
throw StateError('Utilizador não encontrado após criar a conta.');
}
// Antes de persistir o perfil (o que já faz o AuthGate considerar a
@@ -137,7 +137,7 @@ class _HomeScreenState extends State<HomeScreen> {
if (!mounted) return;
showPillSnackBar(
context,
'Esta conta não existe mais. Verifique o email ou crie uma nova conta.',
'Esta conta não existe. Verifique o email ou crie uma nova conta.',
);
} on AuthException catch (e) {
if (!mounted) return;
@@ -146,7 +146,7 @@ class _HomeScreenState extends State<HomeScreen> {
if (!mounted) return;
showPillSnackBar(
context,
'Tempo esgotado. Verifique sua conexão e tente novamente.',
'Tempo esgotado. Verifique a sua ligação e tente novamente.',
);
} catch (e) {
if (!mounted) return;
@@ -159,14 +159,14 @@ class _HomeScreenState extends State<HomeScreen> {
String _friendlyAuthError(AuthException e) {
switch (e.code) {
case 'invalid_credentials':
return 'Email ou senha incorretos.';
return 'Email ou palavra-passe incorretos.';
case 'user_not_found':
return 'Usuário não encontrado.';
return 'Utilizador não encontrado.';
case 'email_exists':
case 'user_already_exists':
return 'Este email já está em uso.';
case 'weak_password':
return 'Senha fraca. Use pelo menos 6 caracteres.';
return 'Palavra-passe fraca. Utilize pelo menos 6 caracteres.';
default:
return e.message;
}
@@ -376,14 +376,14 @@ class _AuthForm extends StatelessWidget {
children: [
_AuthTextField(
controller: nameController,
hintText: 'Digite seu nome',
hintText: 'Introduza o seu nome',
icon: Icons.person_outline_rounded,
textInputAction: TextInputAction.next,
textCapitalization: TextCapitalization.sentences,
inputFormatters: [CapitalizeFirstLetterFormatter()],
validator: (v) {
final value = (v ?? '').trim();
if (value.isEmpty) return 'Informe seu nome';
if (value.isEmpty) return 'Indique o seu nome';
if (value.length < 2) return 'Nome muito curto';
if (!_namePattern.hasMatch(value)) {
return 'O nome não pode conter números';
@@ -398,13 +398,13 @@ class _AuthForm extends StatelessWidget {
),
_AuthTextField(
controller: emailController,
hintText: 'Digite seu email',
hintText: 'Introduza o seu email',
icon: Icons.mail_outline_rounded,
keyboardType: TextInputType.emailAddress,
textInputAction: TextInputAction.next,
validator: (v) {
final value = (v ?? '').trim();
if (value.isEmpty) return 'Informe seu email';
if (value.isEmpty) return 'Indique o seu email';
if (!value.contains('@')) return 'Email inválido';
return null;
},
@@ -412,13 +412,13 @@ class _AuthForm extends StatelessWidget {
const SizedBox(height: 12),
_AuthTextField(
controller: passwordController,
hintText: 'Digite sua senha',
hintText: 'Introduza a sua palavra-passe',
icon: Icons.lock_outline_rounded,
obscureText: true,
textInputAction: TextInputAction.done,
validator: (v) {
final value = v ?? '';
if (value.isEmpty) return 'Informe sua senha';
if (value.isEmpty) return 'Indique a sua palavra-passe';
if (value.length < 6) return 'Mínimo de 6 caracteres';
return null;
},