0

我有一个使用 odoo_rpc 包连接到 odoo 实例的 Flutter 应用程序。

https://pub.dev/packages/odoo_rpc

如何在身份验证后保留会话数据并将其传递给多个页面。所以我可以顺利地使用这个包。

到目前为止,我得到的唯一解决方案是 shared_preferences。

让我知道是否应该提供一些代码片段。

已编辑

我这里有两个问题:

  1. 让用户保持登录状态。
  2. 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 ;
}            
4

0 回答 0