Manraj Singh
Manraj Singh

Reputation: 110

GetxController obs value inside other controller

I want to use LoginController token value inside userController to get the authToken which is an obs value but the value I am getting inside userController is non updated(i.e null which is initially set value).

LoginController

final token = "".obs;

isLoggedIn()async{

var storageToken = await _storage.read(key: "token");

token (storageToken);
print(token.value) //gives a value

}

UserController

var loginController = Get.put(LoginController());

home()async{

var token = loginController.token.value

print(token) // gives empty string

}

Upvotes: 1

Views: 506

Answers (2)

Pradip D.
Pradip D.

Reputation: 676

You have to update token in LoginController by using update().

final token = "".obs;

isLoggedIn()async{

var storageToken = await _storage.read(key: "token");

token (storageToken);
print(token.value) //gives a value

update(); // <-----ADD THIS.. 
}

Happy Coding!!

Upvotes: 1

ShinMyth
ShinMyth

Reputation: 644

The reason for this is because you initialized again your LoginController by putting this code Get.put(LoginController()) on UserController.

You can approach this in two ways on your UserController:

var loginController = Get.find<LoginController>();
var token = loginController.token.value;

Or

var token = Get.find<LoginController>().token.value;

Upvotes: 1

Related Questions