FlutterDart。传递this. 变量作为参数

问题描述 投票:0回答:1

我有一个配置文件字段的列表,我想使用一个小部件来创建,但我是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),
...
function class flutter variables dart
1个回答
0
投票
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
}
© www.soinside.com 2019 - 2024. All rights reserved.