Должен быть только один элемент с ошибкой значения раскрывающегося списка

Я полностью застрял в разрешении этой ошибки, я новичок в этой платформе, кто-нибудь поможет мне очистить это

class _EditBasicDetailsScreenState extends State<EditBasicDetailsScreen> {
  final _formKey = GlobalKey<FormState>();

  List _locations = List();
  String _location_id;

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    _location_id = '';
    _locations = [
      {"location_id": "1", "location_name": "pathirikuppam"},
      {"location_id": "2", "location_name": "koothapakam"},
      {"location_id": "3", "location_name": "thiruvandhipuram"}
    ];
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Edit Basic Details"),
      ),
      body: Padding(
        padding: EdgeInsets.all(15.0),
        child: ListView(children: <Widget>[
          Container(
            padding: EdgeInsets.all(5.0),
            decoration: BoxDecoration(
              borderRadius: BorderRadius.circular(5.0),
              border: Border.all(
                  color: Colors.pink, style: BorderStyle.solid, width: 0.80),
            ),
            alignment: Alignment.center,
            child: DropdownButtonHideUnderline(
                child: DropdownButton(
                    isExpanded: true,
                    hint: Text('Select Shop Location'),
                    items: _locations.map((dropDowmLocationItem) {
                      return DropdownMenuItem(
                          value: dropDowmLocationItem['location_id'].toString(),
                          child: Text(dropDowmLocationItem['location_name']));
                    }).toList(),
                    onChanged: (String newselectedLocation) {
                      setState(() {
                        _location_id = newselectedLocation;
                      });
                    },
                    value: _location_id)),
          )
        ]),
      ),
     
    );
  }
}

введите описание изображения здесь

Я приложил скриншот ошибки, надеюсь, он подскажет, что не так

2 ответа

Решение

Просто удалите инициализацию _location_id из вашего метода initState().

Вы инициализировали _location_id пустой строкой, поэтому DropDownButton ищет пустой строковый идентификатор в элементах вашего списка, которого нет, и возникла ошибка.

Решение Просто удалите инициализацию _location_id из вашего метода initState().

У меня была эта проблема в моем проекте, и я остался с этой проблемой на несколько дней. Решение, которое мне помогло, состояло в том, чтобы сделать условие в «onChanged», которое было следующим: если контроллер в первом раскрывающемся списке не пуст, а второй тоже не пустой, второй контроллер очищается. Это условие я помещаю в onChanged из двух раскрывающихся списков.

          onChanged: (value) {
 setState(() {
   if (firstController.text.isNotEmpty &&
      secondController.text.isNotEmpty) {
      secondController.clear();
      }
      secondController.text = value.toString();
     });
    },
Другие вопросы по тегам