简体   繁体   English

我正在尝试在下拉列表中放置一个 var

[英]I'm trying to put a var in dropdownlist

This is my code I want to put a var in dropdown list in flutter这是我的代码,我想在 flutter 的下拉列表中放置一个 var

 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,
                style: TextStyle(fontFamily: "Gotham"),

              ),

            );
          }).toList(),
          onChanged: (String purpose) {
            setState(() {
              ss = purpose.toString();
            });
          },
          // value: selectedPurpose,
        )

am getting this error type 'List<dynamic>' is not a subtype of type 'List<DropdownMenuItem<String>>'我收到此错误type 'List<dynamic>' is not a subtype of type 'List<DropdownMenuItem<String>>'

what should I do to solve it我该怎么做才能解决它

You can copy paste run full code below您可以在下面复制粘贴运行完整代码
You can use widget.size.map<DropdownMenuItem<String>>((String purposeTemp)您可以使用widget.size.map<DropdownMenuItem<String>>((String purposeTemp)
code snippet代码片段

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

working demo工作演示

在此处输入图片说明

full code完整代码

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,
          child: Text(purposeTemp, style: TextStyle(fontFamily: "Gotham")),
        );
      }).toList(),
    );
  }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM