我有一个使用 odoo_rpc 包连接到 odoo 实例的 Flutter 应用程序。
https://pub.dev/packages/odoo_rpc
如何在身份验证后保留会话数据并将其传递给多个页面。所以我可以顺利地使用这个包。
到目前为止,我得到的唯一解决方案是 shared_preferences。
让我知道是否应该提供一些代码片段。
已编辑
我这里有两个问题:
- 让用户保持登录状态。
client
在不同页面之间导航时保持用户会话处于活动状态。
对于第二个问题,到目前为止,我唯一的解决方案是client
在使用Get.to(welcomeScreen(client));
到我到达的每个页面时传递。
登录页面
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Color(0xFFFBFCFF),
body: SingleChildScrollView(
// not important code
Text("Email",
style: TextStyle(
fontFamily: "Poppins",
fontSize: 26)
),
),
TextFormField(
validator: (value){
if(value!.isEmpty){
return("Enter your email");
}
},
controller: emailController,
),
const SizedBox(height:30),
Text("Password",
style: TextStyle(
fontFamily: "Poppins",
fontSize: 26)
),
),
TextFormField(
validator: (value){
if(value!.isEmpty){
return("Enter your password");
}
},
controller: passController,
),
Center(
child: Container(
// code for styling
child: MaterialButton(
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
shape: const StadiumBorder(),
child: const Text(
'Connexion',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: 25.0,
fontWeight: FontWeight.bold,
),
),
onPressed: () async {
var test = _loggin(emailController.text, passController.text);
}
)
登录功能
Future<bool> _loggin(email, password) async {
final client = OdooClient('http://localhost:8060');
String database = 'odoo';
String _crCheck;
print('test');
if (_formKey.currentState!.validate()) {
try {
await client.authenticate(database, email, password); 'call', {});
Get.to(welcomeScreen(client));
} on OdooException catch (e) {
print(e);
}
}
return true ;
}