我正在尝试将var放入dropdownlist

问题描述

这是我的代码 我想将一个var放在Flutter的下拉列表中

 new DropdownButton<String>(
          // value: selectedPurpose,hint: new Text(
            'Select visitng purpose',style: TextStyle(fontFamily: "Gotham"),),items: widget.size
              .map((purposeTemp) {
            return new DropdownMenuItem<String>(
              value: purposeTemp,child: new Text(
                purposeTemp,);
          }).toList(),onChanged: (String purpose) {
            setState(() {
              ss = purpose.toString();
            });
          },// value: selectedPurpose,)

am出现此错误 type 'List<dynamic>' is not a subtype of type 'List<DropdownMenuItem<String>>'

我该怎么办

解决方法

您可以在下面复制粘贴运行完整代码
您可以使用widget.size.map<DropdownMenuItem<String>>((String purposeTemp)
代码段

items: widget.size.map<DropdownMenuItem<String>>((String purposeTemp) {
    return DropdownMenuItem<String>(
      value: purposeTemp,child: Text(purposeTemp,style: TextStyle(fontFamily: "Gotham")),);
  }).toList(),

工作演示

enter image description here

完整代码

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

/// This Widget is the main application widget.
class MyApp extends StatelessWidget {
  static const String _title = 'Flutter Code Sample';

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: _title,home: Scaffold(
        appBar: AppBar(title: const Text(_title)),body: Center(
          child: MyStatefulWidget(
            size: ['One','Two','Free','Four'],),);
  }
}

class MyStatefulWidget extends StatefulWidget {
  List<String> size;
  MyStatefulWidget({Key key,this.size}) : super(key: key);

  @override
  _MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}

class _MyStatefulWidgetState extends State<MyStatefulWidget> {
  String selectedPurpose;

  @override
  Widget build(BuildContext context) {
    return DropdownButton<String>(
      value: selectedPurpose,style: TextStyle(color: Colors.deepPurple),hint: Text(
        'Select visitng purpose',style: TextStyle(fontFamily: "Gotham"),onChanged: (String Value) {
        setState(() {
          selectedPurpose = Value;
        });
      },items: widget.size.map<DropdownMenuItem<String>>((String purposeTemp) {
        return DropdownMenuItem<String>(
          value: purposeTemp,);
      }).toList(),);
  }
}