Flutter日期选择器插件dh_picker的使用
Flutter日期选择器插件dh_picker的使用
dh_picker
是一个功能强大的选择器控件库,支持数字选择、字符串选择和日期选择等功能。在您的项目中添加以下依赖:
dependencies:
dh_picker: ^1.0.0
数字选择器 (num_picker
)
数字选择器允许用户从一组数字中进行选择。
NumberPicker(
max: 21,
min: 1,
interval: 2,
indexFormat: (value) => "$value+",
itemExtent: 40,
onSelectedItemChanged: (value) {
print('selected value: $value');
},
labelAlignment: Alignment.center,
label: Text("℃"),
labelPadding: EdgeInsets.only(left: 50, bottom: 16),
)
字符串选择器 (string_picker
)
字符串选择器允许用户从一组字符串中进行选择。
StringPicker(
itemExtent: 40,
data: ['Apple', 'Bob', 'Cat'],
onSelectedItemChanged: (String value) {
print('selected value: $value');
},
)
日期选择器 (date_picker
)
日期选择器允许用户从一个日期范围内进行选择。以下是使用 DateTimePickerWidget
的示例代码。
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
DateTime? selectTime;
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Column(
children: <Widget>[
SizedBox(height: 20),
Container(
height: 150,
child: NumberPicker(
max: 21,
min: 1,
interval: 2,
indexFormat: (value) => "$value+",
itemExtent: 40,
onSelectedItemChanged: (value) {
print('selected value: $value');
},
labelAlignment: Alignment.center,
label: Text("℃"),
labelPadding: EdgeInsets.only(left: 50, bottom: 16),
),
),
DateTimePicker(
pickerModel: DatePickerModel(
maxTime: DateTime(2028, 12, 1, 5, 6),
minTime: DateTime(2012, 11, 2, 3, 4),
weights: [1, 1, 1],
labels: [true, true, true],
formats: ['yyyy', 'M', 'dd'],
),
onDateTimeChanged: (DateTime value) {
print('date time: $value');
},
theme: PickerTheme(
padding: EdgeInsets.symmetric(horizontal: 20),
),
),
TextButton(
onPressed: () {
showPicker(context, builder: (BuildContext context) {
return DateTimePickerWidget(
onConfirm: (DateTime dateTime) {
selectTime = dateTime;
print('date time: $dateTime');
},
title: "选择日期",
titleActionTheme: TitleActionTheme(
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(10.0),
topRight: Radius.circular(10.0)))),
),
onCancel: () {
print('取消了');
},
pickerTheme: PickerTheme(
height: 180.0,
padding: EdgeInsets.symmetric(horizontal: 16, vertical: 10),
),
pickerModel: DateTimePickerModel(
maxTime: DateTime(2022, 12, 1, 5, 6, 7),
minTime: DateTime(2020, 11, 2, 3, 4, 5),
currentTime: selectTime,
dividers: ['', '/', '', ':', ''],
),
pickerOverlay: Row(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
SizedBox(width: 18),
Expanded(flex: 2, child: DefaultSelectionOverlay(borderColor: Colors.red)),
SizedBox(width: 18),
Expanded(flex: 3, child: DefaultSelectionOverlay(borderColor: Colors.red)),
SizedBox(width: 18),
Expanded(flex: 3, child: DefaultSelectionOverlay(borderColor: Colors.red)),
SizedBox(width: 18),
],
),
selectionOverlayBuilder: (int index) => null,
);
});
},
child: Text("显示日期选择器"),
),
],
),
);
}
}
更多关于Flutter日期选择器插件dh_picker的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复