【问题标题】:Dart using * for making some methods instead definition itselfDart 使用 * 来制作一些方法而不是定义自己
【发布时间】:2020-09-21 12:58:48
【问题描述】:

你猜我有这个扩展:

extension MyWidget on Widget {
  Widget p(double padding) => Padding(padding: EdgeInsets.all(padding), child: this);
  Widget p0(double padding) => Padding(padding: EdgeInsets.zero, child: this);
  Widget p1(double padding) => Padding(padding: EdgeInsets.all(1), child: this);
  Widget p2(double padding) => Padding(padding: EdgeInsets.all(2), child: this);
  Widget p3(double padding) => Padding(padding: EdgeInsets.all(3), child: this);
  Widget p4(double padding) => Padding(padding: EdgeInsets.all(4), child: this);
  Widget p5(double padding) => Padding(padding: EdgeInsets.all(5), child: this);
  Widget p6(double padding) => Padding(padding: EdgeInsets.all(6), child: this);
  Widget p7(double padding) => Padding(padding: EdgeInsets.all(7), child: this);
  Widget p8(double padding) => Padding(padding: EdgeInsets.all(8), child: this);
  Widget p9(double padding) => Padding(padding: EdgeInsets.all(9), child: this);
  Widget p10(double padding) => Padding(padding: EdgeInsets.all(10), child: this);

  Widget center() => Center(child: this);
}

我怎样才能拥有这个示例方法而不是所有定义?

/* Center().p2 */
/* Center().p8 */
extension MyWidget on Widget {
  Widget p(double padding) => Padding(padding: EdgeInsets.all(padding), child: this);
  Widget p*() => Padding(padding: *, child: this);

  Widget center() => Center(child: this);
}

我知道,我可以在下面扩展,但我想知道这个实现是否可以在 dart 中定义

/* Center().p(2) */
extension MyWidget on Widget {
  Widget p(double padding) => Padding(padding: EdgeInsets.all(padding), child: this);

  Widget center() => Center(child: this);
}

【问题讨论】:

    标签: flutter dart extension-methods


    【解决方案1】:

    不,您创建动态签名的语法或类似的东西是不可能的。

    如果您希望为类似功能创建各种签名,代码生成通常是您想要研究的工具,但在这种情况下,我怀疑它是否是您想要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-07
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 2022-06-20
      • 2016-08-09
      • 2016-02-06
      • 1970-01-01
      相关资源
      最近更新 更多