如何在 flutter 中启用/禁用登录页面
How to enable /disable login page in flutter
请高手帮帮我..
我有一个应用程序,它具有使用密码的安全登录功能。每次用户打开应用程序时,用户都会从 MainPage 重定向到 LoginPage 以输入密码。
我想为用户选择启用或禁用设置页面上的安全登录。如果用户激活安全登录,则每次他打开应用程序时,用户都会从 MainPage 重定向到 LoginPage。如果用户禁用安全登录,用户会立即从 MainPage 重定向到 HomePage
例子
如果启用安全登录:
主页 -> 登录页面 -> 主页
如果禁用安全登录:
主页 -> 主页
主页代码
// MainPage
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'MainPage',
home: LoginPage(),
);
}
}
登录页面代码
// LoginPage
class LoginPage extends StatefulWidget {
@override
_LoginPageState createState() => _LoginPageState();
}
class _LoginPageState extends State<LoginPage> {
@override
Widget build(BuildContext context) {
return Container();
}
}
首页代码
// HomePage
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: InkWell(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Settings',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
],
),
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) => SettingsPage()));
},
)),
);
}
}
设置页面代码
// SettingsPage
class SettingsPage extends StatefulWidget {
@override
_SettingsPageState createState() => _SettingsPageState();
}
class _SettingsPageState extends State<SettingsPage> {
@override
Widget build(BuildContext context) {
return Container(
child: Container(
child: InkWell(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Secure Login enabled/disabled',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
],
),
onTap: () {},
)),
);
}
}
您可以使用 Shared Preferences 并执行此操作。
// Button function to enabled/disable
SharedPreferences prefs = await SharedPreferences.getInstance();
// Check if it was disabled previously
final bool disabled = await prefs.getBool('yourKey');
// Set flag depending if it was enable/disabled
prefs.setBool('yourKey', disabled == null? true : !disabled );
在您导航到登录页面之前,您应该检查他是否禁用了它。
SharedPreferences prefs = await SharedPreferences.getInstance();
final bool disabled = await prefs.getBool('yourKey');
这样做的想法是使用 Shared Preferences 包,如下例所示:
初始化共享首选项
SharedPreferences prefs = await SharedPreferences.getInstance();
根据您的需要从设置页面中根据用户的选择存储一个布尔值,例如:CheckBox
await prefs.setBool('CUSTOM_KEY_HERE', user's_bool_value_here);
每次用户按如下方式输入 MainPage() 时检索该值
bool isSecureMode = prefs.getBool('CUSTOM_KEY_HERE'); // make sure it is the same key
if (isSecureMode) {
// go to HomePage
} else {
// go to LoginPage
}
请高手帮帮我.. 我有一个应用程序,它具有使用密码的安全登录功能。每次用户打开应用程序时,用户都会从 MainPage 重定向到 LoginPage 以输入密码。
我想为用户选择启用或禁用设置页面上的安全登录。如果用户激活安全登录,则每次他打开应用程序时,用户都会从 MainPage 重定向到 LoginPage。如果用户禁用安全登录,用户会立即从 MainPage 重定向到 HomePage
例子
如果启用安全登录:
主页 -> 登录页面 -> 主页
如果禁用安全登录:
主页 -> 主页
主页代码
// MainPage
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'MainPage',
home: LoginPage(),
);
}
}
登录页面代码
// LoginPage
class LoginPage extends StatefulWidget {
@override
_LoginPageState createState() => _LoginPageState();
}
class _LoginPageState extends State<LoginPage> {
@override
Widget build(BuildContext context) {
return Container();
}
}
首页代码
// HomePage
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: InkWell(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Settings',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
],
),
onTap: () {
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) => SettingsPage()));
},
)),
);
}
}
设置页面代码
// SettingsPage
class SettingsPage extends StatefulWidget {
@override
_SettingsPageState createState() => _SettingsPageState();
}
class _SettingsPageState extends State<SettingsPage> {
@override
Widget build(BuildContext context) {
return Container(
child: Container(
child: InkWell(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Secure Login enabled/disabled',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
],
),
onTap: () {},
)),
);
}
}
您可以使用 Shared Preferences 并执行此操作。
// Button function to enabled/disable
SharedPreferences prefs = await SharedPreferences.getInstance();
// Check if it was disabled previously
final bool disabled = await prefs.getBool('yourKey');
// Set flag depending if it was enable/disabled
prefs.setBool('yourKey', disabled == null? true : !disabled );
在您导航到登录页面之前,您应该检查他是否禁用了它。
SharedPreferences prefs = await SharedPreferences.getInstance();
final bool disabled = await prefs.getBool('yourKey');
这样做的想法是使用 Shared Preferences 包,如下例所示:
初始化共享首选项
SharedPreferences prefs = await SharedPreferences.getInstance();
根据您的需要从设置页面中根据用户的选择存储一个布尔值,例如:CheckBox
await prefs.setBool('CUSTOM_KEY_HERE', user's_bool_value_here);
每次用户按如下方式输入 MainPage() 时检索该值
bool isSecureMode = prefs.getBool('CUSTOM_KEY_HERE'); // make sure it is the same key if (isSecureMode) { // go to HomePage } else { // go to LoginPage }