mirror of
https://github.com/Iconica-Development/flutter_date_time_picker.git
synced 2025-05-18 18:33:49 +02:00
improvements for flutter 3.3
This commit is contained in:
parent
f30df19735
commit
f90e67fa91
8 changed files with 55 additions and 64 deletions
|
@ -21,6 +21,6 @@
|
|||
<key>CFBundleVersion</key>
|
||||
<string>1.0</string>
|
||||
<key>MinimumOSVersion</key>
|
||||
<string>9.0</string>
|
||||
<string>11.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -272,7 +272,7 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SUPPORTED_PLATFORMS = iphoneos;
|
||||
|
@ -350,7 +350,7 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
|
@ -399,7 +399,7 @@
|
|||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SUPPORTED_PLATFORMS = iphoneos;
|
||||
|
|
|
@ -7,7 +7,7 @@ packages:
|
|||
name: async
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.8.2"
|
||||
version: "2.9.0"
|
||||
boolean_selector:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -21,21 +21,14 @@ packages:
|
|||
name: characters
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.2.0"
|
||||
charcode:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: charcode
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.3.1"
|
||||
version: "1.2.1"
|
||||
clock:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: clock
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
version: "1.1.1"
|
||||
collection:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -56,7 +49,7 @@ packages:
|
|||
name: fake_async
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.3.0"
|
||||
version: "1.3.1"
|
||||
flutter:
|
||||
dependency: "direct main"
|
||||
description: flutter
|
||||
|
@ -101,28 +94,28 @@ packages:
|
|||
name: matcher
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.12.11"
|
||||
version: "0.12.12"
|
||||
material_color_utilities:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: material_color_utilities
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.1.4"
|
||||
version: "0.1.5"
|
||||
meta:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: meta
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.7.0"
|
||||
version: "1.8.0"
|
||||
path:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.8.1"
|
||||
version: "1.8.2"
|
||||
sky_engine:
|
||||
dependency: transitive
|
||||
description: flutter
|
||||
|
@ -134,7 +127,7 @@ packages:
|
|||
name: source_span
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.8.2"
|
||||
version: "1.9.0"
|
||||
stack_trace:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -155,21 +148,21 @@ packages:
|
|||
name: string_scanner
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
version: "1.1.1"
|
||||
term_glyph:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: term_glyph
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.2.0"
|
||||
version: "1.2.1"
|
||||
test_api:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: test_api
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "0.4.9"
|
||||
version: "0.4.12"
|
||||
vector_math:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
|
|
@ -113,7 +113,7 @@ import 'package:intl/date_symbol_data_local.dart';
|
|||
class DateTimePicker extends StatefulWidget {
|
||||
DateTimePicker({
|
||||
required this.child,
|
||||
this.weekDateBoxSize = 12,
|
||||
this.weekDateBoxSize = 35,
|
||||
this.monthDateBoxSize = 45,
|
||||
this.header,
|
||||
this.onTapDay,
|
||||
|
@ -139,8 +139,8 @@ class DateTimePicker extends StatefulWidget {
|
|||
final bool pickTime;
|
||||
final double? dateBoxSize;
|
||||
final DateBoxShape dateBoxShape;
|
||||
final double? weekDateBoxSize;
|
||||
final double? monthDateBoxSize;
|
||||
final double weekDateBoxSize;
|
||||
final double monthDateBoxSize;
|
||||
final DateTime? initialDate;
|
||||
final List<DateTime>? markedDates;
|
||||
final List<DateTime>? disabledDates;
|
||||
|
@ -153,6 +153,9 @@ class DateTimePicker extends StatefulWidget {
|
|||
class _DateTimePickerState extends State<DateTimePicker> {
|
||||
late DateTimePickerController _dateTimePickerController;
|
||||
|
||||
final DraggableScrollableController _dragController =
|
||||
DraggableScrollableController();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
@ -182,6 +185,7 @@ class _DateTimePickerState extends State<DateTimePicker> {
|
|||
@override
|
||||
void dispose() {
|
||||
_dateTimePickerController.dispose();
|
||||
_dragController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
|
@ -193,12 +197,14 @@ class _DateTimePickerState extends State<DateTimePicker> {
|
|||
RotatedBox(
|
||||
quarterTurns: 2,
|
||||
child: DraggableScrollableSheet(
|
||||
controller: _dateTimePickerController.getDragController(),
|
||||
controller: _dragController,
|
||||
snap: true,
|
||||
minChildSize: 0.26,
|
||||
initialChildSize: 0.26,
|
||||
minChildSize: 0.2,
|
||||
initialChildSize: 0.2,
|
||||
maxChildSize: 0.68,
|
||||
builder: (context, scrollController) {
|
||||
double dragSize =
|
||||
_dragController.isAttached ? _dragController.size : 0;
|
||||
return RotatedBox(
|
||||
quarterTurns: 2,
|
||||
child: Stack(
|
||||
|
@ -223,20 +229,16 @@ class _DateTimePickerState extends State<DateTimePicker> {
|
|||
),
|
||||
],
|
||||
),
|
||||
child: _dateTimePickerController
|
||||
.getDragController()
|
||||
.size <
|
||||
0.3
|
||||
child: dragSize < 0.3
|
||||
? WeekDateTimePickerSheet(
|
||||
dateTimePickerController:
|
||||
_dateTimePickerController,
|
||||
weekDateBoxSize: widget.weekDateBoxSize ?? 12,
|
||||
weekDateBoxSize: widget.weekDateBoxSize,
|
||||
)
|
||||
: MonthDateTimePickerSheet(
|
||||
dateTimePickerController:
|
||||
_dateTimePickerController,
|
||||
monthDateBoxSize:
|
||||
widget.monthDateBoxSize ?? 45,
|
||||
monthDateBoxSize: widget.monthDateBoxSize,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
|
@ -17,8 +17,7 @@ class DateTimePickerController extends ChangeNotifier {
|
|||
required this.selectedDate,
|
||||
});
|
||||
|
||||
final DraggableScrollableController _dragController =
|
||||
DraggableScrollableController();
|
||||
|
||||
final PageController _pageController = PageController(initialPage: 1);
|
||||
|
||||
final bool highlightToday;
|
||||
|
@ -41,7 +40,6 @@ class DateTimePickerController extends ChangeNotifier {
|
|||
@override
|
||||
void dispose() {
|
||||
_pageController.dispose();
|
||||
_dragController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
|
@ -71,10 +69,6 @@ class DateTimePickerController extends ChangeNotifier {
|
|||
}
|
||||
}
|
||||
|
||||
DraggableScrollableController getDragController() {
|
||||
return _dragController;
|
||||
}
|
||||
|
||||
PageController getPageController() {
|
||||
return _pageController;
|
||||
}
|
||||
|
|
|
@ -106,8 +106,8 @@ class MonthDateTimePicker extends StatelessWidget {
|
|||
borderRadius:
|
||||
_determineBorderRadius(dateTimePickerController),
|
||||
),
|
||||
height: 45,
|
||||
width: 45,
|
||||
height: monthDateBoxSize,
|
||||
width: monthDateBoxSize,
|
||||
child: Stack(
|
||||
children: [
|
||||
Center(
|
||||
|
|
|
@ -37,7 +37,7 @@ class MonthDateTimePickerSheet extends StatelessWidget {
|
|||
),
|
||||
SizedBox(
|
||||
width: MediaQuery.of(context).size.width,
|
||||
height: 300,
|
||||
height: MediaQuery.of(context).size.height * 0.33,
|
||||
child: PageView(
|
||||
controller: dateTimePickerController.getPageController(),
|
||||
onPageChanged: (i) {
|
||||
|
@ -90,8 +90,7 @@ class MonthDateTimePickerSheet extends StatelessWidget {
|
|||
: DateTime(dateTimePickerController.browsingDate.year,
|
||||
dateTimePickerController.browsingDate.month + 1, 1),
|
||||
dateTimePickerController: dateTimePickerController,
|
||||
monthDateBoxSize: monthDateBoxSize
|
||||
),
|
||||
monthDateBoxSize: monthDateBoxSize),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
|
|
@ -91,7 +91,10 @@ class WeekDateTimePicker extends StatelessWidget {
|
|||
);
|
||||
});
|
||||
} else {
|
||||
timeOfDay = TimeOfDay(hour: 0, minute: 0);
|
||||
timeOfDay = TimeOfDay(
|
||||
hour: 0,
|
||||
minute: 0,
|
||||
);
|
||||
}
|
||||
|
||||
DateTime selectedDateTime = DateTime(
|
||||
|
@ -120,8 +123,8 @@ class WeekDateTimePicker extends StatelessWidget {
|
|||
),
|
||||
const Spacer(),
|
||||
Container(
|
||||
height: 35,
|
||||
width: 35,
|
||||
height: weekDateBoxSize,
|
||||
width: weekDateBoxSize,
|
||||
decoration: BoxDecoration(
|
||||
color: calendarColors['backgroundColor'],
|
||||
borderRadius:
|
||||
|
@ -142,8 +145,8 @@ class WeekDateTimePicker extends StatelessWidget {
|
|||
Align(
|
||||
alignment: Alignment.bottomRight,
|
||||
child: Container(
|
||||
width: weekDateBoxSize,
|
||||
height: weekDateBoxSize,
|
||||
width: weekDateBoxSize / 3,
|
||||
height: weekDateBoxSize / 3,
|
||||
decoration: BoxDecoration(
|
||||
color: Theme.of(context).indicatorColor,
|
||||
borderRadius:
|
||||
|
@ -235,7 +238,7 @@ class WeekDateTimePicker extends StatelessWidget {
|
|||
case DateBoxShape.rectangle:
|
||||
return BorderRadius.zero;
|
||||
case DateBoxShape.roundedRectangle:
|
||||
return BorderRadius.circular(weekDateBoxSize / 1.5);
|
||||
return BorderRadius.circular(weekDateBoxSize / 4.5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue