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