import 'dart:async'; import 'dart:ui'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'profile_screen.dart'; import 'shared_preferences_provider.dart'; import 'status_page.dart'; void main() { runApp( ChangeNotifierProvider( create: (_) => SharedPreferencesProvider(), child: const MyApp(), ), ); } class MyApp extends StatefulWidget { const MyApp({super.key}); @override MyAppState createState() => MyAppState(); } class MyAppState extends State { Future? _prefsReady; bool isProfileActive = false; bool showProfileInitially = false; @override void initState() { super.initState(); // Retrieve SharedPreferencesProvider instance outside async function final prefsProvider = Provider.of(context, listen: false); _prefsReady = prefsProvider.ready; _prefsReady!.then((_) { // Ensure the widget is still mounted before updating state if (mounted) { setState(() { // Check if the username is not set, then show ProfileScreen initially showProfileInitially = prefsProvider.getUserName().isEmpty; }); } }); } void toggleProfileScreen() { setState(() { isProfileActive = !isProfileActive; }); } void closeInitialProfileScreen() { setState(() { showProfileInitially = false; }); } @override Widget build(BuildContext context) { return MaterialApp( title: 'Pogdark', theme: ThemeData( primarySwatch: Colors.blue, visualDensity: VisualDensity.adaptivePlatformDensity, elevatedButtonTheme: ElevatedButtonThemeData( style: ElevatedButton.styleFrom( padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 12), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), ), ), ), ), home: FutureBuilder( future: _prefsReady, builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done) { return Stack( children: [ StatusPage(toggleProfile: toggleProfileScreen), if (showProfileInitially) BackdropFilter( filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), child: Container( color: Colors.black.withOpacity(0.3), child: Center( child: ProfileScreen( isEditing: false, onClose: closeInitialProfileScreen, ), ), ), ), if (isProfileActive && !showProfileInitially) BackdropFilter( filter: ImageFilter.blur(sigmaX: 5, sigmaY: 5), child: Container( color: Colors.black.withOpacity(0.3), child: Center( child: ProfileScreen( isEditing: true, onClose: toggleProfileScreen, ), ), ), ), ], ); } else { return const Center(child: CircularProgressIndicator()); } }, ), ); } }