pogdark-app-flutter/lib/main.dart
whysman 996c294153
All checks were successful
Build Flutter Web and Docker Image for Local Registry / Build Flutter Web App (push) Successful in 3m7s
Modified build.yaml, added logo, made profile screen float
2024-11-09 22:50:56 -05:00

121 lines
3.4 KiB
Dart

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<MyApp> {
Future<void>? _prefsReady;
bool isProfileActive = false;
bool showProfileInitially = false;
@override
void initState() {
super.initState();
_prefsReady =
Provider.of<SharedPreferencesProvider>(context, listen: false).ready;
_prefsReady!.then((_) {
final prefsProvider =
Provider.of<SharedPreferencesProvider>(context, listen: false);
// Check if username is not set; if so, show ProfileScreen initially
if (prefsProvider.getUserName().isEmpty) {
setState(() {
showProfileInitially = true;
});
}
});
}
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, // Close after setup
),
),
),
),
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, // Toggle on edit
),
),
),
),
],
);
} else {
return const Center(child: CircularProgressIndicator());
}
},
),
);
}
}