波斯日期选择器
一个波斯(Farsi)日期选择器 for Flutter。
安装
依赖它
dependencies:
persian_datepicker: ^0.2.1
安装它
flutter packages get
导入它
import 'package:persian_datepicker/persian_datepicker.dart';
用法
一个简单的 TextField 示例,它将变成一个日期选择器
main.dart
import 'package:flutter/material.dart';
import 'package:persian_datepicker/persian_datepicker.dart';
void main() {
runApp(Home());
}
class Home extends StatefulWidget {
@override
HomeState createState() {
return new HomeState();
}
}
class HomeState extends State<Home> {
// our text controller
final TextEditingController textEditingController = TextEditingController();
PersianDatePickerWidget persianDatePicker;
@override
void initState() {
/*Simple DatePicker*/
persianDatePicker = PersianDatePicker(
controller: textEditingController,
datetime: '1397/06/09',
outputFormat: 'YYYY/MM/DD',
).initialize();
super.initState();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('تقویم ساده'),),
body: Builder(builder: (BuildContext context) {
return Container(
child: TextField(
onTap: () {
FocusScope.of(context).requestFocus(new FocusNode()); // to prevent opening default keyboard
showModalBottomSheet(
context: context,
builder: (BuildContext context) {
return persianDatePicker;
});
},
controller: textEditingController,
),
);
}),
),
);
}
}
效果展示
简单日期选择器

范围日期选择器
/*Range DatePicker*/
persianDatePicker = PersianDatePicker(
controller: textEditingController,
datetime: '1397/06/09',
finishDatetime: '1397/06/15',
outputFormat: 'YYYY/MM/DD',
).initialize();

内联日期选择器
/*Inline DatePicker*/
persianDatePicker = PersianDatePicker(
controller: textEditingController,
datetime: '1397/06/19',
outputFormat: 'YYYY/MM/DD',
).initialize();
....
return Column(
children: <Widget>[
// Simple Date Picker
Container(
child: persianDatePicker, // just pass `persianDatePicker` variable as child with no ( )
),
TextField(
controller: textEditingController,
),
],
);

自定义日期选择器
您可以根据需要自定义日期选择器,有很多选项可以设置,下面的代码只是其中一些。
/*Customized DatePicker*/
persianDatePicker = PersianDatePicker(
controller: textEditingController,
outputFormat: 'YYYY/MM/DD',
datetime: '1397/08/13',
finishDatetime: '1397/08/17',
daysBorderWidth: 3,
weekCaptionsBackgroundColor: Colors.red,
headerBackgroundColor: Colors.blue.withOpacity(0.5),
headerTextStyle: TextStyle(color: Colors.blue, fontSize: 17),
headerTodayText: Text('امروز', style: TextStyle(fontSize: 15),),
headerTodayIcon: Icon(Icons.access_alarm, size: 15,),
datePickerHeight: 280
).initialize();
选项
您希望将其连接到日期选择器的输入控件的控制器。此参数是必需的
用于连接日期选择器的文本字段控制器
TextEditingController controller @required
波斯日期时间输入
波斯日期时间输入格式
String datetime Default: today date
波斯结束日期时间,如果设置了此选项,则日期选择器将变为范围日期选择器
波斯结束日期时间输入,如果设置了此选项,日期选择器将变为范围日期选择器
String finishDatetime
公历日期时间输入
公历日期时间输入格式
String gregorianDatetime
公历结束日期时间,如果设置了此选项,则日期选择器将变为范围日期选择器
公历结束日期时间输入,如果设置了此选项,日期选择器将变为范围日期选择器
String gregorianFinishDatetime
日期选择器的输出格式(显示格式)
日期显示输出格式
- YYYY(年份显示为四位数)
- YY(年份显示为两位数)
- MM(月份小于10时,前面带0)
- M(月份小于10时,不带0)
- DD(日期小于10时,前面带0)
- D(日期小于10时,不带0)
String outputFormat Default: YYYY/MM/DD
范围输入或输出是两个日期并排显示,中间用rangeSeparator分隔,默认值为#
范围输入或输出是以分隔符隔开的两个日期,分隔符的默认值为#
String rangeSeparator Default: #
您的日期选择器的高度
日期选择器的高度
double datePickerHeight Default: 320
当您点击年份标题时,会出现一个带有动画的小对话框,此选项处理对话框出现的持续时间
当您点击年份标题时,会出现一个带有动画的小对话框,此选项处理对话框出现的持续时间
Duration yearSelectionAnimationDuration Default: 400 milliseconds
年份对话框的曲线类型
年份对话框的动画类型
Curve yearSelectionAnimationCurve Default: elasticOut
当您点击月份标题时,会出现一个带有动画的小对话框,此选项处理对话框出现的持续时间
当您点击月份标题时,会出现一个带有动画的小对话框,此选项处理对话框出现的持续时间
Duration monthSelectionAnimationDuration Default: 400 milliseconds
月份对话框的曲线类型
月份对话框的动画类型
Curve monthSelectionAnimationCurve
年份选择对话框中选定年份的背景颜色
年份选择对话框中选定年份的背景颜色
Color yearSelectionBackgroundColor
Color yearSelectionFontColor
Color yearSelectionHighlightBackgroundColor
Color yearSelectionHighlightFontColor
Color monthSelectionBackgroundColor
Color monthSelectionFontColor
Color monthSelectionHighlightBackgroundColor
Color monthSelectionHighlightFontColor
Color weekCaptionsBackgroundColor
Color weekCaptionsFontColor
Color headerBackgroundColor
TextStyle headerTextStyle
Color daysBackgroundColor
Color daysFontColor
Color currentDayBackgroundColor
Color currentDayFontColor
Color selectedDayBackgroundColor
Color selectedDayFontColor
Color headerTodayBackgroundColor
Color disabledDayBackgroundColor
Color disabledDayFontColor
Text headerTodayText
Icon headerTodayIcon
Color daysBorderColor
Color selectedDayBorderColor
Color selectedDaysInnerBorderColor
Color todayBorderColor
double daysBorderWidth
重要提示
rangeSeparator和您自定义的日期分隔符不应相同,否则日期选择器将返回 nullrangeSeparator和您自定义的日期分隔符不应相同,否则日期选择器将返回 null
您可以在示例目录中找到完整的示例