0

背景

在关注 London App Brewery 的 Bitcoin Ticker 项目时,我被困在试图DropdownMenuItem通过 for-in 循环创建 s 的过程中。Dart 分析给我的警告是Undefined name 'currency'. 这是产生错误的代码:

有问题的代码

List<DropdownMenuItem<String>> buildCurrencyDropdownMenuItems() {
  List<DropdownMenuItem<String>> items = [];
  for (currency in currenciesList) {
    items.add(DropdownMenuItem(child: Text(currency), value: currency));
  }
  return items;
}

问题

Dart中未定义的名称“货币”是什么意思?这真的意味着它是一个名为“货币”的未定义变量吗?

4

1 回答 1

0

Android Studio IDE 提示

我的 IDE 给了我三个提示,第一个Create local variable 'currency'似乎是正确的解决方案。但是,它会在 for-in 循环之外创建变量。问题是currency在 for-in 循环中没有定义

创建局部变量“货币”

创建局部变量“货币”

在 for-in 循环外定义的局部变量“货币”

从技术上讲,这种定义方式currency是正确的,但是很冗长并且需要一行额外的代码。 定义了局部变量“货币”

解决方案

我将变量类型放在 for-in 循环中,就像它们在 Dart 文档中显示的那样。我还将列表中每个项目的泛型更改var为更具体的String类型。

List<DropdownMenuItem<String>> buildCurrencyDropdownMenuItems() {
  List<DropdownMenuItem<String>> items = [];
  for (String currency in currenciesList) {
    items.add(DropdownMenuItem(child: Text(currency), value: currency));
  }
  return items;
}
于 2021-07-30T04:45:10.543 回答