我可以在Dart中分配对构造函数的引用吗?

时间:2018-11-06 04:35:41

标签: dart flutter

我的用例是在抖动中构造一个WidgetApp

new WidgetsApp(
  pageRouteBuilder: <Contructor for MaterialPageRoute here>,
  ...
);

我没有引用构造函数,而是将其包装在一个函数中:

PageRoute pageRouteBuilder(RouteSettings settings, WidgetBuilder builder) {
    return MaterialPageRoute(settings: settings, builder: builder);
}

然后再引用该函数:

new WidgetsApp(
  pageRouteBuilder: pageRoutebuilder,
  ...
);

2 个答案:

答案 0 :(得分:1)

在Dart历史上的某个时候它曾经是可能的(例如传播算子)。 虽然目前尚无法实现,但是该功能可能会在某个时候恢复。

同时,您可以为它们使用重构选项来生成一些样板。

答案 1 :(得分:1)

Dart(https://github.com/dart-lang/sdk/issues/10659)中不支持构造函数删除

但是即使支持它,您的代码也不能真正使用它。 MaterialPageRoute采用settingsbuilder作为命名参数,而PageRouteFactory采用2个位置参数。因此不会匹配。

您可以这样写:

  new WidgetsApp(
    pageRouteBuilder: (settings, builder) => MaterialPageRoute(settings: settings, builder: builder),
  );

自动推论允许您省略闭包参数中的类型。