mirror of
https://github.com/timokz/flutter-vienna-hackathon-25.git
synced 2025-11-08 19:04:20 +01:00
31 lines
1 KiB
Dart
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 = 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());
|
|
}
|
|
}
|