Dart:Dart 如何匹配类的构造函数中的命名参数?

Posted

技术标签:

【中文标题】Dart:Dart 如何匹配类的构造函数中的命名参数?【英文标题】:Dart: How does Dart match the named parameters in a Constructor of a Class? 【发布时间】:2019-08-28 03:13:23 【问题描述】:

Dart 如何匹配类的构造函数中的命名参数?

示例(有效):

Class MyWidget 

    final String a;
    final String b;

    MyWidget (
        @required this.a,
        @required this.b
    )

    @override // Yes, it's Flutter
    Widget build(BuildContext context) 
        return ....
    



/// Calling MyWidget
return MyWidget(
    a: x,
    b: y
)

这按预期工作。 但是在这个设置中,我不得不将 MyWidget 中的变量命名为与命名参数相同,因为调用中的“a”与 MyWidget 中的“this.a”相同。

我想要的是这样的:

Class MyWidget 

   final String aaa;
   final String bbb;

   MyWidget (
       @required a // And assign that value to this.aaa,
       @required b // And assign that value to this.bbb
   )

如何将传递的命名参数“a”的值分配给局部变量“aaa”?

【问题讨论】:

【参考方案1】:

您必须权衡this.xxx 语法的简单性,如下所示:

class MyWidget 
  final String aaa;
  final String bbb;

  MyWidget(a, b)
      : aaa = a,
        bbb = b;

【讨论】:

感谢 Richard,我还在 Dartlang 手册中找到了它。它被称为“initializer list”

以上是关于Dart:Dart 如何匹配类的构造函数中的命名参数?的主要内容,如果未能解决你的问题,请参考以下文章

Dart中的类和单例模式

如何在 Dart 中调用超级构造函数?

Dart类(构造函数、单例)

Dart语言进阶语法

dart系列之:集合使用最佳实践

Flutter必备语言Dart教程03 - 类,泛型