Flutter 中的 Getter/Setter 使用 Android Studio

Posted

技术标签:

【中文标题】Flutter 中的 Getter/Setter 使用 Android Studio【英文标题】:Getter/Setter in Flutter using Android Studio 【发布时间】:2019-07-18 03:20:42 【问题描述】:

我正在 Flutter 中制作应用程序,并且为此使用 android Studio。但是使用alt+insert命令自动生成getter和setter并不能自动生成getter和setter,有什么办法吗?

【问题讨论】:

【参考方案1】:

在 Dart 中你不需要它。

一个字段相当于一个 getter/setter 对。 final 字段相当于一个 getter。

如果需要额外的逻辑,您只需将其更改为实际的 getter/setter,并且此更改对于该类的用户是非破坏性的。

如果 getter/setter 不包含其他逻辑,则私有字段的公共 getter/setter 方法在 Dart 中是一种反模式。

class Foo 
  String bar; // normal field (getter/setter)
  final String baz; // read-only (getter)

  int _weight;
  set weight(int value) 
    assert(weight >= 0);
    _weight = value;
  
  int get weight => _weight

【讨论】:

你能给我一个例子吗?看来您说得对,但我没有正确理解! 没有getter/setter的例子?我添加了一些代码,但我不知道你想看到什么。 有人想问谁自动生成“getter and setter”。不手动一一写【参考方案2】:

我没有清楚地理解您的问题,但请检查这是否有帮助。

String _myValue = "Hello World";

现在在 mac 中按 Comman+N 并选择 Getter 和 Setter。

现在您可以看到为您生成的 Getter 和 Setter。

String _myValue = "Hello World";

  String get myValue => _myValue;

  set myValue(String value) 
    _myValue = value;
  

确保使用“_”作为私有变量的前缀。

要了解 dart 中的 getter 和 setter,请关注 this youtube 视频。

编辑:

注意到我的回答获得了更高的票数,我有责任在这里澄清一些事情。正如 Günter Zöchbauer 正确提到的,Dart 不需要显式的 getter/setter 声明。

【讨论】:

在 android studio getter 和 setter 的先前更新中不会在颤振中自动创建..这就是我发布这个问题的原因! 现在工作了吗?你能解决这个问题吗? 是的android studio开始自动生成! 有谁知道如何在 Android Studio 中自动格式化 Dart 代码时删除 getter 之间的空白行?【参考方案3】:

在 Android 工作室中:

    在您声明它的行上右键单击变量名称。 在 Mac 上单击“显示上下文操作”或 Option + Enter 然后点击“封装字段”。

【讨论】:

【参考方案4】:

Android Studio 飞镖

我也遇到了同样的问题,我发现我们必须用下划线 (_TestVariable) 声明我们的私有变量名。

然后使用快捷键Alt + insert(在Windows上)自动生成Getters/Setters

class Books

  late int _id;

int get id => _id;

  set id(int value) 
    _id = value;
  

【讨论】:

以上是关于Flutter 中的 Getter/Setter 使用 Android Studio的主要内容,如果未能解决你的问题,请参考以下文章

c ++中的getter/setter是正确的方法吗?

Getter Setter:使用还是不使用?

Angular @Input getter/setter 和非原始值

getter和setter方法

Getter/Setter 作为函数

Dart中类的getter和setter