如何在飞镖中初始化 Set 变量?

How to initialized Set variable in dart?

我使用飞镖 2.13.3。在我的 flutter 应用程序中,我无法初始化 Set 变量而不需要 annotation.I 想要在没有 final Set<V>initialSelectedValues; 的情况下构建构造函数 或不使用 required,因为从另一个调用来看,此参数只是可选的。但是显示错误并建议我在 final Set<V>initialSelectedValues;前面添加所需的注释。我该如何更改和解决这个错误?

class MultiSelectDialog<V> extends StatefulWidget {
  MultiSelectDialog({required this.items,this.initialSelectedValues});

  final List<MultiSelectDialogItem<V>> items;
  final Set<V>initialSelectedValues;

  @override
  State<StatefulWidget> createState() => _MultiSelectDialogState<V>();
}
final selectedValues = await showDialog<Set<int>>(
      context: context,
      builder: (BuildContext context) {
        return MultiSelectDialog(
          items: items,
          //initialSelectedValues: [1,2].toSet(),
        );
      },
    );

每个最终变量都必须有一个值,如果你想通过构造函数设置它们,你必须在每个参数前面加上“required”。

MultiSelectDialog({
  required this.items, 
  required this.initialSelectedValues }); 

现在,我可以解决这个问题。使用 const .

更改为默认参数
MultiSelectDialog({required this.items,this.initialSelectedValues = const {}});

  final List<MultiSelectDialogItem<V>> items;
  final Set<V> initialSelectedValues;