在 flutter 中添加下拉按钮时出错

Error while adding dropdown button in flutter

我对 Flutter 下拉菜单有疑问。当我 select 其中一项时,它会抛出错误:

'package:flutter/src/material/dropdown.dart':断言失败:第 620 行第 15 行:'items == null || items.isEmpty || value == null || items.where((DropdownMenuItem item) => item.value == value).length == 1':不正确。

我不明白背后的真正问题是什么 this.I 发现当我在下拉菜单中评论值字段时程序将 run.but 当我 运行 没有评论时这将是显示错误 this.I 不知道 this.I 新手后面发生了什么所以请帮助... 谢谢 这是我的代码:

import 'package:flutter/material.dart';
import 'package:states_lga/mode.dart';
import 'package:states_lga/repository.dart';
import 'package:states_lga/staterespo.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Home(),
    );
  }
}

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  String dropdownValue = "india";
  String dropdownValue1 = "select country bitch";

  List<String> city = ["india", "gjhjgh", "dhdtytd"];
  var countries = ["choose a country"];
  int i = 0;
  var countrystate = example.countryStateCity;
  @override
  void initState() {
    countrystate.forEach((doc) {
      print(doc["country"]);
      countries.add(doc["country"]);
      print(doc);
    });
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("STATES MULTI DROPDOWN"),
        elevation: 0.1,
      ),
      body: SafeArea(
        child: Container(
          padding: EdgeInsets.symmetric(horizontal: 50, vertical: 30),
          child: Column(
            children: <Widget>[
              new DropdownButton<String>(
                underline: Container(
                  height: 0,
                ),
                isExpanded: true,
                items: countries.map<DropdownMenuItem<String>>((String value1) {
                  // print(dropdownValue1);
                  print(value1);
                  // print(countries);
                  return DropdownMenuItem<String>(
                    value: value1,
                    child: Padding(
                      // padding: EdgeInsets.all(ScreenUtil().setWidth(10.0)),
                      padding: EdgeInsets.all(10),
                      child: Text(
                        value1,
                        style: TextStyle(
                            // color: HexColor("#1C2344"),
                            // fontSize: ScreenUtil().setSp(12),
                            fontFamily: 'Poppins-ExtraLight'),
                      ),
                    ),
                  );
                }).toList(),
                onChanged: (String newValue) {
                  setState(() {
                    print(newValue);
                    dropdownValue1 = newValue;
                    print("this is after..." + dropdownValue1);
                  });
                },
                value: dropdownValue1,
              )
            ],
          ),
        ),
      ),
    );
  }
}

这是我的 dmmy 数据:



class example{


static List<Map<String, Object>> countryStateCity = [
  {
    "id": 1,
    "country": "Afghanistan",
    "iso3": "AFG",
    "iso2": "AF",
    "phone_code": "93",
    "capital": "Kabul",
    "currency": "AFN",
    "states": {
      "Badakhshan": [
        "Ashkāsham",
        "Fayzabad",
        "Jurm",
        "Khandūd",
        "Rāghistān",
        "Wākhān"
      ],
      "Badghis": ["Ghormach", "Qala i Naw"],
      "Baghlan": [
        "Ḩukūmatī Dahanah-ye Ghōrī",
        "Baghlān",
        "Nahrīn",
        "Pul-e Khumrī"
      ],
      "Balkh": [
        "Balkh",
        "Dowlatābād",
        "Khulm",
        "Lab-Sar",
        "Mazār-e Sharīf",
        "Qarchī Gak"
      ],
      "Bamyan": ["Bāmyān", "Panjāb"],
      "Daykundi": ["Nīlī"],
      "Farah": ["Farah"],
      "Faryab": ["Andkhōy", "Maymana"],
      "Ghazni": ["Ghazni"],
      "Ghōr": ["Fayrōz Kōh", "Shahrak"],
      "Helmand": [
        "‘Alāqahdārī Dīshū",
        "Gereshk",
        "Lashkar Gāh",
        "Markaz-e Ḩukūmat-e Darwēshān",
        "Sangīn"
      ],
      "Herat": [
        "Chahār Burj",
        "Ghōriyān",
        "Herāt",
        "Kafir Qala",
        "Karukh",
        "Kuhsān",
        "Kushk",
        "Qarah Bāgh",
        "Shīnḏanḏ",
        "Tīr Pul",
        "Zindah Jān"
      ],
      "Jowzjan": ["Āqchah", "Darzāb", "Qarqīn", "Shibirghān"],
      "Kabul": ["Kabul", "Mīr Bachah Kōṯ", "Paghmān"],
      "Kandahar": ["Kandahār"],
      "Kapisa": ["Sidqābād"],
      "Khost": ["Khōst"],
      "Kunar": ["Asadābād", "Āsmār"],
      "Kunduz Province": [
        "Dasht-e Archī",
        "Imām Şāḩib",
        "Khanabad",
        "Kunduz",
        "Qarāwul"
      ],
      "Laghman": ["Mehtar Lām"],
      "Logar": ["Ḩukūmatī Azrah", "Baraki Barak", "Pul-e ‘Alam"],
      "Nangarhar": ["Bāsawul", "Jalālābād", "Markaz-e Woluswalī-ye Āchīn"],
      "Nimruz": ["Khāsh", "Mīrābād", "Rūdbār", "Zaranj"],
      "Nuristan": ["Pārūn"],
      "Paktia": ["Gardez"],
      "Paktika": ["Saṟōbī", "Zaṟah Sharan", "Zarghūn Shahr"],
      "Panjshir": ["Bāzārak"],
      "Parwan": ["Charikar", "Jabal os Saraj"],
      "Samangan": ["Aībak"],
      "Sar-e Pol": [
        "Chīras",
        "Larkird",
        "Qal‘ah-ye Shahr",
        "Sang-e Chārak",
        "Sar-e Pul",
        "Tagāw-Bāy",
        "Tukzār"
      ],
      "Takhar": ["Ārt Khwājah", "Taloqan"],
      "Urozgan": ["Tarinkot", "Uruzgān"],
      "Zabul": ["Qalāt"]
    }
  },
  {
    "id": 2,
    "country": "Aland Islands",
    "iso3": "ALA",
    "iso2": "AX",
    "phone_code": "+358-18",
    "capital": "Mariehamn",
    "currency": "EUR",
    "states": {"no states": "hi"}
  },
];
}

问题: 您在 DropdownButton 的值中输入了错误的值 select country bitch。这个值不在你的国家地图上。

解法: 更新您的 dropdownValue1 值,选择一个国家或国家地图中的任何其他国家名称。

解释: DropdownButton 的值参数必须是 DropdownMenuItem 的值之一。

String dropdownValue1 = "choose a country";