Как мне создать выпадающий список из провайдера? (Флаттер) - PullRequest
0 голосов
/ 02 марта 2020

Я создал модель города и создал класс провайдера для этого,

class CityModel {
  String cityId;
  String cityName;

  CityModel({this.cityId, this.cityName});
}

Это класс провайдера

class CitiesProviders extends ChangeNotifier {
  List<CityModel> citiesData = [];

  void addData(CityModel data) {
    citiesData.add(data);
    notifyListeners();
  }

  List<String> get cityNames {
    List<String> names = [];
    citiesData.map((value) {
      names.add(value.cityName);
    });
    return names;
  }
}

Я просто хочу получить названия городов из списка городов. Используйте этот список имен, чтобы создать раскрывающийся список.

DropdownButton<String>(
      value: currVal,
      items: Provider.of<CitiesProviders>(context)
          .cityNames
          .map<DropdownMenuItem<String>>((String value) {
        return DropdownMenuItem<String>(
          value: value,
          child: Text(value),
        );
      }).toList(),
      onChanged: (value) {
        currVal = value;
      },
    ),

Но на экране ничего не отображается, также нет сообщения об ошибке. Я все делаю правильно? Или есть лучший способ сделать это? Любые предложения и ответы помогут. Спасибо!

Ответы [ 2 ]

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

Моя ошибка!

List<String> get cityNames {
    List<String> names = [];
    citiesData.map((value) {
      names.add(value.cityName);
    }).toList(); // Added here
    return name)s;
  }

Я добавил toList () и теперь он работает.

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

Я считаю, что проблема в том, что у вас есть:

class CitiesProviders extends ChangeNotifier {}

У вас должно быть:

class CitiesProviders with ChangeNotifier {}

Я не вижу никаких других проблем в остальной части вашего кода, но я Я все еще новичок во Флаттере.

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