mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 15:24:35 +01:00
53 lines
1.3 KiB
Dart
53 lines
1.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
class Picker extends StatelessWidget {
|
|
final List<Widget> items;
|
|
final Function(int idx) onSelected;
|
|
final double height;
|
|
|
|
const Picker({
|
|
super.key,
|
|
required this.items,
|
|
required this.onSelected,
|
|
this.height = 157,
|
|
});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final pad = (height - 37) / 2;
|
|
return SizedBox(
|
|
height: height,
|
|
child: Stack(
|
|
children: [
|
|
Positioned(
|
|
top: pad,
|
|
bottom: pad,
|
|
left: 0,
|
|
right: 0,
|
|
child: Container(
|
|
height: 37,
|
|
decoration: const BoxDecoration(
|
|
borderRadius: BorderRadius.all(Radius.circular(7)),
|
|
color: Colors.black12,
|
|
),
|
|
),
|
|
),
|
|
ListWheelScrollView.useDelegate(
|
|
itemExtent: 37,
|
|
diameterRatio: 2.7,
|
|
controller: FixedExtentScrollController(initialItem: 0),
|
|
onSelectedItemChanged: (idx) => onSelected(idx),
|
|
physics: const FixedExtentScrollPhysics(),
|
|
childDelegate: ListWheelChildBuilderDelegate(
|
|
builder: (context, index) => Center(
|
|
child: items[index],
|
|
),
|
|
childCount: items.length,
|
|
),
|
|
)
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|