在 Flutter 中的 GetX 控制器中访问 RxMap 值时出现问题
我在 Flutter 项目中使用 GetX 时遇到问题。我有一个使用 GetX 进行状态管理的 LoginController。在这个控制器中,我有一个 RxMap
这是我的代码的简化版本:
// LoginController
class LoginController extends GetxController {
var user = {}.obs;
void userExists(String phoneNumberTyped) async {
try {
var responseData = await networkRepository.checkUser(number: phoneNumberTyped);
user.value = responseData['body'];
} catch (error) {
// Handle error
}
}
}
// HomeAppBar
class HomeAppBar extends StatelessWidget {
const HomeAppBar({Key? key});
@override
Widget build(BuildContext context) {
final LoginController loginController = Get.put(LoginController());
return Obx(() {
RxMap<dynamic, dynamic> userData = loginController.user;
return Column(
children: [
Text(userData.toString(),
],
);
});
}
}
我面临的问题是我无法访问 HomeAppBar 小部件中用户变量的 value 属性。当我尝试访问 userData.value.toString() 时,出现错误,指出“value”只能在“package:get/get_rx/src/rx_types/rx_iterables/rx_map.dart”的子类的实例成员中使用'.
如何正确访问 HomeAppBar 小部件中用户变量的值?
任何帮助或见解将不胜感激。谢谢!
你可以像这样简单使用它就可以了。
class HomeAppBar extends StatelessWidget {
HomeAppBar({Key? key});
final loginController = Get.put(LoginController());
@override
Widget build(BuildContext context) {
return Column(
children: [
Obx(() => Text(loginController.user.toString()))// use can access value like this loginController.user["name"]
],
);
}
}