Flutter 颤振:在FutureBuilder上找不到提供程序
我试图导航到一个屏幕,其中取决于3个因素:Flutter 颤振:在FutureBuilder上找不到提供程序,flutter,provider,flutter-futurebuilder,Flutter,Provider,Flutter Futurebuilder,我试图导航到一个屏幕,其中取决于3个因素: 如果应用程序以前运行过或没有运行过 如果用户是否为空 是否验证了电子邮件 import'package:client/providers/auth_provider.dart'; 进口“包装:颤振/材料.省道”; 导入“包:firebase_auth/firebase_auth.dart”; 导入“包:provider/provider.dart”; 导入“package:shared_preferences/shared_preferences.d
import'package:client/providers/auth_provider.dart';
进口“包装:颤振/材料.省道”;
导入“包:firebase_auth/firebase_auth.dart”;
导入“包:provider/provider.dart”;
导入“package:shared_preferences/shared_preferences.dart”;
导入“../screens/home_screen.dart”;
导入“../screens/login_screen.dart”;
类包装器扩展了StatefulWidget{
@凌驾
_WrapperState createState()=>\u WrapperState();
}
类_包装器状态扩展状态{
FirebaseAuth auth=FirebaseAuth.instance;
@凌驾
void initState(){
super.initState();
}
@凌驾
小部件构建(BuildContext ctx){
回归未来建设者(
future:hasAlreadyStarted(),
生成器:(ctx,快照){
返回提供程序。of(ctx)!=null&&
snapshot.data==true&&
AuthProvider().isEmailVerified
?主屏幕()
:LoginScreen();
});
}
Future hasAlreadyStarted()异步{
SharedReferences prefs=等待SharedReferences.getInstance();
试一试{
if(prefs.getBool(“hasRun”)==null){
等待AuthProvider()。注销();
设置状态(){
prefs.setBool(“hasRun”,true);
});
返回true;
}否则{
返回true;
}
}捕获(错误){
设置状态(){
prefs.setBool(“hasRun”,null);
});
返回false;
}
}
}
我只需要用StreamProvider包装整个MaterialApp我只需要用StreamProvider包装整个MaterialApp