flutter-vienna-hackathon-25/wien_talks/wien_talks_flutter/lib/helper/go_router.dart
2025-08-17 01:09:57 +02:00

31 lines
1 KiB
Dart

import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:wien_talks_flutter/create_event_screen.dart';
import 'package:wien_talks_flutter/helper/auth_service.dart';
import 'package:wien_talks_flutter/login_page.dart';
import 'package:wien_talks_flutter/news_screen.dart';
final router = GoRouter(
redirect: (context, state) {
final loggedIn = true; // AuthService.user != null;
final atLogin = state.matchedLocation == '/login';
if (!loggedIn && !atLogin) return '/login';
if (loggedIn && atLogin) return '/';
return null;
},
refreshListenable: AuthChangeNotifier(),
routes: [
GoRoute(path: '/login', builder: (c, s) => const LoginScreen()),
GoRoute(path: '/', builder: (c, s) => NewsScreen()),
GoRoute(
path: '/create_event',
name: 'create_event',
builder: (c, s) => CreateEventScreen()),
],
);
class AuthChangeNotifier extends ChangeNotifier {
AuthChangeNotifier() {
AuthService.onUserChanged.listen((_) => notifyListeners());
}
}