Form
Picker
A generic picker that allows an item to be selected. It is composed of one or more wheels, optionally with separators between those wheels. The picker supports arrow key navigation. Recommended for touch devices.
The picker supports arrow key navigation:
- Up/Down arrows: Increment/decrement selected value
- Left/Right arrows: Move between wheels
Recommended for touch devices.
1@override2Widget build(BuildContext context) => const FPicker(3 children: [4 FPickerWheel(5 children: [6 Text('January'),7 Text('February'),8 Text('March'),9 Text('April'),10 Text('May'),11 Text('June'),12 Text('July'),13 Text('August'),14 Text('September'),15 Text('October'),16 Text('November'),17 Text('December'),18 ],19 ),20 ],21);22CLI
To generate and customize this style:
dart run forui style create pickerUsage
FPicker(...)
1FPicker(2 style: const .delta(spacing: 5),3 children: [4 FPickerWheel(children: [for (var i = 1; i <= 12; i++) Text('$i')]),5 const Text(':'),6 FPickerWheel(7 children: [for (var i = 0; i < 60; i++) Text('$i'.padLeft(2, '0'))],8 ),9 ],10 debugLabel: '',11)FPickerWheel(...)
1FPickerWheel(2 loop: false,3 flex: 1,4 itemExtent: null,5 children: [for (var i = 1; i <= 12; i++) Text('$i')],6)FPickerWheel.builder(...)
1FPickerWheel.builder(2 flex: 1,3 itemExtent: null,4 builder: (context, index) => Text('$index'),5)Examples
Loop
1@override2Widget build(BuildContext context) => const FPicker(3 children: [4 FPickerWheel(5 loop: true,6 children: [7 Text('January'),8 Text('February'),9 Text('March'),10 Text('April'),11 Text('May'),12 Text('June'),13 Text('July'),14 Text('August'),15 Text('September'),16 Text('October'),17 Text('November'),18 Text('December'),19 ],20 ),21 ],22);23Lazy
1@override2Widget build(BuildContext context) => FPicker(3 children: [FPickerWheel.builder(builder: (context, index) => Text('$index'))],4);5Multiple Wheels
1@override2Widget build(BuildContext context) => FPicker(3 children: [4 const FPickerWheel(5 flex: 3,6 loop: true,7 children: [8 Text('January'),9 Text('February'),10 Text('March'),11 Text('April'),12 Text('May'),13 Text('June'),14 Text('July'),15 Text('August'),16 Text('September'),17 Text('October'),18 Text('November'),19 Text('December'),20 ],21 ),22 FPickerWheel.builder(23 flex: 2,24 builder: (context, index) => Text('${(index % 31) + 1}'),25 ),26 ],27);28With Separators
1@override2Widget build(BuildContext context) => SizedBox(3 width: 200,4 child: FPicker(5 children: [6 FPickerWheel.builder(7 builder: (context, index) =>8 Text((index % 12).toString().padLeft(2, '0')),9 ),10 const Text(':'),11 FPickerWheel.builder(12 builder: (context, index) =>13 Text((index % 60).toString().padLeft(2, '0')),14 ),15 const FPickerWheel(children: [Text('AM'), Text('PM')]),16 ],17 ),18);19