Установить выбранный начальный CupertinoPicker выбранный индекс
Я новичок в разработке Flutter, я пытаюсь CupertinoPicker
внутри showCupertinoModalPopup
который срабатывает при нажатии CupertinoButton
,
После выбора Provinsi (Province)
Я могу повторить Province
нажав еще раз на кнопку, но это должен быть пункт, который я выбрал.
Вот мой код
showCupertinoModalPopup(
context: context,
builder: (_) {
return new SizedBox(
height: MediaQuery.of(context).size.height / 2,
child: new CupertinoPicker(
magnification: 1.2,
useMagnifier: true,
itemExtent: 32.0,
onSelectedItemChanged: (i) => setState(() => _chosenProvince = listProvince[i]),
children: r != null && listProvince != null ? listProvince.map((prov) {
return new Padding(
padding: const EdgeInsets.all(4.0),
child: new Text(
prov.name,
textAlign: TextAlign.center,
overflow: TextOverflow.ellipsis,
style: new TextStyle(
fontSize: 20.0,
),
),
);
}).toList(): [],),);});
Есть ли initialValue
или что-то для CupertinoPicker
установить?
1 ответ
Решение
Ты можешь использовать FixedExtentScrollController
установить начальное значение. Отослать это
Как описывает Динеш Баласубраманян, вы можете использовать FixedExtentScrollController
установить initialValue
Это будет выглядеть так, например, чтобы начать с четвертого элемента:
showCupertinoModalPopup(
context: context,
builder: (_) {
return new SizedBox(
height: MediaQuery.of(context).size.height / 2,
child: new CupertinoPicker(
scrollController: FixedExtentScrollController(initialItem: 3),
magnification: 1.2,
useMagnifier: true,
itemExtent: 32.0,
onSelectedItemChanged: (i) => setState(() => _chosenProvince = listProvince[i]),
children: r != null && listProvince != null ? listProvince.map((prov) {
return new Padding(
padding: const EdgeInsets.all(4.0),
child: new Text(
prov.name,
textAlign: TextAlign.center,
overflow: TextOverflow.ellipsis,
style: new TextStyle(
fontSize: 20.0,
),
),
);
}).toList(): [],),);});