我有以下方法:

List<DropdownMenuItem<String>> _buildGitIgnoreTemplateItems() {
    var _dropDownMenuItems = List<DropdownMenuItem<String>>();

    _gitIgnoreTemplateNames.forEach((templateName) {
        _dropDownMenuItems.add(DropdownMenuItem(
            child: Text(templateName),
            value: templateName,
        ));
    });

    return _dropDownMenuItems;
}

我正在尝试实现的是删除变量_dropDownMenuItems,例如:
List<DropdownMenuItem<String>> _buildGitIgnoreTemplateItems() {
    _gitIgnoreTemplateNames.forEach((templateName) {
        **yield return** DropdownMenuItem(
            child: Text(templateName),
            value: templateName,
        );
    });
}

您可以看到其他语言的类似实现,例如:C#

最佳答案

C#太早了,但是看起来像Synchronous generators

Iterable<DropdownMenuItem<String>> _buildGitIgnoreTemplateItems() sync* {
    for(var templateName in _gitIgnoreTemplateNames) {
        yield DropdownMenuItem(
            child: Text(templateName),
            value: templateName,
        );
    }
}

但是也许你只是想要
_gitIgnoreTemplateNames.map((templateName) =>
    DropdownMenuItem(
      child Text(templateName),
      value: templateName)
    ).toList()

10-06 09:38