Flutter运行报错:无法在AuthWrapper Widget上方找到正确的Provider<User>
报错解决方法
核心原因
你声明的StreamProvider没有明确指定泛型为User?,Provider默认将该流识别为dynamic类型,无法匹配AuthWrapper中context.watch<User>()的类型查询,因此抛出找不到对应Provider的错误。
修改步骤
- 将
MultiProvider中的StreamProvider声明补充泛型,修改后代码如下:
return MultiProvider( providers: [ Provider<Authservis>( create: (_) => Authservis(FirebaseAuth.instance), ), // 明确指定流的返回类型为User? StreamProvider<User?>( create: (context) => context.read<Authservis>().authStateChanges, initialData: null, ), ], child: MaterialApp( title: "APP", home: AuthWrapper(), ), );
- 额外检查你的
Authservis类中authStateChanges的定义是否符合要求,参考写法:
import 'package:firebase_auth/firebase_auth.dart'; class Authservis { final FirebaseAuth _firebaseAuth; Authservis(this._firebaseAuth); Stream<User?> get authStateChanges => _firebaseAuth.authStateChanges(); }
修改完成后重新运行项目即可解决该报错。
内容的提问来源于stack exchange,提问作者simeon nieuwenhuys
相关产品推荐
相关产品推荐

