首页 > 解决方案 > Dart 没有为类定义方法“setRng”

问题描述

我上了一个课,不知道为什么我的 getter 很好,但是 setter 显示为在颤振中没有定义。

class Test {
  int range = 1000;

  set setRng(int val) => range = val;

  get getRng => range;
}

Test.getRng没有错误..

Test.setRng(100)抛出错误The method 'setRng' isn't defined for the class 'Test'

显然他们都被定义了..?

标签: flutterdartsetter

解决方案


在 Dart 中,您使用setter = value;. 所以你的代码可以这样修改:

test.setRng = 0;

Getter 和 setter 使成员函数看起来像成员变量。按照惯例,它们可以具有类似名称的变量,例如:

class Test {
  int _range = 1000;

  set range(int val) => _range = val; // optionally perform validation, etc

  int get range => _range;
}

现在使用时看起来更自然:

test.range = 123; // using the setter
print(test.range); // using the getter

推荐阅读