【问题标题】:problem regarding flutter and i don't know how to fix it关于颤振的问题,我不知道如何解决
【发布时间】:2019-06-01 12:21:30
【问题描述】:

我遇到过这个问题;我在颤振中创建了一个DropDownButton (StateFulWidget),并且我可以访问我创建的项目的来源,即List。

通过map() 函数,我得到了这些项目并将它们注入DropdownMenuItem,一切正常。但是我想将项目的来源作为参数传递给我将在runapp() 方法中创建的对象的构造函数,但这不起作用。

弹出的原因之一是:

      • Widgets Library捕获的异常══════════════════ I/颤振 (7852):在构建 myMenu(脏, 状态:mymenu#39f55):I/flutter(7852):类型“列表”不是子类型 'List>' 类型的 I/flutter (7852):要么断言表明 框架本身的错误,或者我们应该提供大量 I/flutter (7852):此错误消息中的更多信息可帮助您 确定并解决根本原因。

如何解决这个问题?

这是我的代码:

class myMenu extends StatefulWidget {
  State<StatefulWidget> createState() {
    return mymenu(inputData);
  }

  var inputData;
  myMenu(input) {
    this.inputData = input;
  }
}

class mymenu extends State<myMenu> {
  var incomingData;
  var nameees;

  mymenu(input) {
    this.incomingData = input;
    this.nameees = incomingData[0];
  }

  Widget build(BuildContext context) {
    return DropdownButton<String>(
      items: incomingData.map((String name) {
        return DropdownMenuItem<String>(
          value: name,
          child: Text(name),
        );
      }).toList(),
      onChanged: (itemSelectedByUser) {
        setState(() {
          nameees = itemSelectedByUser;
        });
      },
      value: nameees,
     );
  }
}

var names = [

  "Java",
  "kotlin",
  "dart",
  "Flutter"
  "ruby",
  "ruby on Rails",
  "python",
  "django",
  "javascript",
  "nodejs",
  "express.js",
  "vue.js",
  "react.js"
  "Facebook",
  "YouTube",
  "Twitter",
  "Safari",
  "google"
];

var os = ["Windows", "Linux", "MAc", "iOS", "Android"];
var co = ["Samsung", "Apple", "Sony", "Nikon"];
var selectedItem = "Karrar";

【问题讨论】:

    标签: flutter


    【解决方案1】:

    您可以使用widget 从StatefulWidget 访问变量,如下例所示

    class myMenu extends StatefulWidget {
      final inputData;
      myMenu(
          {Key key,
            @required this.inputData,
            })
          : super(key: key);
      State<StatefulWidget> createState() => mymenu();
    
    
    }
    
    class mymenu extends State<myMenu> {
      var nameees;
    
    
    
      Widget build(BuildContext context) {
        return DropdownButton<String>(
          items: widget.inputData.map((String name) {
            return DropdownMenuItem<String>(
              value: name,
              child: Text(name),
            );
          }).toList(),
          onChanged: (itemSelectedByUser) {
            setState(() {
              nameees = itemSelectedByUser;
            });
          },
          value: nameees,
        );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-31
      • 1970-01-01
      • 2021-09-28
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 2021-06-12
      • 2022-08-22
      • 2023-02-03
      相关资源
      最近更新 更多