どうも、ちょげ(@chogetarou)です。
CupertinoPickerを動的に実装する方法を紹介します。
方法

CupertinoPickerを動的に作るには、builderコンストラクタを使います。
まず、CupertinoPickerをCupertinoPicker.builderに置き換えます。
次に、CupertinoPicker.builderの引数「itemExtent」に要素の高さ、引数「onSelectedItemChanged」に値の更新をする関数を指定します。
CupertinoPicker.builder(
itemExtent: /*要素の高さ*/,
onSelectedItemChanged: (newValue) {
setState(() {
_selectedValue = newValue;
});
},
),
そして、引数「childCount」に要素の数を指定します。
CupertinoPicker.builder(
childCount: /*要素の数*/,
itemExtent: /*要素の高さ*/,
onSelectedItemChanged: (newValue) {
setState(() {
_selectedValue = newValue;
});
},
),
最後に、CupertinoPicker.builderの引数「itemBuilder」で要素を返す関数を指定します。
CupertinoPicker.builder(
childCount: /*要素の数*/,
itemExtent: /*要素の高さ*/,
onSelectedItemChanged: (newValue) {
setState(() {
_selectedValue = newValue;
});
},
itemBuilder: (context, index) {
return /*要素*/;
},
),
これでCupertinoPickerを動的に作ることが出来ます。
使用例
以下は、使用例です。

class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
var _selectedValue = 2;
final _fruits = [
"Apple",
"Banana",
"StrawBerry",
"Orange",
"Watermelon",
];
@override
Widget build(BuildContext context) {
return SafeArea(
child: CupertinoPageScaffold(
child: Center(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text('${_fruits[_selectedValue]}'),
Container(
height: 200,
child: CupertinoPicker.builder(
childCount: _fruits.length,
itemExtent: 30,
onSelectedItemChanged: (newValue) {
setState(() {
_selectedValue = newValue;
});
},
itemBuilder: (context, index) {
return Text(_fruits[index]);
},
),
),
],
),
),
),
);
}
}

[Flutter]CupertinoDatePickerのテキストの色を白にするには?
CupertinoDatePickerのテキストカラーを白にする方法を紹介します。

[Flutter]CupertinoDatePickerの日付の上限を設定するには?
CupertinoDatePickerの日付の上限を設定する方法を紹介します。

[Flutter]CupertinoDatePickerを時間のみの選択にするには?
CupertinoDatePickerを時間だけ選択できるようにする方法を紹介します。

[Flutter]CupertinoDatePickerを年月日のみの選択にするには?
CupertinoDatePickerを年月日だけを選択できるようにする方法を紹介します。
コメント