【问题标题】:The member 'value' can only be used within instance members of subclasses with flutter GetX成员“值”只能在 Flutter GetX 子类的实例成员中使用
【发布时间】:2021-11-26 07:20:39
【问题描述】:

我在这个例子中遇到过这个问题:

class AuthController extends GetxController {

  final storage =  const FlutterSecureStorage();
  var authData = [].obs;
  var isLoading = false.obs;
  var authLoading = false.obs;

  @override
  onInit() {
    authUser();
    super.onInit();
  }

   authUser() async {
     var all =  await storage.readAll();
    authData.value = all.entries
        .map((e) => AuthModel(key: e.key, value: e.value)).toList(growable: false);

  }

   bool isAuth() {
    var a = isLoading.value.isBlank;
  return authData.value.isNotEmpty;
  }

在这一行:

return authData.value.isNotEmpty;

IDE 在 (value) 下添加行并发出如下警告:

The member 'value' can only be used within instance members of subclasses of 'package:get/get_rx/src/rx_types/rx_iterables/rx_list.dart'.

我该如何解决这个问题?或者只是解决它? >>> 提前谢谢你

【问题讨论】:

  • 您通常订阅 observables,而不是访问原始值。
  • 但是除了这个警告之外没有任何问题

标签: flutter flutter-getx obs


【解决方案1】:

列表默认是反应式的。因此,与其他 observable 不同的是,您不需要使用 .value 来访问该列表。但声明时需要使用.obs

如果您也想将.value 与列表一起使用,也可以使用类似的方法:

final authData = RxList([]);

更新

它不能正常工作和按预期工作的原因是这样的:

authData.value = all.entries
    .map((e) => AuthModel(key: e.key, value: e.value)).toList(growable: false);

如果设置 RxLists 的值,您应该像这样在 RxList 上使用assignAll 方法:

authData.assignAll(all.entries
    .map((e) => AuthModel(key: e.key, value: e.value)).toList(growable: false));

【讨论】:

  • 没有 .value 它不能正常工作,如预期的那样......并且最终 authData = RxList([]);它也显示了同样的问题
  • 检查更新的答案
  • 谢谢朋友.....它成功了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 2017-06-06
  • 1970-01-01
  • 2015-11-27
  • 1970-01-01
相关资源
最近更新 更多