The argument type 'String? Function(GoRouterState)' can't be assigned to the parameter type 'FutureOr<String?> Function(BuildContext, GoRouterState)?'.
`final routerProvider = Provider((ref) {
final router = RouterNotifier(ref);
return GoRouter(
debugLogDiagnostics: true,
refreshListenable: router,
redirect: router._redirectLogic,
routes: router._routes);
});
class RouterNotifier extends ChangeNotifier {
final Ref _ref;
RouterNotifier(this._ref) {
ref.listen(
loginControllerProvider,
(, __) => notifyListeners(),
);
}
String? _redirectLogic(GoRouterState state) {
final loginState = _ref.read(loginControllerProvider);
final isLoggedIn = state.location == '/login';
if (loginState is LoginStateInitial) {
return isLoggedIn ? null : '/login';
}
if (isLoggedIn) return '/';
return null;
}
List get _routes => [
GoRoute(
name: 'login',
builder: (context, state) => const AppLoginScreen(),
path: '/login',
),
GoRoute(
name: 'home',
builder: (context, state) => const AppHomeScreen(),
path: '/',
),
GoRoute(
name: 'scan',
builder: (context, state) => const QRScanner(),
path: '/scan',
)
];
}`