Three days ago i asked same question but I got no answer, So here I am again asking. is there a way to keep the same connection (client) after login to odoo instance and work with it across pages, if so how it's done ?
import 'package:odoo_rpc/odoo_rpc.dart';
Future<bool> _loggin(email, password) async {
final client = OdooClient('http://localhost:8069');
// String database = 'CENTRAL-KAD';
String database = 'odoo';
String email = 'admin';
String password = "admin";
if (_formKey.currentState!.validate()) {
try {
final session = await client.authenticate(database, email, password);
final res = await client.callRPC('/web/session/modules', 'call', {});
print('Installed modules: \n' + res.toString());
Navigator.push(context,
MaterialPageRoute(builder: (context) => const welcomscreen()),
);
} on OdooException catch (e) {
print(e);
}
}
}
Welcome_screen
I want to get the connection which is client
in this page so to CRUD with it, and without openning new connection
class welcomeScreen extends StatefulWidget {
welcomeScreen();
@override
_welcomeScreenState createState() => _welcomeScreenState();
}
class _welcomeScreenState extends State<welcomeScreen> {
_welcomeScreenState();
@override
Widget build(BuildContext context) {
return Scaffold(
///... some view ...
child: MaterialButton(
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
shape: const StadiumBorder(),
child: const Text(
'Find Customer',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontSize: 32.0,
fontWeight: FontWeight.bold,
),
),
onPressed: (){
client.callKw({
'model': 'res.partner',
'method': 'search_read',
'args': [],
'kwargs': {
'context': {'bin_size': true},
'domain': [],
'fields': ['id', 'name', 'email', '__last_update', 'image_128'],
'limit': 80,
},
});
}
)
);
}
i found the answer, all you i have to do is pass
client
while navigating to other page as following: