From e5f8a3062d953cf0cdd33d3664fa08d6d3bf845d Mon Sep 17 00:00:00 2001 From: Your Name <you@example.com> Date: Thu, 22 Jul 2021 01:43:08 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=BF=AE=E6=94=B9Cuperti?= =?UTF-8?q?noPicker=E7=9A=84selectionOverlay=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/flutter_datetime_picker.dart | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/flutter_datetime_picker.dart b/lib/flutter_datetime_picker.dart index dba6b566..3da6a07b 100644 --- a/lib/flutter_datetime_picker.dart +++ b/lib/flutter_datetime_picker.dart @@ -185,6 +185,19 @@ class DatePicker { } } +class _DefaultSelectionOverlay extends StatelessWidget { + const _DefaultSelectionOverlay(); + + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [const Divider(height: 1), const Divider(height: 1)], + ); + } +} + class _DatePickerRoute<T> extends PopupRoute<T> { _DatePickerRoute({ this.showTitleActions, @@ -194,6 +207,7 @@ class _DatePickerRoute<T> extends PopupRoute<T> { DatePickerTheme? theme, this.barrierLabel, this.locale, + this.selectionOverlay = const _DefaultSelectionOverlay(), RouteSettings? settings, BasePickerModel? pickerModel, }) : this.pickerModel = pickerModel ?? DatePickerModel(), @@ -207,6 +221,7 @@ class _DatePickerRoute<T> extends PopupRoute<T> { final LocaleType? locale; final DatePickerTheme theme; final BasePickerModel pickerModel; + final Widget? selectionOverlay; @override Duration get transitionDuration => const Duration(milliseconds: 200); @@ -351,7 +366,7 @@ class _DatePickerState extends State<_DatePickerComponent> { return Expanded( flex: layoutProportion, child: Container( - padding: EdgeInsets.all(8.0), + padding: EdgeInsets.all(0.0), height: theme.containerHeight, decoration: BoxDecoration(color: theme.backgroundColor), child: NotificationListener( @@ -367,6 +382,7 @@ class _DatePickerState extends State<_DatePickerComponent> { return false; }, child: CupertinoPicker.builder( + selectionOverlay: widget.route.selectionOverlay, key: key, backgroundColor: theme.backgroundColor, scrollController: scrollController as FixedExtentScrollController, From c0ec8140eb7179f2f53303afa1219e47b4f519c4 Mon Sep 17 00:00:00 2001 From: Your Name <you@example.com> Date: Thu, 22 Jul 2021 08:47:14 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=94=AF=E6=8C=81=E8=AE=BE=E7=BD=AEitemMax?= =?UTF-8?q?Lines=E6=9D=A5=E6=8E=A7=E5=88=B6=E8=A1=8C=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/flutter_datetime_picker.dart | 1 + lib/src/datetime_picker_theme.dart | 2 ++ 2 files changed, 3 insertions(+) diff --git a/lib/flutter_datetime_picker.dart b/lib/flutter_datetime_picker.dart index 3da6a07b..f6cf941c 100644 --- a/lib/flutter_datetime_picker.dart +++ b/lib/flutter_datetime_picker.dart @@ -401,6 +401,7 @@ class _DatePickerState extends State<_DatePickerComponent> { alignment: Alignment.center, child: Text( content, + maxLines: theme.itemMaxLines, style: theme.itemStyle, textAlign: TextAlign.start, ), diff --git a/lib/src/datetime_picker_theme.dart b/lib/src/datetime_picker_theme.dart index e3f616f4..45782f1a 100644 --- a/lib/src/datetime_picker_theme.dart +++ b/lib/src/datetime_picker_theme.dart @@ -7,6 +7,7 @@ class DatePickerTheme with DiagnosticableTreeMixin { final TextStyle cancelStyle; final TextStyle doneStyle; final TextStyle itemStyle; + final int itemMaxLines; final Color backgroundColor; final Color? headerColor; @@ -18,6 +19,7 @@ class DatePickerTheme with DiagnosticableTreeMixin { this.cancelStyle = const TextStyle(color: Colors.black54, fontSize: 16), this.doneStyle = const TextStyle(color: Colors.blue, fontSize: 16), this.itemStyle = const TextStyle(color: Color(0xFF000046), fontSize: 18), + this.itemMaxLines = 1, this.backgroundColor = Colors.white, this.headerColor, this.containerHeight = 210.0,