我有一个配置文件字段的列表,我想使用一个小部件来创建,但我是Flutter新手,似乎无法解决一件事:通过参数传递一个变量。我已经能够创建许多工作得很好的widget,使用的是 this.variable = value
但现在我想把它转换为一个单一的小部件,以避免重复,这就是我的问题所在。
我有下面的代码(当然,我认为不必要的都去掉了)。在这里,它目前显示的错误是 The setter 'listType' isn't defined for the class '_ProfileDataState'.
class _ProfileDataState extends State<ProfileData> {
final _countries = DropDownLists.countries;
String _country;
var listType; //<-- added this per comments
Widget profileDropDown(var list, var listType) {
return Card(
onTap: () async {
AlertDialog(
content: DropdownButtonFormField<String>(
isExpanded: true,
items: list.map((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
isDense: true,
value: listType,
onChanged: (value) {
FocusScope.of(context).requestFocus(FocusNode());
setState(() {
this.listType = value;
});
},
)
)
}
)
}
@override
Widget build(BuildContext context) {
return profileDropDown(_countries, _country),
...
class _ProfileDataState extends State<ProfileData> {
String _country;
var listType; // declare a variable
@override
void initState() {
super.initState();
listType = widget.listType; // assign it a value here
}
Widget profileDropDown(var listType) {
return Card(
onTap: () async {
AlertDialog(
onChanged: (value) {
FocusScope.of(context).requestFocus(FocusNode());
setState(() {
this.listType = value; // works
});
},
)
}
)
}
// other methods
}