improvements for flutter 3.3

This commit is contained in:
Thomas Klein Langenhorst 2022-09-01 09:13:03 +02:00
parent f30df19735
commit f90e67fa91
8 changed files with 55 additions and 64 deletions

View file

@ -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>

View file

@ -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;

View file

@ -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:

View file

@ -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,
), ),
), ),
), ),

View file

@ -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;
} }

View file

@ -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(

View file

@ -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) {
@ -70,7 +70,7 @@ class MonthDateTimePickerSheet extends StatelessWidget {
dateTimePickerController.browsingDate.year - 1, 12, 1) dateTimePickerController.browsingDate.year - 1, 12, 1)
: DateTime(dateTimePickerController.browsingDate.year, : DateTime(dateTimePickerController.browsingDate.year,
dateTimePickerController.browsingDate.month - 1, 1), dateTimePickerController.browsingDate.month - 1, 1),
monthDateBoxSize: monthDateBoxSize, monthDateBoxSize: monthDateBoxSize,
dateTimePickerController: dateTimePickerController), dateTimePickerController: dateTimePickerController),
MonthDateTimePicker( MonthDateTimePicker(
date: DateTime( date: DateTime(
@ -81,17 +81,16 @@ class MonthDateTimePickerSheet extends StatelessWidget {
dateTimePickerController: dateTimePickerController, dateTimePickerController: dateTimePickerController,
monthDateBoxSize: monthDateBoxSize), monthDateBoxSize: monthDateBoxSize),
MonthDateTimePicker( MonthDateTimePicker(
date: dateTimePickerController.browsingDate.month == 12 date: dateTimePickerController.browsingDate.month == 12
? DateTime( ? DateTime(
dateTimePickerController.browsingDate.year + 1, dateTimePickerController.browsingDate.year + 1,
1, 1,
1, 1,
) )
: 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),
),
], ],
), ),
), ),

View file

@ -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);
} }
} }
} }