Flutter не удается построить (Bad State Element) при использовании метода валидатора виджета SearchableDropdown.single. Обходной путь? - PullRequest
0 голосов
/ 15 апреля 2020

Flutter не создает мое приложение при запуске. Он возвращает следующее: -

Error waiting for a debug connection: Bad state: No element
Error launching application on vivo 1818.

Я использую библиотеку pubable_dropdown для достижения этой цели.

Приложение не может быть построено, только когда я добавляю атрибут 'validator:' в SearchableDropdown .single () виджет. Я предполагаю, что проблема в том, что SearchableDropdown проверяется при сборке, а не при вызове метода validate () для fomKey.currentState. Есть ли обходной путь для этого. Пожалуйста, помогите, поскольку это для чувствительного ко времени проекта.

Чтобы помочь любому читающему эту проблему понять код, вызывающий проблему, я включил виджет, внутри которого я вызываю SearchableDropdown. Он оборачивается в виджет FutureBuilder, когда я вызываю API, чтобы вернуть список всех стран и, следовательно, создать список, который передается в атрибут «items:» SearchableDropdown.single ().

FutureBuilder<List<dynamic>>(
  future: _fetchCountries,
  builder: (context, snapshot) {
    if (snapshot.hasData) {
      List<String> countrylist = [];
      List<DropdownMenuItem<String>> countries;
      for (var i = 0; i < snapshot.data.length; i++) {
        countrylist.add(snapshot.data[i]['name']);
      }
      countries = countrylist.map((String value) {
        return new DropdownMenuItem<String>(
          value: value,
          child: Text(
            value,
            style: TextStyle(fontSize: 16),
          ),
        );
      }).toList();
      return SearchableDropdown.single(
          //menuConstraints: BoxConstraints.tight(Size.fromHeight(350)),
          dialogBox: true,
          menuBackgroundColor: Colors.white,
          icon: Icon(
            Icons.arrow_drop_down,
            size: 25,
            color: Colors.white,
          ),
          items: countries,
          style: TextStyle(color: Colors.white),
          hint: Padding(
            padding: const EdgeInsets.only(left: 0, right: 0, top: 0, bottom: 15),
            child: Text(
              "Country",
              style: TextStyle(color: Colors.white, fontSize: 16),
            ),
          ),
          value: _country,
          searchHint: "Select a country",
          onChanged: (value) {
            setState(() {
              _country = value;
            });
          },
          isExpanded: true,
          validator: (value) {
            if (value == null) {
              return 'Select a country';
            }
            return null;
          });
    } else if (snapshot.hasError) {
      return Text("${snapshot.error}");
    }
    return CircularProgressIndicator();
  },
),```

If anybody can suggest any other methods of validating the SearchableDropdown.single without running into the error, it would be well appreciated



Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...