Ошибка при добавлении выпадающей кнопки в флаттере - PullRequest
0 голосов
/ 28 марта 2020

У меня проблема с выпадающим списком Flutter. Когда я выбираю один из предметов, он выдает ошибку:

'package: flutter / src / material / dropdown.dart': Неудачное утверждение: строка 620 поз 15: 'items == null || items.isEmpty || значение == ноль || items.where ((DropdownMenuItem item) => item.value == value) .length == 1 ': не соответствует действительности.

Я не понимаю, в чем была настоящая проблема. Я обнаружил, что когда я В поле значения комментария в выпадающем меню программа будет запускаться. Но когда я запускаю без комментариев, это покажет ошибки, подобные этой. Я не знаю, что за этим стоит. Я новичок ie во флаттере, поэтому, пожалуйста, помогите ... спасибо здесь мой код:

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"}
  },
];
}

1 Ответ

0 голосов
/ 28 марта 2020

Проблема: Вы вводите неправильное значение, выберите суку страны в значении DropdownButton. это значение отсутствует на карте ваших стран.

Решение: Обновите значение dropdownValue1, выбрав страну или любое другое название страны на карте стран.

Объяснение: В DropdownButton значение параметра должно быть одним из значений DropdownMenuItem.

String dropdownValue1 = "choose a country";
...