Dart 构造函数中的大括号有什么作用?

Sim*_*onH 0 dart flutter

我从演示中复制了该代码的基本结构,并根据自己的需要对其进行了调整(并针对这个问题进行了缩减)。

但我对一些事情感到困惑。也许 Dart 专家可以启发我......

import 'package:flutter/material.dart';

// Show policy widget - shows 
class ShowPolicy extends StatelessWidget {
  final Policy policy;

  ShowPolicy(this.policy);

  @override
  Widget build(BuildContext context) {
    return Text('Test text ' + policy.riskName + ' ' + policy.policyNumber);
  }
}

// Policy class
class Policy {
  final String riskName;
  final String policyNumber;

  Policy( { this.riskName, this.policyNumber } );
}

// what is this variable doing here?. Shouldn't it be an a class?
List<Policy> allPolicies = [
  Policy(riskName: 'Lilly', policyNumber: 'PY123456-4'),
  Policy(riskName: 'Lilly', policyNumber: 'PY123456-3'),
  Policy(riskName: 'Lilly', policyNumber: 'PY123456-2'),
  Policy(riskName: 'Farnesbarnes', policyNumber: 'PY123647-1')
];
Run Code Online (Sandbox Code Playgroud)

所以基本上ShowPolicy返回一个文本小部件。它有一个接受Policy对象的构造函数。该类Policy包含 2 个成员变量,riskName并且policyNumber.

我的问题是:-

allPolicies最后声明的变量属于什么?为什么这里允许它并且为什么不必在类中声明它?

但我的主要问题是:- 为什么Policy类构造函数变量包含在大括号 {} 中?如果我删除它们,Policy 类仍然可以编译,但现在allPolicies变量不能编译(错误消息是“需要 2 个必需参数,但找到 0 个参数”)

Ale*_*uin 5

什么拥有最后声明的 allPolicies 变量?为什么这里允许它并且为什么不必在类中声明它?

在Dart中,允许有顶级变量和顶级函数。不要求他们在课堂上。

为什么 Policy 类构造函数变量要用大括号 {} 括起来?

大括号内的参数是可选的命名参数