Flutter:使用 ObjectKeys 的更好方法?

Flutter: Better way to use ObjectKeys?

我正在使用一个 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)不是常量表达式,所以不能作为默认参数使用。还有别的办法吗?

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

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

这称为 初始化程序列表 ,您可以找到有关 here 的更多信息。