在 Flutter 中制作 Auth provider
Making an Auth provider in Flutter
我正在制作一个 flutter 应用程序,我需要一个 Auth 提供程序来处理诸如保存用户数据、刷新令牌功能等身份验证事务。
我希望在尝试进行 api 调用之前在我的其他提供程序中使用此提供程序来检查用户是否已登录,并且我偶然发现了 ProxyProvider 和 ChangeNotifierProxyProvider,但我不断收到此错误“错误:在此 _InheritedProviderScope 小部件之上找不到正确的提供程序”。
这是我的一部分 main.dart:
MultiProvider(
providers: [
ChangeNotifierProvider(
create: (ctx) {
AuthProvider auth = AuthProvider();
auth.init();
},
lazy: false,
),
ChangeNotifierProxyProvider<AuthProvider, BookingProvider>(
create: (ctx) => BookingProvider(),
update: (ctx, authProvider, bookingProvider) => bookingProvider!..updateAuth(authProvider),
),
],
child: MaterialApp(...
这里是我收到的错误:
Widget build(BuildContext context) {
BookingProvider bookingProvider = Provider.of<BookingProvider>(context);
return Container();
}
此屏幕位于 main.dart 的 MultiProvider 小部件下,在使用 ChangeNotifierProxyProvider 之前,我对其中的此提供程序没有任何问题。
也许这不是最好的解决方案,因为我还是 flutter 的新手,如果有更好的方法请告诉我。
ChangeNotifierProvider(
create: (ctx) {
AuthProvider auth = AuthProvider();
auth.init();
return auth;
},
lazy: false,
),
已解决,缺少 return 授权;在创建函数中。
我正在制作一个 flutter 应用程序,我需要一个 Auth 提供程序来处理诸如保存用户数据、刷新令牌功能等身份验证事务。
我希望在尝试进行 api 调用之前在我的其他提供程序中使用此提供程序来检查用户是否已登录,并且我偶然发现了 ProxyProvider 和 ChangeNotifierProxyProvider,但我不断收到此错误“错误:在此 _InheritedProviderScope 小部件之上找不到正确的提供程序”。
这是我的一部分 main.dart:
MultiProvider(
providers: [
ChangeNotifierProvider(
create: (ctx) {
AuthProvider auth = AuthProvider();
auth.init();
},
lazy: false,
),
ChangeNotifierProxyProvider<AuthProvider, BookingProvider>(
create: (ctx) => BookingProvider(),
update: (ctx, authProvider, bookingProvider) => bookingProvider!..updateAuth(authProvider),
),
],
child: MaterialApp(...
这里是我收到的错误:
Widget build(BuildContext context) {
BookingProvider bookingProvider = Provider.of<BookingProvider>(context);
return Container();
}
此屏幕位于 main.dart 的 MultiProvider 小部件下,在使用 ChangeNotifierProxyProvider 之前,我对其中的此提供程序没有任何问题。
也许这不是最好的解决方案,因为我还是 flutter 的新手,如果有更好的方法请告诉我。
ChangeNotifierProvider(
create: (ctx) {
AuthProvider auth = AuthProvider();
auth.init();
return auth;
},
lazy: false,
),
已解决,缺少 return 授权;在创建函数中。