import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:adminduk_puger/cubit/Auth/Auth_cubit.dart'; import 'package:adminduk_puger/theme.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:dio/dio.dart'; import 'package:adminduk_puger/widget/bottom_nav.dart'; class SettingsPage extends StatefulWidget { @override _SettingsPageState createState() => _SettingsPageState(); } class _SettingsPageState extends State { final int _currentIndex = 2; final List _routes = ['/home', '/submission', '/setting']; String? name; String? email; String? phone; String? address; @override void initState() { super.initState(); _loadUserData(); } void _onTap(BuildContext context, int index) { Navigator.pushReplacementNamed(context, _routes[index]); } Future _loadUserData() async { // Ambil token menggunakan authcubit final token = await context.read().getToken(); if (token != null) { try { // Fetch user data using the token Dio dio = Dio(); Response response = await dio.get( "https://admindukpuger.punyapadias.my.id/api/user", options: Options(headers: {"Authorization": "Bearer $token"}), ); if (response.statusCode == 200) { setState(() { name = response.data['name']; email = response.data['email']; phone = response.data['phone'] ?? 'Not Available'; }); } else { print('Failed to fetch user data'); } } catch (e) { print("Error fetching user data: $e"); } } } @override Widget build(BuildContext context) { return Scaffold( body: Stack( children: [ Container( height: 150, decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.topRight, end: Alignment.bottomCenter, colors: [putih, biru], ), borderRadius: const BorderRadius.only( bottomLeft: Radius.circular(34), bottomRight: Radius.circular(34), ), ), child: Column( children: [ const SizedBox(height: 30, width: double.infinity), const Text( "Pengaturan", style: TextStyle(fontSize: 25, fontWeight: FontWeight.bold), ), const SizedBox(height: 15), ], ), ), // Positioned Card Positioned( top: 100, // Adjust top position as needed left: 16, right: 16, child: Card( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(16), ), elevation: 2, child: Padding( padding: const EdgeInsets.symmetric( vertical: 16, horizontal: 100, ), child: Column( children: [ CircleAvatar( radius: 40, backgroundColor: dongker, child: const Icon( Icons.person, size: 40, color: Colors.white, ), ), const SizedBox(height: 8), Text( name ?? 'Loading...', style: TextStyle( fontWeight: FontWeight.bold, fontSize: 18, ), ), ], ), ), ), ), // Main content below the Card SingleChildScrollView( child: Padding( padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ const SizedBox(height: 250), Card( color: Colors.white, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(16), ), elevation: 2, child: Padding( padding: const EdgeInsets.symmetric( vertical: 12, horizontal: 16, ), child: Column( children: [ Row( children: [ Icon(Icons.phone, color: dongker, size: 30), SizedBox(width: 12), Text( phone ?? 'Kosong', style: TextStyle(fontSize: 20), ), ], ), const SizedBox(height: 10), Row( children: [ Icon(Icons.email, color: dongker, size: 30), SizedBox(width: 12), Text( email ?? 'Silahkan Logout & Login Ulang', style: TextStyle(fontSize: 20), ), ], ), ], ), ), ), const SizedBox(height: 20), Card( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(16), ), elevation: 2, child: Column( children: [ ListTile( contentPadding: EdgeInsets.symmetric( vertical: 12, horizontal: 16, ), title: Text( "Pengaturan Akun", style: GoogleFonts.poppins(fontSize: 17), ), trailing: const Icon(Icons.arrow_forward_ios), onTap: () { Navigator.pushNamed(context, '/profile'); }, ), ], ), ), const SizedBox(height: 24), ElevatedButton( onPressed: () async { Navigator.of(context).pushReplacementNamed('/splash'); }, style: ElevatedButton.styleFrom( backgroundColor: dongker, padding: const EdgeInsets.symmetric( horizontal: 32, vertical: 12, ), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(8), ), ), child: TextButton( onPressed: () async { context.read().logout(); Navigator.of(context).pushReplacementNamed('/splash'); }, child: const Text( "LOG OUT", style: TextStyle(color: Colors.white, fontSize: 16), ), ), ), ], ), ), ), ], ), bottomNavigationBar: BottomNav( currentIndex: _currentIndex, onTap: (index) => _onTap(context, index), ), ); } }