76 lines
1.7 KiB
Dart
76 lines
1.7 KiB
Dart
import 'package:appwrite/appwrite.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'appwrite_config.dart';
|
|
import 'screens/auth/auth_screen.dart';
|
|
import 'screens/app_logged_in_gate.dart';
|
|
import 'theme/app_theme.dart';
|
|
|
|
void main() {
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
runApp(const HandwerksApp());
|
|
}
|
|
|
|
class HandwerksApp extends StatefulWidget {
|
|
const HandwerksApp({super.key});
|
|
|
|
@override
|
|
State<HandwerksApp> createState() => _HandwerksAppState();
|
|
}
|
|
|
|
class _HandwerksAppState extends State<HandwerksApp> {
|
|
bool _checking = true;
|
|
bool _loggedIn = false;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_probeSession();
|
|
}
|
|
|
|
Future<void> _probeSession() async {
|
|
setState(() => _checking = true);
|
|
try {
|
|
await Account(appwriteClient).get();
|
|
if (mounted) {
|
|
setState(() {
|
|
_loggedIn = true;
|
|
_checking = false;
|
|
});
|
|
}
|
|
} catch (_) {
|
|
if (mounted) {
|
|
setState(() {
|
|
_loggedIn = false;
|
|
_checking = false;
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return MaterialApp(
|
|
title: 'HandwerkPro',
|
|
debugShowCheckedModeBanner: false,
|
|
theme: AppTheme.dark(),
|
|
home: _checking
|
|
? const Scaffold(
|
|
backgroundColor: AppTheme.background,
|
|
body: Center(child: CircularProgressIndicator()),
|
|
)
|
|
: _loggedIn
|
|
? AppLoggedInGate(
|
|
onLoggedOut: () {
|
|
setState(() => _loggedIn = false);
|
|
},
|
|
)
|
|
: AuthScreen(
|
|
onLoggedIn: () {
|
|
setState(() => _loggedIn = true);
|
|
},
|
|
),
|
|
);
|
|
}
|
|
}
|