如何在颤动中为下拉菜单设置初始值?
how to set initial value to dropdown menu in flutter?
flutter中如何给下拉菜单设置初始值?
在下拉菜单中我想设置初始值,目前显示提示值"Select Language"。我需要初始值在那里显示。比如我的初始值为英文,那应该是我下拉菜单中的选中项。
下面是我的代码:
new DropdownButtonHideUnderline(
child: new DropdownButton<Language>(
hint: new Text("Select Language"),
value: selectedLanguage,
onChanged: (Language newValue) {
applic.onLocaleChanged(new Locale(newValue.languageCode,''));
setState(() {
selectedLanguage = newValue;
});
},
items: listLanguage.map((Language language) {
return new DropdownMenuItem<Language>(
value: language,
child: new Text(
language.languageName ,
style: new TextStyle(color: Colors.black),
),
);
}).toList(),
),
)
我的列表初始化为:
List<Language> listLanguage =
<Language> [new Language("English", "en"),
new Language("French", "fr"),
new Language("Hindi", "hi"),
];
Language selectedLanguage;
为了使下拉菜单能够识别哪些语言是相同的,您需要实施 operator==
和 hashCode
:
class Language {
final String code;
final String name;
const Language(this.name, this.code);
int get hashCode => code.hashCode;
bool operator==(Object other) => other is Language && other.code == code;
}
至少如果你不使用 const
like
const Language("English", "en"),
或重复使用之前创建的实例
selectedLanguage = listLanguage[0];
因为没有 operator==
或 const
selectedLanguage = new Language("English", "en");
将指向与 listLanguage
中的完全不同的 Language
实例,其中下拉菜单现在知道它们应该被识别为相同。
flutter中如何给下拉菜单设置初始值?
在下拉菜单中我想设置初始值,目前显示提示值"Select Language"。我需要初始值在那里显示。比如我的初始值为英文,那应该是我下拉菜单中的选中项。
下面是我的代码:
new DropdownButtonHideUnderline(
child: new DropdownButton<Language>(
hint: new Text("Select Language"),
value: selectedLanguage,
onChanged: (Language newValue) {
applic.onLocaleChanged(new Locale(newValue.languageCode,''));
setState(() {
selectedLanguage = newValue;
});
},
items: listLanguage.map((Language language) {
return new DropdownMenuItem<Language>(
value: language,
child: new Text(
language.languageName ,
style: new TextStyle(color: Colors.black),
),
);
}).toList(),
),
)
我的列表初始化为:
List<Language> listLanguage =
<Language> [new Language("English", "en"),
new Language("French", "fr"),
new Language("Hindi", "hi"),
];
Language selectedLanguage;
为了使下拉菜单能够识别哪些语言是相同的,您需要实施 operator==
和 hashCode
:
class Language {
final String code;
final String name;
const Language(this.name, this.code);
int get hashCode => code.hashCode;
bool operator==(Object other) => other is Language && other.code == code;
}
至少如果你不使用 const
like
const Language("English", "en"),
或重复使用之前创建的实例
selectedLanguage = listLanguage[0];
因为没有 operator==
或 const
selectedLanguage = new Language("English", "en");
将指向与 listLanguage
中的完全不同的 Language
实例,其中下拉菜单现在知道它们应该被识别为相同。