1

我正在使用一个 StatefulWidget,它的构造函数包含一个对象,比如

class X extends StatefulWidget {
  X({this.o});
  Object o;
...
}

有时会发生,这个对象o发生了变化,但小部件X没有更新,所以我不得不在构造函数中添加一个 ObjectKey:

class X extends StatefulWidget {
  X({this.o, this.key});
  Object o;
  ObjectKey key;
...
}

现在每次我调用构造函数时,我都必须调用X(o: o, key: ObjectKey(o));. 有没有更好的方法来做到这一点?如果构造函数本身管理它,那就太好了,比如

class X extends StatefulWidget {
  X({this.o, this.key = ObjectKey(o)});
  Object o;
  ObjectKey key;
...
}

但由于ObjectKey(o)不是常量表达式,它不能用作默认参数。还有其他方法吗?

4

1 回答 1

2

您可以通过在构造函数中使用此表示法来完成您想要的操作:

class X extends StatefulWidget {
  X({this.o}) : key = ObjectKey(o);
  Object o;
  ObjectKey key;
}

这称为初始化列表,您可以在此处找到更多信息。

于 2020-07-09T15:14:42.913 回答