1. 登录状态的保存;利用shared_preferences: ^2.0.15
import 'package:shared_preferences/shared_preferences.dart';
class LoginMsg{
static Future<bool> getIsLogin() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
bool isLogin = (prefs.getBool('isLogin') ?? false);
return isLogin;
}
static Future<void> setIsLogin(bool isLogin) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setBool('isLogin', isLogin);
}
}
1.1判断:
initialRoute: isLogin ? AppPages.INITIAL1 : AppPages.INITIAL,
2. 用户数据的存储;利用sqflite_common_ffi: ^2.1.1
2.1初始化数据库(这里只保存用户名称和密码做演示):
sqfliteFfiInit();
var databaseFactory = databaseFactoryFfi;
var db = await databaseFactory.openDatabase(inMemoryDatabasePath);
await db.execute('''
CREATE TABLE UserInfo (
id INTEGER PRIMARY KEY,
userName TEXT,
pwd TEXT
)
''');
2.2 登录(保存用户登录的账号密码)
void _login() async{
await LoginMsg.setIsLogin(true);
if(_userNameController.text.isNotEmpty && _pwdController.text.isNotEmpty){
mlw_Loading.mlw_LoadingShow('正在登录');
var databaseFactory = databaseFactoryFfi;
var db = await databaseFactory.openDatabase(inMemoryDatabasePath);
await db.insert('UserInfo', <String, Object?>{'userName': '${_userNameController.text}','pwd':'${_pwdController.text}'});
mlw_Loading.mlw_LoadingDismiss();
Get.offNamed('/tabs');
}else{
BrnToast.show("账号密码为空", context,);
}
}
2.3退出登录(删除数据库)
void loginOut() async {
await LoginMsg.setIsLogin(false);
var databaseFactory = databaseFactoryFfi;
var db = await databaseFactory.openDatabase(inMemoryDatabasePath);
var result = await db.delete('UserInfo');
Get.offNamed('/login');
}
2.4查询 用户数据
var databaseFactory = databaseFactoryFfi
var db = await databaseFactory.openDatabase(inMemoryDatabasePath)
var result = await db.rawQuery('''SELECT
userName
FROM
UserInfo ''')