Skip to content

Commit 059c940

Browse files
committed
feat: PickerDate
1 parent 2a0dc02 commit 059c940

File tree

4 files changed

+90
-6
lines changed

4 files changed

+90
-6
lines changed
Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,35 @@
1-
## **文档完善中**
1+
## **DatePicker**
2+
3+
>
4+
显示给定月份的日期并允许选择一天
5+
* 日期选择器很少直接使用,请考虑使用 showDatePicker 或者 showTimePicker,它会创建一个日期/时间选择器对话框
6+
7+
### showDatePicker构造方法
8+
``` dart
9+
showDatePicker({
10+
@required BuildContext context,
11+
@required DateTime initialDate,
12+
@required DateTime firstDate,
13+
@required DateTime lastDate,
14+
SelectableDayPredicate selectableDayPredicate,
15+
DatePickerMode initialDatePickerMode = DatePickerMode.day,
16+
Locale locale,
17+
TextDirection textDirection,
18+
TransitionBuilder builder,
19+
})
20+
```
21+
22+
### showTimePicker构造方法
23+
``` dart
24+
showTimePicker({
25+
@required BuildContext context,
26+
@required TimeOfDay initialTime,
27+
TransitionBuilder builder,
28+
})
29+
```
30+
31+
### 属性介绍
32+
* context: 上下文
33+
* initialDate: 初始时间
34+
* firstDate: 设置选择的最早时间
35+
* lastDate: 设置选择的最晚时间

lib/widget/form/daypicker/demo.dart

Lines changed: 52 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,74 @@
11
import 'package:flutter/material.dart';
2+
import 'package:intl/intl.dart';
3+
import 'dart:async';
24

35
class Index extends StatefulWidget {
46
@override
57
State<StatefulWidget> createState() => _IndexState();
68
}
79

810
class _IndexState extends State<Index> {
11+
12+
DateTime selectedDate = DateTime.now();
13+
TimeOfDay selectedTime = TimeOfDay.now();
14+
915
@override
1016
void initState() {
1117
super.initState();
1218
}
1319

20+
Future<void> _selectDate() async{
21+
final DateTime date = await showDatePicker(
22+
context: context,
23+
initialDate: selectedDate,
24+
firstDate: DateTime(1900),
25+
lastDate: DateTime(2100),
26+
);
27+
if (date == null) {
28+
return;
29+
}
30+
setState(() {
31+
selectedDate = date;
32+
});
33+
}
34+
35+
Future<void> _selectTime() async {
36+
final TimeOfDay time = await showTimePicker(
37+
context: context,
38+
initialTime: selectedTime,
39+
);
40+
if(time ==null) {
41+
return;
42+
}
43+
setState(() {
44+
selectedTime = time;
45+
});
46+
}
47+
1448
@override
1549
Widget build(BuildContext context) {
1650
return Scaffold(
1751
appBar: AppBar(
1852
title: Text('DayPicker'),
1953
),
20-
body: Center(
21-
child: Text('更新中'),
54+
body: Container(
55+
width: double.infinity,
56+
child: Column(
57+
mainAxisAlignment: MainAxisAlignment.center,
58+
crossAxisAlignment: CrossAxisAlignment.center,
59+
children: <Widget>[
60+
Text('日期选择'),
61+
RaisedButton(
62+
onPressed: _selectDate,
63+
child: Text('${DateFormat.yMd().format(selectedDate)}'),
64+
),
65+
Text('时间选择'),
66+
RaisedButton(
67+
onPressed: _selectTime,
68+
child: Text('${selectedTime.format(context)}'),
69+
)
70+
],
71+
),
2272
),
2373
);
2474
}

lib/widget/form/daypicker/index.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'package:flutter/material.dart';
22
import 'package:efox_flutter/components/widgetComp.dart' as WidgetComp;
3-
// import 'demo.dart' as Demo;
3+
import 'demo.dart' as Demo;
44

55
class Index extends StatefulWidget {
66
static String title = 'DayPicker';
@@ -19,7 +19,7 @@ class _IndexState extends State<Index> {
1919
originCodeUrl: Index.originCodeUrl,
2020
mdUrl: Index.mdUrl,
2121
demoChild: [
22-
// Demo.Index(),
22+
Demo.Index(),
2323
],
2424
);
2525
}

readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,9 @@ Flutter UI
7878
├─form
7979
│ ├─checkbox 【✔️ v1.0】
8080
│ ├─checkboxlisttile 【✔️ v1.0】
81-
│ ├─daypicker 【✔️ v1.0】
8281
│ ├─switch 【✔️ v1.0】
8382
│ ├─switchListTile 【✔️ v1.0】
83+
│ ├─daypicker 【✔️ v1.0】
8484
│ ├─form
8585
│ ├─formfield
8686
│ ├─radio

0 commit comments

Comments
 (0)