sabado
This commit is contained in:
@@ -8,7 +8,6 @@ import 'package:supabase_flutter/supabase_flutter.dart';
|
||||
import 'package:playmaker/pages/status_page.dart';
|
||||
import '../utils/size_extension.dart';
|
||||
import 'settings_screen.dart';
|
||||
// 👇 Importa o ficheiro onde meteste o StatCard e o SportGrid
|
||||
// import 'home_widgets.dart';
|
||||
|
||||
class HomeScreen extends StatefulWidget {
|
||||
@@ -29,6 +28,37 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||
int _teamDraws = 0;
|
||||
|
||||
final _supabase = Supabase.instance.client;
|
||||
|
||||
// 👇 NOVA VARIÁVEL PARA GUARDAR A FOTO
|
||||
String? _avatarUrl;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_loadUserAvatar(); // Vai buscar a foto logo quando a Home abre!
|
||||
}
|
||||
|
||||
// 👇 FUNÇÃO PARA LER A FOTO DA BASE DE DADOS
|
||||
Future<void> _loadUserAvatar() async {
|
||||
final userId = _supabase.auth.currentUser?.id;
|
||||
if (userId == null) return;
|
||||
|
||||
try {
|
||||
final data = await _supabase
|
||||
.from('profiles')
|
||||
.select('avatar_url')
|
||||
.eq('id', userId)
|
||||
.maybeSingle();
|
||||
|
||||
if (mounted && data != null && data['avatar_url'] != null) {
|
||||
setState(() {
|
||||
_avatarUrl = data['avatar_url'];
|
||||
});
|
||||
}
|
||||
} catch (e) {
|
||||
print("Erro ao carregar avatar na Home: $e");
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -45,14 +75,31 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||
title: Text('PlayMaker', style: TextStyle(fontSize: 20 * context.sf)),
|
||||
backgroundColor: AppTheme.primaryRed,
|
||||
foregroundColor: Colors.white,
|
||||
leading: IconButton(
|
||||
icon: Icon(Icons.person, size: 24 * context.sf),
|
||||
onPressed: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => const SettingsScreen()),
|
||||
);
|
||||
},
|
||||
|
||||
// 👇 AQUI ESTÁ A MÁGICA DA TUA FOTO NA APPBAR 👇
|
||||
leading: Padding(
|
||||
padding: EdgeInsets.all(10.0 * context.sf), // Dá um espacinho para não colar aos bordos
|
||||
child: InkWell(
|
||||
borderRadius: BorderRadius.circular(100),
|
||||
onTap: () async {
|
||||
// O 'await' faz com que a Home espere que tu feches os settings...
|
||||
await Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => const SettingsScreen()),
|
||||
);
|
||||
// ... e quando voltas, ele recarrega a foto logo!
|
||||
_loadUserAvatar();
|
||||
},
|
||||
child: CircleAvatar(
|
||||
backgroundColor: Colors.white.withOpacity(0.2), // Fundo suave caso não haja foto
|
||||
backgroundImage: _avatarUrl != null && _avatarUrl!.isNotEmpty
|
||||
? NetworkImage(_avatarUrl!)
|
||||
: null,
|
||||
child: _avatarUrl == null || _avatarUrl!.isEmpty
|
||||
? Icon(Icons.person, color: Colors.white, size: 20 * context.sf)
|
||||
: null, // Só mostra o ícone se não houver foto
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -196,7 +243,6 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||
Text('Histórico de Jogos', style: TextStyle(fontSize: 20 * context.sf, fontWeight: FontWeight.bold, color: textColor)),
|
||||
SizedBox(height: 16 * context.sf),
|
||||
|
||||
// 👇 AQUI ESTÁ O NOVO CARTÃO VAZIO PARA QUANDO NÃO HÁ EQUIPA 👇
|
||||
_selectedTeamName == "Selecionar Equipa"
|
||||
? Container(
|
||||
width: double.infinity,
|
||||
|
||||
Reference in New Issue
Block a user