Проверьте код ниже. Вы можете использовать функцию singleWhere
, чтобы извлечь элемент из значения id
, полученного из раскрывающегося списка, и затем прочитать baseUrl
из элемента.
Функция singleWhere
сопоставляет и возвращает один элемент из списка на основе предоставленного нами условия.
Примечание - Функция singleWhere
по умолчанию выдает ошибку, если есть дубликаты или элемент не найден. Вам также может понадобиться передать параметр orElse
в singleWhere
или добавить некоторую обработку ошибок в этом случае.
Подробнее об этом можно узнать здесь .
class _MyHomePageState extends State<MyHomePage> {
String _mySelection;
List<Map> _myJson = [{"id":2,"society":"test","baseUrl":"url.com"},{"id":1,"society":"planeef","baseUrl":"url.com"}];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container(
child: new DropdownButton<String>(
isDense: true,
hint: new Text("Select"),
value: _mySelection,
onChanged: (String newValue) {
Map<dynamic,dynamic> _myElement = _myJson.singleWhere((test) => test["id"] == int.parse(newValue));
print(_myElement["baseUrl"]);
//Add the above two lines
setState(() {
_mySelection = newValue;
});
},
items: _myJson.map((Map map) {
return new DropdownMenuItem<String>(
value: map["id"].toString(),
child: new Text(
map["society"],
),
);
}).toList(),
),
)
);
}
}