android-studio - 颤振重新登录它不会指向预期的主页
问题描述
Flutter Logout 指向登录页面,但重新登录后它不会重定向到预期的主页。
我已使用以下导航进行登录
Navigator.of(context).pushReplacement(PageRouteBuilder(pageBuilder: (_, __, ___) => Home()));
我的应用程序由三个底部导航栏组成。主页位于第二个导航栏中。我必须从第三个导航栏注销。
我已使用以下代码进行注销
Navigator.pushNamedAndRemoveUntil(context, '/Login', (_) => false);
我也试过代码
Navigator.popAndPushNamed(context, "/Login");
Navigator.of(context).pushAndRemoveUntil(MaterialPageRoute(builder: (BuildContext context) => Login(),), (Route route) => false);
请帮我找到解决方案。
解决方案
尝试使用共享首选项存储为登录密钥并检查它是否为真,然后转到主屏幕或重定向到登录屏幕。
首先在您的pubspec.yaml
dependencies:
flutter:
sdk: flutter
shared_preferences: ^0.5.6+2
闪屏.dart
这是我们检查isLogin是否为真然后转到HomeScreen或重定向到LoginScreen的第一个屏幕
_autoLogin() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
if (!prefs.containsKey('isLogin')) {
prefs.setBool('isLogin', false);
}
if (prefs.getBool('isLogin')) {
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => HomeScreen(),
));
} else {
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => LoginScreen(),
));;
}
}
登录界面.dart
_setIsLogin() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setBool('isLogin', true);
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => HomeScreen(),
));
}
MaterialButton(
minWidth: MediaQuery.of(context).size.width,
padding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0),
onPressed: () {
_setIsLogin();
},
child: Text("LOGIN",
textAlign: TextAlign.center,
style: style.copyWith(
color: Colors.white,
fontWeight: FontWeight.bold,
fontSize: 18.0)),
),
HomeScreen.dart
单击注销时将isLogin设置为false
_logout() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setBool('isLogin', false);
Navigator.pushReplacement(
context,
MaterialPageRoute(
builder: (context) => LoginScreen(),
));
}
我希望这可以帮助你!
推荐阅读
- msbuild - MSBuild 在 CMD 和 Visual Studio 开发人员命令提示符中返回非零错误级别,但不是 PowerShell
- android - 如何从 json 和手动添加项目?
- php - 不使用 Eloquent ORM 时如何构建 Laravel 应用程序
- python - 如何在 setup.py 中包含可执行文件
- ios - 在 Objective C 中的 FooterTableViewCell 中放置视图的问题
- macos - 使用 AppleScript 修改/更改 Outlook 日历事件
- python-3.x - 运行时在 python 中编译带有参数的函数
- perl - 在没有 Term::ReadKey 的 Perl 中丢弃 STDIN 上的额外换行符
- multithreading - 带有多线程 Apache 的 Flask_Sqlalchemy。会话与数据库不同步
- javascript - 在Javascript的循环中将数组中的值分配给三个不同的数组?