我正在尝试使用 Riverpod 的 ProviderListener 来监听我的 authProvider 并控制用户是否被授权时显示的页面。我收到错误:
错误:无法将参数类型“StateNotifierProvider<Auth, bool>”分配给参数类型“ProviderBase<Object, StateController>”。
错误显示在:Provider:authProvider,在 ProviderListener 内
我想知道这是否是由于 StateNotifierProvider 的更新?
我想知道如何更好地使用 ProviderListener,即使有更好的方法来处理授权流程(我非常愿意接受反馈和批评,非常感谢有人可以随时提供帮助)。我删掉了不相关的代码
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
class Auth extends StateNotifier<bool> {
Auth() : super(false);
void setAuth(bool auth) {
state = auth;
}
}
final authProvider = StateNotifierProvider<Auth, bool>((ref) => Auth());
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
runApp(
ProviderScope(
child: MyApp(),
),
);
}
class MyApp extends StatefulHookWidget {
// const MyApp({Key key}) : super(key: key);
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final Future<FirebaseApp> _fbMyApp = Firebase.initializeApp();
Widget route = SplashScreen();
@override
Widget build(BuildContext context) {
return ProviderListener<StateController<bool>>(
provider: authProvider,
onChange: (context, auth) {
if (auth.state = true) {
route = HomeScreen();
} else {
route = SplashScreen();
}
},
child: MaterialApp(
home: route,
);
}
}