Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -587,7 +587,9 @@ class ExampleApp extends StatelessWidget {
}

void _openDateTimePicker(
BuildContext context, CupertinoDatePickerCalendarType calendarType,) {
BuildContext context,
CupertinoDatePickerCalendarType calendarType,
) {
BottomPicker.dateTime(
minuteInterval: 2,
headerBuilder: (context) {
Expand Down
25 changes: 25 additions & 0 deletions lib/bottom_picker.dart
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@ class BottomPicker extends StatefulWidget {
this.buttonWidth,
this.buttonSingleColor,
this.backgroundColor = Colors.white,
this.pickerThemeData,
@Deprecated("should use pickerThemeData instead")
this.pickerTextStyle = const TextStyle(
fontSize: 14,
color: Colors.black,
Expand Down Expand Up @@ -107,6 +109,8 @@ class BottomPicker extends StatefulWidget {
this.buttonSingleColor,
this.backgroundColor = Colors.white,
this.dateOrder = DatePickerDateOrder.ymd,
this.pickerThemeData,
@Deprecated("should use pickerThemeData instead")
this.pickerTextStyle = const TextStyle(
fontSize: 14,
color: Colors.black,
Expand Down Expand Up @@ -156,6 +160,8 @@ class BottomPicker extends StatefulWidget {
this.buttonWidth,
this.buttonSingleColor,
this.backgroundColor = Colors.white,
this.pickerThemeData,
@Deprecated("should use pickerThemeData instead")
this.pickerTextStyle = const TextStyle(
fontSize: 14,
color: Colors.black,
Expand Down Expand Up @@ -209,6 +215,8 @@ class BottomPicker extends StatefulWidget {
this.buttonSingleColor,
this.backgroundColor = Colors.white,
this.dateOrder = DatePickerDateOrder.ymd,
this.pickerThemeData,
@Deprecated("should use pickerThemeData instead")
this.pickerTextStyle = const TextStyle(
fontSize: 14,
color: Colors.black,
Expand Down Expand Up @@ -260,6 +268,8 @@ class BottomPicker extends StatefulWidget {
this.buttonWidth,
this.buttonSingleColor,
this.backgroundColor = Colors.white,
this.pickerThemeData,
@Deprecated("should use pickerThemeData instead")
this.pickerTextStyle = const TextStyle(
fontSize: 14,
color: Colors.black,
Expand Down Expand Up @@ -313,6 +323,8 @@ class BottomPicker extends StatefulWidget {
this.buttonWidth,
this.buttonSingleColor,
this.backgroundColor = Colors.white,
this.pickerThemeData,
@Deprecated("should use pickerThemeData instead")
this.pickerTextStyle = const TextStyle(
fontSize: 14,
color: Colors.black,
Expand Down Expand Up @@ -358,6 +370,8 @@ class BottomPicker extends StatefulWidget {
this.buttonWidth,
this.buttonSingleColor,
this.backgroundColor = Colors.white,
this.pickerThemeData,
@Deprecated("should use pickerThemeData instead")
this.pickerTextStyle = const TextStyle(
fontSize: 14,
color: Colors.black,
Expand Down Expand Up @@ -425,6 +439,8 @@ class BottomPicker extends StatefulWidget {
this.buttonWidth,
this.buttonSingleColor,
this.backgroundColor = Colors.white,
this.pickerThemeData,
@Deprecated("should use pickerThemeData instead")
this.pickerTextStyle = const TextStyle(
fontSize: 14,
color: Colors.black,
Expand Down Expand Up @@ -607,6 +623,9 @@ class BottomPicker extends StatefulWidget {
///by default `TextStyle(fontSize: 14)`
final TextStyle pickerTextStyle;

/// The picker theme data
final CupertinoTextThemeData? pickerThemeData;

///define the picker item extent available only for list items picker
///by default it's 35
late double itemExtent;
Expand Down Expand Up @@ -903,6 +922,7 @@ class BottomPickerState extends State<BottomPicker> {
textStyle: widget.pickerTextStyle,
itemExtent: widget.itemExtent,
selectionOverlay: widget.selectionOverlay,
pickerThemeData: widget.pickerThemeData,
)
: widget.bottomPickerType == BottomPickerType.timer
? TimePicker(
Expand All @@ -916,6 +936,7 @@ class BottomPickerState extends State<BottomPicker> {
selectedTimerDuration = p0;
},
secondInterval: widget.timerSecondsInterval,
pickerThemeData: widget.pickerThemeData,
)
: widget.bottomPickerType == BottomPickerType.time
? DatePicker(
Expand All @@ -934,6 +955,7 @@ class BottomPickerState extends State<BottomPicker> {
itemExtent: widget.itemExtent,
showTimeSeparator: widget.showTimeSeparator,
calendarType: widget.calendarType,
pickerThemeData: widget.pickerThemeData,
)
: widget.bottomPickerType == BottomPickerType.dateTime
? DatePicker(
Expand All @@ -952,6 +974,7 @@ class BottomPickerState extends State<BottomPicker> {
itemExtent: widget.itemExtent,
showTimeSeparator: widget.showTimeSeparator,
calendarType: widget.calendarType,
pickerThemeData: widget.pickerThemeData,
)
: widget.bottomPickerType ==
BottomPickerType.rangeTime
Expand All @@ -978,6 +1001,7 @@ class BottomPickerState extends State<BottomPicker> {
itemExtent: widget.itemExtent,
showTimeSeperator:
widget.showTimeSeparator,
pickerThemeData: widget.pickerThemeData,
)
: RangePicker(
mode: CupertinoDatePickerMode.date,
Expand All @@ -1001,6 +1025,7 @@ class BottomPickerState extends State<BottomPicker> {
itemExtent: widget.itemExtent,
showTimeSeperator:
widget.showTimeSeparator,
pickerThemeData: widget.pickerThemeData,
),
),
if (widget.displaySubmitButton)
Expand Down
4 changes: 3 additions & 1 deletion lib/widgets/date_picker.dart
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ class DatePicker extends StatelessWidget {
final double? itemExtent;
final bool showTimeSeparator;
final CupertinoDatePickerCalendarType calendarType;
final CupertinoTextThemeData? pickerThemeData;

const DatePicker({
super.key,
Expand All @@ -29,13 +30,14 @@ class DatePicker extends StatelessWidget {
this.itemExtent = 0,
this.showTimeSeparator = false,
required this.calendarType,
this.pickerThemeData,
});

@override
Widget build(BuildContext context) {
return CupertinoTheme(
data: CupertinoThemeData(
textTheme: CupertinoTextThemeData(
textTheme: pickerThemeData ?? CupertinoTextThemeData(
dateTimePickerTextStyle: textStyle,
),
),
Expand Down
4 changes: 4 additions & 0 deletions lib/widgets/range_picker.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ class RangePicker extends StatefulWidget {
final int? minuteInterval;
final double? itemExtent;
final bool showTimeSeperator;
final CupertinoTextThemeData? pickerThemeData;

const RangePicker({
super.key,
Expand All @@ -36,6 +37,7 @@ class RangePicker extends StatefulWidget {
this.minuteInterval,
this.itemExtent,
this.showTimeSeperator = false,
this.pickerThemeData,
});

@override
Expand Down Expand Up @@ -106,6 +108,7 @@ class _RangePickerState extends State<RangePicker> {
dateOrder: widget.dateOrder,
textStyle: widget.textStyle,
calendarType: CupertinoDatePickerCalendarType.fullWeek,
pickerThemeData: widget.pickerThemeData,
),
),
Expanded(
Expand All @@ -123,6 +126,7 @@ class _RangePickerState extends State<RangePicker> {
itemExtent: widget.itemExtent,
showTimeSeparator: widget.showTimeSeperator,
calendarType: CupertinoDatePickerCalendarType.fullWeek,
pickerThemeData: widget.pickerThemeData,
),
),
],
Expand Down
4 changes: 3 additions & 1 deletion lib/widgets/simple_picker.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ class SimplePicker extends StatelessWidget {
final TextStyle textStyle;
final double itemExtent;
final Widget? selectionOverlay;
final CupertinoTextThemeData? pickerThemeData;

const SimplePicker({
super.key,
Expand All @@ -19,14 +20,15 @@ class SimplePicker extends StatelessWidget {
required this.textStyle,
required this.itemExtent,
this.selectionOverlay,
this.pickerThemeData,
});

@override
Widget build(BuildContext context) {
if (!kIsWeb && (Platform.isIOS || Platform.isAndroid)) {
return CupertinoTheme(
data: CupertinoThemeData(
textTheme: CupertinoTextThemeData(
textTheme: pickerThemeData ?? CupertinoTextThemeData(
pickerTextStyle: textStyle,
),
),
Expand Down
4 changes: 3 additions & 1 deletion lib/widgets/time_picker.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ class TimePicker extends StatelessWidget {
final Function(Duration) onChange;
final Duration? initialDuration;
final int secondInterval;
final CupertinoTextThemeData? pickerThemeData;

const TimePicker({
super.key,
Expand All @@ -19,13 +20,14 @@ class TimePicker extends StatelessWidget {
required this.onChange,
required this.initialDuration,
this.secondInterval = 1,
this.pickerThemeData,
});

@override
Widget build(BuildContext context) {
return CupertinoTheme(
data: CupertinoThemeData(
textTheme: CupertinoTextThemeData(
textTheme: pickerThemeData ?? CupertinoTextThemeData(
dateTimePickerTextStyle: textStyle,
),
),
Expand Down