在 Flutter 中的 GetX 控制器中访问 RxMap 值时出现问题

问题描述 投票:0回答:1

在 Flutter 中的 GetX 控制器中访问 RxMap 值时出现问题

我在 Flutter 项目中使用 GetX 时遇到问题。我有一个使用 GetX 进行状态管理的 LoginController。在这个控制器中,我有一个 RxMap 类型的变量用户。在我的 HomeAppBar 小部件中,我尝试使用 Obx 从控制器访问用户变量,但在访问其值时遇到困难。

这是我的代码的简化版本:

// 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 小部件中用户变量的值?

任何帮助或见解将不胜感激。谢谢!

flutter flutter-dependencies flutter-getx
1个回答
0
投票

你可以像这样简单使用它就可以了。

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"]
        ],
      );
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.