login e register

This commit is contained in:
2026-03-12 10:42:21 +00:00
parent f5d7e88149
commit b95d6dc8d4
13 changed files with 926 additions and 1122 deletions

View File

@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:playmaker/controllers/login_controller.dart';
import '../widgets/login_widgets.dart';
import 'home.dart'; // <--- IMPORTANTE: Importa a tua HomeScreen
import '../utils/size_extension.dart'; // 👇 O NOSSO SUPERPODER!
class LoginPage extends StatefulWidget {
const LoginPage({super.key});
@@ -27,47 +28,40 @@ class _LoginPageState extends State<LoginPage> {
child: ListenableBuilder(
listenable: controller,
builder: (context, child) {
return LayoutBuilder(
builder: (context, constraints) {
final screenWidth = constraints.maxWidth;
return Center(
child: SingleChildScrollView(
child: Container(
width: screenWidth * 0.6,
constraints: const BoxConstraints(minWidth: 340),
padding: const EdgeInsets.all(32),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const BasketTrackHeader(),
const SizedBox(height: 40),
LoginFormFields(controller: controller),
const SizedBox(height: 24),
// AQUI ESTÁ A MUDANÇA PRINCIPAL
LoginButton(
controller: controller,
onLoginSuccess: () {
// Verifica se o widget ainda está no ecrã antes de navegar
if (mounted) {
Navigator.pushReplacement(
context,
MaterialPageRoute(builder: (context) => const HomeScreen()),
);
}
},
),
const SizedBox(height: 16),
const CreateAccountButton(),
],
return Center(
child: SingleChildScrollView(
child: Container(
width: double.infinity,
// Garante que o form não fica gigante num tablet
constraints: BoxConstraints(maxWidth: 450 * context.sf),
padding: EdgeInsets.all(32 * context.sf),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const BasketTrackHeader(),
SizedBox(height: 40 * context.sf),
LoginFormFields(controller: controller),
SizedBox(height: 24 * context.sf),
LoginButton(
controller: controller,
onLoginSuccess: () {
if (mounted) {
Navigator.pushReplacement(
context,
MaterialPageRoute(builder: (context) => const HomeScreen()),
);
}
},
),
),
SizedBox(height: 16 * context.sf),
const CreateAccountButton(),
],
),
);
},
),
),
);
},
),