如何解决导航到新屏幕时提供程序不起作用
我通过提供者实现了身份验证
问题是何时第一次通知 myHomeCalss 用户已通过不返回正确页面(MainGui)进行身份验证
SplashPages 是一个带有继续按钮的页面,并推送登录页面,
登录页面被推送到客户之外
但是当我没有通过 SplashPages 时,它就完美了
请随意
//启动页面
ContinueButton(
onPressed: (){
Navigator.push(
context,MaterialPageRoute(
builder: (_) =>
ListenableProvider.value(
value: yourModel,child: LoginPage(),),);
}
)
//主
void main() async {
setupLocator();
WidgetsFlutterBinding.ensureInitialized();
await firebase_core.Firebase.initializeApp();
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => AuthenticationService()),],child: MyApp(),);
}
//我的应用
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHome(),builder: (context,child) => Navigator(
key: locator<DialogService>().dialogNavigationKey,onGenerateRoute: (settings) => MaterialPageRoute(
builder: (context) => DialogManager(child: child)),));
}
}
我的家
Class MyHome extends StatelessWidget {
@override
Widget build(BuildContext context) {
return SafeArea(
child: FutureBuilder<bool>(
future: startTime(),builder: (BuildContext context,AsyncSnapshot<bool> snapshot2) {
if (snapshot2.hasData) {
if (snapshot2.data) {
return SplashPages();
} else {
return Consumer<AuthenticationService>(builder: (_,auth,__) {
if (auth.currentUserr == null) {
return LoginPage();
} else {
return FutureBuilder(
future: auth.populateCurrentUser(auth.currentUserr),snapshot) {
if (snapshot.hasData) {
if (auth.currentUserr.emailVerified) {
return MainGui();
} else {
return ValidationMailPage(
email: auth.currentUserr.email,);
}
} else
return Container(
// child: Center(
// child: SpinKitRotatingCircle(
// color: Colors.white,// size: 50.0,// ))
);
});
}
});
}
}
解决方法
您可以考虑使用 SharedPreferences,您将在其中存储用户(或者可能只是令牌),然后在呈现应用程序之前检查 main 是否存储有令牌/用户;如果有令牌,您登录然后推送到主页,如果没有,则直接导航到登录页面。
SharedPrefenreces 是持久化数据存储,即使您重新启动应用程序,它也会持续存在,但 Provider 是一种状态管理解决方案,不会在应用程序重新启动之间持续存在。
这是您可以使用的 SharedPreferences 插件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。