From 8bebf21df21120e1ab3664e036c4c007cd4be1b5 Mon Sep 17 00:00:00 2001 From: M-Ahal Date: Tue, 1 Apr 2025 09:29:36 +0200 Subject: [PATCH 1/7] Make data class constructors const (some were missing) also some final vars were not final --- lib/src/platform.dart | 25 ++- lib/src/platform_alert_dialog.dart | 20 +-- lib/src/platform_app.dart | 158 ++++++++++-------- lib/src/platform_app_bar.dart | 63 +++---- lib/src/platform_checkbox.dart | 9 +- .../platform_circular_progress_indicator.dart | 19 ++- lib/src/platform_date_picker.dart | 29 ++-- lib/src/platform_dialog_action.dart | 8 +- lib/src/platform_elevated_button.dart | 22 +-- lib/src/platform_icon_button.dart | 22 +-- lib/src/platform_list_tile.dart | 22 +-- lib/src/platform_nav_bar.dart | 42 +++-- lib/src/platform_page.dart | 6 +- lib/src/platform_page_route.dart | 6 +- lib/src/platform_popup_menu.dart | 103 ++++++------ lib/src/platform_provider.dart | 11 +- lib/src/platform_radio.dart | 7 +- lib/src/platform_scaffold.dart | 27 +-- lib/src/platform_scrollbar.dart | 23 ++- lib/src/platform_search_bar.dart | 49 +++--- lib/src/platform_slider.dart | 10 +- lib/src/platform_sliver_app_bar.dart | 30 ++-- lib/src/platform_switch.dart | 12 +- lib/src/platform_tab_scaffold.dart | 141 ++++++++-------- lib/src/platform_text.dart | 46 ++--- lib/src/platform_text_button.dart | 26 ++- lib/src/platform_text_field.dart | 105 +++++++----- lib/src/platform_text_form_field.dart | 59 ++++--- lib/src/platform_theme.dart | 66 +++++--- 29 files changed, 632 insertions(+), 534 deletions(-) diff --git a/lib/src/platform.dart b/lib/src/platform.dart index f6ef5c9..00e796f 100644 --- a/lib/src/platform.dart +++ b/lib/src/platform.dart @@ -45,7 +45,6 @@ enum PlatformTarget { /// Windows: windows, - web, } @@ -121,7 +120,7 @@ abstract class _DialogBaseData { final String? barrierLabel; final Offset? anchorPoint; - _DialogBaseData({ + const _DialogBaseData({ this.builder, this.barrierDismissible, this.routeSettings, @@ -136,7 +135,7 @@ class MaterialDialogData extends _DialogBaseData { final Color? barrierColor; final TraversalEdgeBehavior? traversalEdgeBehavior; - MaterialDialogData({ + const MaterialDialogData({ super.builder, super.barrierDismissible, super.routeSettings, @@ -150,7 +149,7 @@ class MaterialDialogData extends _DialogBaseData { } class CupertinoDialogData extends _DialogBaseData { - CupertinoDialogData({ + const CupertinoDialogData({ super.builder, super.barrierDismissible, super.routeSettings, @@ -204,9 +203,7 @@ Future showPlatformDialog({ } abstract class _ModalSheetBaseData { - _ModalSheetBaseData({ - this.anchorPoint, - }); + const _ModalSheetBaseData({this.anchorPoint}); final Offset? anchorPoint; } @@ -225,12 +222,12 @@ class MaterialModalSheetData extends _ModalSheetBaseData { final AnimationController? transitionAnimationController; final BoxConstraints? constraints; final bool? useSafeArea; - String? barrierLabel; - double? scrollControlDisabledMaxHeightRatio; - bool? showDragHandle; - AnimationStyle? sheetAnimationStyle; + final String? barrierLabel; + final double? scrollControlDisabledMaxHeightRatio; + final bool? showDragHandle; + final AnimationStyle? sheetAnimationStyle; - MaterialModalSheetData({ + const MaterialModalSheetData({ super.anchorPoint, this.backgroundColor, this.elevation, @@ -260,7 +257,7 @@ class CupertinoModalSheetData extends _ModalSheetBaseData { final bool? barrierDismissible; final RouteSettings? routeSettings; - CupertinoModalSheetData({ + const CupertinoModalSheetData({ super.anchorPoint, this.imageFilter, this.semanticsDismissible, @@ -300,7 +297,7 @@ Future showPlatformModalSheet({ barrierLabel: material?.barrierLabel, scrollControlDisabledMaxHeightRatio: material?.scrollControlDisabledMaxHeightRatio ?? - _defaultScrollControlDisabledMaxHeightRatio, + _defaultScrollControlDisabledMaxHeightRatio, showDragHandle: material?.showDragHandle, sheetAnimationStyle: material?.sheetAnimationStyle, ); diff --git a/lib/src/platform_alert_dialog.dart b/lib/src/platform_alert_dialog.dart index bea7316..dfe0adf 100644 --- a/lib/src/platform_alert_dialog.dart +++ b/lib/src/platform_alert_dialog.dart @@ -13,16 +13,10 @@ import 'platform.dart'; import 'platform_provider.dart'; import 'widget_base.dart'; -const EdgeInsets _defaultInsetPadding = - EdgeInsets.symmetric(horizontal: 40.0, vertical: 24.0); +const _defaultInsetPadding = EdgeInsets.symmetric(horizontal: 40, vertical: 24); abstract class _BaseData { - _BaseData({ - this.widgetKey, - this.actions, - this.content, - this.title, - }); + const _BaseData({this.widgetKey, this.actions, this.content, this.title}); final Key? widgetKey; final List? actions; @@ -31,7 +25,7 @@ abstract class _BaseData { } class MaterialAlertDialogData extends _BaseData { - MaterialAlertDialogData({ + const MaterialAlertDialogData({ super.widgetKey, super.actions, super.content, @@ -87,7 +81,7 @@ class MaterialAlertDialogData extends _BaseData { } class CupertinoAlertDialogData extends _BaseData { - CupertinoAlertDialogData({ + const CupertinoAlertDialogData({ super.widgetKey, super.actions, super.content, @@ -183,7 +177,9 @@ class PlatformAlertDialog extends PlatformWidgetBase { // Ensure that there is Material widget at the root page level // as there can be Material widgets used on ios - return result.withMaterial(useLegacyMaterial && - context.findAncestorWidgetOfExactType() == null); + return result.withMaterial( + useLegacyMaterial && + context.findAncestorWidgetOfExactType() == null, + ); } } diff --git a/lib/src/platform_app.dart b/lib/src/platform_app.dart index 56d530a..5dd1041 100644 --- a/lib/src/platform_app.dart +++ b/lib/src/platform_app.dart @@ -20,7 +20,7 @@ import 'platform_theme.dart'; import 'widget_base.dart'; abstract class _BaseData { - _BaseData({ + const _BaseData({ this.widgetKey, this.navigatorKey, this.home, @@ -85,11 +85,11 @@ abstract class _BaseData { final String? restorationScopeId; final ScrollBehavior? scrollBehavior; final NotificationListenerCallback? - onNavigationNotification; + onNavigationNotification; } abstract class _BaseRouterData { - _BaseRouterData({ + const _BaseRouterData({ this.widgetKey, this.builder, this.title, @@ -161,11 +161,11 @@ abstract class _BaseRouterData { final ScrollBehavior? scrollBehavior; final NotificationListenerCallback? - onNavigationNotification; + onNavigationNotification; } class MaterialAppData extends _BaseData { - MaterialAppData({ + const MaterialAppData({ super.widgetKey, super.navigatorKey, super.home, @@ -217,7 +217,7 @@ class MaterialAppData extends _BaseData { } class MaterialAppRouterData extends _BaseRouterData { - MaterialAppRouterData({ + const MaterialAppRouterData({ super.widgetKey, super.builder, super.title, @@ -267,7 +267,7 @@ class MaterialAppRouterData extends _BaseRouterData { } class CupertinoAppData extends _BaseData { - CupertinoAppData({ + const CupertinoAppData({ super.widgetKey, super.navigatorKey, super.home, @@ -301,7 +301,7 @@ class CupertinoAppData extends _BaseData { } class CupertinoAppRouterData extends _BaseRouterData { - CupertinoAppRouterData({ + const CupertinoAppRouterData({ super.widgetKey, super.builder, super.title, @@ -359,7 +359,7 @@ class PlatformApp extends PlatformWidgetBase { final Map>? actions; final InitialRouteListFactory? onGenerateInitialRoutes; final NotificationListenerCallback? - onNavigationNotification; + onNavigationNotification; final PlatformBuilder? material; final PlatformBuilder? cupertino; @@ -417,13 +417,13 @@ class PlatformApp extends PlatformWidgetBase { this.onNavigationNotification, this.material, this.cupertino, - }) : routeInformationProvider = null, - routeInformationParser = null, - routerDelegate = null, - routerConfig = null, - backButtonDispatcher = null, - materialRouter = null, - cupertinoRouter = null; + }) : routeInformationProvider = null, + routeInformationParser = null, + routerDelegate = null, + routerConfig = null, + backButtonDispatcher = null, + materialRouter = null, + cupertinoRouter = null; const PlatformApp.router({ super.key, @@ -454,18 +454,18 @@ class PlatformApp extends PlatformWidgetBase { this.onNavigationNotification, PlatformBuilder? material, PlatformBuilder? cupertino, - }) : navigatorObservers = null, - navigatorKey = null, - onGenerateRoute = null, - home = null, - onGenerateInitialRoutes = null, - onUnknownRoute = null, - routes = null, - initialRoute = null, - material = null, - cupertino = null, - materialRouter = material, - cupertinoRouter = cupertino; + }) : navigatorObservers = null, + navigatorKey = null, + onGenerateRoute = null, + home = null, + onGenerateInitialRoutes = null, + onUnknownRoute = null, + routes = null, + initialRoute = null, + material = null, + cupertino = null, + materialRouter = material, + cupertinoRouter = cupertino; @override MaterialApp createMaterialWidget(BuildContext context) { @@ -475,10 +475,12 @@ class PlatformApp extends PlatformWidgetBase { dataRouter?.routeInformationParser != null || routerConfig != null || dataRouter?.routerConfig != null) { - assert(dataRouter?.routerDelegate != null || - routerDelegate != null || - dataRouter?.routerConfig != null || - routerConfig != null); + assert( + dataRouter?.routerDelegate != null || + routerDelegate != null || + dataRouter?.routerConfig != null || + routerConfig != null, + ); return MaterialApp.router( routeInformationProvider: @@ -499,7 +501,8 @@ class PlatformApp extends PlatformWidgetBase { .copyWith(platform: TargetPlatform.android), darkTheme: (dataRouter?.darkTheme ?? _getMaterialDarkThemeData(context)) ?.copyWith(platform: TargetPlatform.android), - themeMode: dataRouter?.themeMode ?? + themeMode: + dataRouter?.themeMode ?? _getMaterialThemeMode(context) ?? ThemeMode.system, highContrastDarkTheme: dataRouter?.highContrastDarkTheme, @@ -509,26 +512,30 @@ class PlatformApp extends PlatformWidgetBase { dataRouter?.localizationsDelegates ?? localizationsDelegates, localeListResolutionCallback: dataRouter?.localeListResolutionCallback ?? - localeListResolutionCallback, + localeListResolutionCallback, localeResolutionCallback: dataRouter?.localeResolutionCallback ?? localeResolutionCallback, - supportedLocales: dataRouter?.supportedLocales ?? + supportedLocales: + dataRouter?.supportedLocales ?? supportedLocales ?? const [Locale('en', 'US')], debugShowMaterialGrid: dataRouter?.debugShowMaterialGrid ?? false, - showPerformanceOverlay: dataRouter?.showPerformanceOverlay ?? + showPerformanceOverlay: + dataRouter?.showPerformanceOverlay ?? showPerformanceOverlay ?? false, checkerboardRasterCacheImages: dataRouter?.checkerboardRasterCacheImages ?? - checkerboardRasterCacheImages ?? - false, - checkerboardOffscreenLayers: dataRouter?.checkerboardOffscreenLayers ?? + checkerboardRasterCacheImages ?? + false, + checkerboardOffscreenLayers: + dataRouter?.checkerboardOffscreenLayers ?? checkerboardOffscreenLayers ?? false, showSemanticsDebugger: dataRouter?.showSemanticsDebugger ?? showSemanticsDebugger ?? false, - debugShowCheckedModeBanner: dataRouter?.debugShowCheckedModeBanner ?? + debugShowCheckedModeBanner: + dataRouter?.debugShowCheckedModeBanner ?? debugShowCheckedModeBanner ?? true, shortcuts: dataRouter?.shortcuts ?? shortcuts, @@ -556,7 +563,8 @@ class PlatformApp extends PlatformWidgetBase { initialRoute: data?.initialRoute ?? initialRoute, onGenerateRoute: data?.onGenerateRoute ?? onGenerateRoute, onUnknownRoute: data?.onUnknownRoute ?? onUnknownRoute, - navigatorObservers: data?.navigatorObservers ?? + navigatorObservers: + data?.navigatorObservers ?? navigatorObservers ?? const [], builder: data?.builder ?? builder, @@ -570,20 +578,24 @@ class PlatformApp extends PlatformWidgetBase { data?.localeListResolutionCallback ?? localeListResolutionCallback, localeResolutionCallback: data?.localeResolutionCallback ?? localeResolutionCallback, - supportedLocales: data?.supportedLocales ?? + supportedLocales: + data?.supportedLocales ?? supportedLocales ?? const [Locale('en', 'US')], showPerformanceOverlay: data?.showPerformanceOverlay ?? showPerformanceOverlay ?? false, - checkerboardRasterCacheImages: data?.checkerboardRasterCacheImages ?? + checkerboardRasterCacheImages: + data?.checkerboardRasterCacheImages ?? checkerboardRasterCacheImages ?? false, - checkerboardOffscreenLayers: data?.checkerboardOffscreenLayers ?? + checkerboardOffscreenLayers: + data?.checkerboardOffscreenLayers ?? checkerboardOffscreenLayers ?? false, showSemanticsDebugger: data?.showSemanticsDebugger ?? showSemanticsDebugger ?? false, - debugShowCheckedModeBanner: data?.debugShowCheckedModeBanner ?? + debugShowCheckedModeBanner: + data?.debugShowCheckedModeBanner ?? debugShowCheckedModeBanner ?? true, debugShowMaterialGrid: data?.debugShowMaterialGrid ?? false, @@ -593,7 +605,8 @@ class PlatformApp extends PlatformWidgetBase { .copyWith(platform: TargetPlatform.android), darkTheme: (data?.darkTheme ?? _getMaterialDarkThemeData(context)) ?.copyWith(platform: TargetPlatform.android), - themeMode: data?.themeMode ?? + themeMode: + data?.themeMode ?? _getMaterialThemeMode(context) ?? ThemeMode.system, shortcuts: data?.shortcuts ?? shortcuts, @@ -624,10 +637,12 @@ class PlatformApp extends PlatformWidgetBase { dataRouter?.routeInformationParser != null || routerConfig != null || dataRouter?.routerConfig != null) { - assert(dataRouter?.routerDelegate != null || - routerDelegate != null || - dataRouter?.routerConfig != null || - routerConfig != null); + assert( + dataRouter?.routerDelegate != null || + routerDelegate != null || + dataRouter?.routerConfig != null || + routerConfig != null, + ); return CupertinoApp.router( routeInformationProvider: @@ -648,25 +663,29 @@ class PlatformApp extends PlatformWidgetBase { dataRouter?.localizationsDelegates ?? localizationsDelegates, localeListResolutionCallback: dataRouter?.localeListResolutionCallback ?? - localeListResolutionCallback, + localeListResolutionCallback, localeResolutionCallback: dataRouter?.localeResolutionCallback ?? localeResolutionCallback, - supportedLocales: dataRouter?.supportedLocales ?? + supportedLocales: + dataRouter?.supportedLocales ?? supportedLocales ?? const [Locale('en', 'US')], - showPerformanceOverlay: dataRouter?.showPerformanceOverlay ?? + showPerformanceOverlay: + dataRouter?.showPerformanceOverlay ?? showPerformanceOverlay ?? false, checkerboardRasterCacheImages: dataRouter?.checkerboardRasterCacheImages ?? - checkerboardRasterCacheImages ?? - false, - checkerboardOffscreenLayers: dataRouter?.checkerboardOffscreenLayers ?? + checkerboardRasterCacheImages ?? + false, + checkerboardOffscreenLayers: + dataRouter?.checkerboardOffscreenLayers ?? checkerboardOffscreenLayers ?? false, showSemanticsDebugger: dataRouter?.showSemanticsDebugger ?? showSemanticsDebugger ?? false, - debugShowCheckedModeBanner: dataRouter?.debugShowCheckedModeBanner ?? + debugShowCheckedModeBanner: + dataRouter?.debugShowCheckedModeBanner ?? debugShowCheckedModeBanner ?? true, shortcuts: dataRouter?.shortcuts ?? shortcuts, @@ -690,7 +709,8 @@ class PlatformApp extends PlatformWidgetBase { initialRoute: data?.initialRoute ?? initialRoute, onGenerateRoute: data?.onGenerateRoute ?? onGenerateRoute, onUnknownRoute: data?.onUnknownRoute ?? onUnknownRoute, - navigatorObservers: data?.navigatorObservers ?? + navigatorObservers: + data?.navigatorObservers ?? navigatorObservers ?? const [], builder: data?.builder ?? builder, @@ -704,20 +724,24 @@ class PlatformApp extends PlatformWidgetBase { data?.localeListResolutionCallback ?? localeListResolutionCallback, localeResolutionCallback: data?.localeResolutionCallback ?? localeResolutionCallback, - supportedLocales: data?.supportedLocales ?? + supportedLocales: + data?.supportedLocales ?? supportedLocales ?? const [Locale('en', 'US')], showPerformanceOverlay: data?.showPerformanceOverlay ?? showPerformanceOverlay ?? false, - checkerboardRasterCacheImages: data?.checkerboardRasterCacheImages ?? + checkerboardRasterCacheImages: + data?.checkerboardRasterCacheImages ?? checkerboardRasterCacheImages ?? false, - checkerboardOffscreenLayers: data?.checkerboardOffscreenLayers ?? + checkerboardOffscreenLayers: + data?.checkerboardOffscreenLayers ?? checkerboardOffscreenLayers ?? false, showSemanticsDebugger: data?.showSemanticsDebugger ?? showSemanticsDebugger ?? false, - debugShowCheckedModeBanner: data?.debugShowCheckedModeBanner ?? + debugShowCheckedModeBanner: + data?.debugShowCheckedModeBanner ?? debugShowCheckedModeBanner ?? true, theme: data?.theme ?? _getCupertinoTheme(context), @@ -749,11 +773,13 @@ class PlatformApp extends PlatformWidgetBase { CupertinoThemeData? _getCupertinoTheme(BuildContext context) { final isDark = PlatformTheme.of(context)?.isDark; final lightTheme = PlatformTheme.of(context)?.cupertinoLightTheme; - final darkTheme = PlatformTheme.of(context)?.cupertinoDarkTheme ?? + final darkTheme = + PlatformTheme.of(context)?.cupertinoDarkTheme ?? PlatformTheme.of(context)?.cupertinoLightTheme; - final theme = isDark == null - ? null - : isDark + final theme = + isDark == null + ? null + : isDark ? darkTheme : lightTheme; diff --git a/lib/src/platform_app_bar.dart b/lib/src/platform_app_bar.dart index 7ea6144..fc3aa9e 100644 --- a/lib/src/platform_app_bar.dart +++ b/lib/src/platform_app_bar.dart @@ -16,13 +16,12 @@ import 'platform_provider.dart'; import 'widget_base.dart'; //the default has alpha which will cause the content to slide under the header for ios -const Color _kDefaultNavBarBorderColor = Color(0x4C000000); +const _kDefaultNavBarBorderColor = Color(0x4C000000); -const Border _kDefaultNavBarBorder = Border( +const _kDefaultNavBarBorder = Border( bottom: BorderSide( color: _kDefaultNavBarBorderColor, - width: 0.0, // One physical pixel. - style: BorderStyle.solid, + width: 0, // One physical pixel. ), ); @@ -216,17 +215,19 @@ class PlatformAppBar CupertinoNavigationBar createCupertinoWidget(BuildContext context) { final data = cupertino?.call(context, platform(context)); - final trailing = trailingActions?.isEmpty ?? true - ? null - : Row( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.stretch, - children: trailingActions!, - ); + final trailing = + trailingActions?.isEmpty ?? true + ? null + : Row( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: trailingActions!, + ); final providerState = PlatformProvider.of(context); final noMaterialParent = data?.noMaterialParent ?? false; - final useMaterial = (!noMaterialParent) && + final useMaterial = + (!noMaterialParent) && (providerState?.settings.iosUsesMaterialWidgets ?? false); final heroTag = data?.heroTag; @@ -235,19 +236,22 @@ class PlatformAppBar key: data?.widgetKey ?? widgetKey, middle: _getMiddleCupertinoWidget(context, data), backgroundColor: data?.backgroundColor ?? backgroundColor, - automaticallyImplyLeading: data?.automaticallyImplyLeading ?? + automaticallyImplyLeading: + data?.automaticallyImplyLeading ?? automaticallyImplyLeading ?? true, automaticallyImplyMiddle: data?.automaticallyImplyMiddle ?? true, previousPageTitle: data?.previousPageTitle, padding: data?.padding, border: data?.border ?? _kDefaultNavBarBorder, - leading: _getLeadingCupertinoWidget(context, data) - ?.withMaterial(useMaterial) - .withWidgetFinder(), - trailing: (data?.trailing ?? trailing) - ?.withMaterial(useMaterial) - .withWidgetFinder(), + leading: + _getLeadingCupertinoWidget(context, data) + ?.withMaterial(useMaterial) + .withWidgetFinder(), + trailing: + (data?.trailing ?? trailing) + ?.withMaterial(useMaterial) + .withWidgetFinder(), transitionBetweenRoutes: data?.transitionBetweenRoutes ?? true, brightness: data?.brightness, heroTag: heroTag, @@ -268,12 +272,14 @@ class PlatformAppBar previousPageTitle: data?.previousPageTitle, padding: data?.padding, border: data?.border ?? _kDefaultNavBarBorder, - leading: _getLeadingCupertinoWidget(context, data) - ?.withMaterial(useMaterial) - .withWidgetFinder(), - trailing: (data?.trailing ?? trailing) - ?.withMaterial(useMaterial) - .withWidgetFinder(), + leading: + _getLeadingCupertinoWidget(context, data) + ?.withMaterial(useMaterial) + .withWidgetFinder(), + trailing: + (data?.trailing ?? trailing) + ?.withMaterial(useMaterial) + .withWidgetFinder(), transitionBetweenRoutes: data?.transitionBetweenRoutes ?? true, brightness: data?.brightness, automaticBackgroundVisibility: @@ -329,9 +335,10 @@ class PlatformAppBar return null; } - final useMediaQueryWrapper = PlatformProvider.of(context) - ?.settings - .wrapCupertinoAppBarMiddleWithMediaQuery ?? + final useMediaQueryWrapper = + PlatformProvider.of( + context, + )?.settings.wrapCupertinoAppBarMiddleWithMediaQuery ?? true; if (!useMediaQueryWrapper) { diff --git a/lib/src/platform_checkbox.dart b/lib/src/platform_checkbox.dart index b4aeb16..00c3ccc 100644 --- a/lib/src/platform_checkbox.dart +++ b/lib/src/platform_checkbox.dart @@ -13,7 +13,7 @@ import 'platform.dart'; import 'widget_base.dart'; abstract class _BaseData { - _BaseData({ + const _BaseData({ this.widgetKey, this.value, this.tristate, @@ -29,6 +29,7 @@ abstract class _BaseData { this.fillColor, this.semanticLabel, }); + final Key? widgetKey; final bool? value; final bool? tristate; @@ -46,7 +47,7 @@ abstract class _BaseData { } class MaterialCheckboxData extends _BaseData { - MaterialCheckboxData({ + const MaterialCheckboxData({ // Common super.widgetKey, super.value, @@ -62,8 +63,8 @@ class MaterialCheckboxData extends _BaseData { super.mouseCursor, super.fillColor, super.semanticLabel, - //Material + //Material this.hoverColor, this.overlayColor, this.splashRadius, @@ -81,7 +82,7 @@ class MaterialCheckboxData extends _BaseData { } class CupertinoCheckboxData extends _BaseData { - CupertinoCheckboxData({ + const CupertinoCheckboxData({ //Common super.widgetKey, super.value, diff --git a/lib/src/platform_circular_progress_indicator.dart b/lib/src/platform_circular_progress_indicator.dart index d184a8d..12360f4 100644 --- a/lib/src/platform_circular_progress_indicator.dart +++ b/lib/src/platform_circular_progress_indicator.dart @@ -11,20 +11,17 @@ import 'package:flutter/widgets.dart'; import 'platform.dart'; import 'widget_base.dart'; -const double _kDefaultIndicatorRadius = 10.0; +const _kDefaultIndicatorRadius = 10.0; abstract class _BaseData { - _BaseData({ - this.key, - this.color, - }); + const _BaseData({this.key, this.color}); final Key? key; final Color? color; } class MaterialProgressIndicatorData extends _BaseData { - MaterialProgressIndicatorData({ + const MaterialProgressIndicatorData({ super.key, super.color, this.backgroundColor, @@ -54,7 +51,7 @@ class MaterialProgressIndicatorData extends _BaseData { } class CupertinoProgressIndicatorData extends _BaseData { - CupertinoProgressIndicatorData({ + const CupertinoProgressIndicatorData({ super.key, super.color, this.animating, @@ -65,8 +62,12 @@ class CupertinoProgressIndicatorData extends _BaseData { final double? radius; } -class PlatformCircularProgressIndicator extends PlatformWidgetBase< - CupertinoActivityIndicator, CircularProgressIndicator> { +class PlatformCircularProgressIndicator + extends + PlatformWidgetBase< + CupertinoActivityIndicator, + CircularProgressIndicator + > { final Key? widgetKey; final PlatformBuilder? material; diff --git a/lib/src/platform_date_picker.dart b/lib/src/platform_date_picker.dart index b1e3746..f4aca22 100644 --- a/lib/src/platform_date_picker.dart +++ b/lib/src/platform_date_picker.dart @@ -19,7 +19,7 @@ import 'widget_base.dart'; // Values derived from https://developer.apple.com/design/resources/ and on iOS // simulators with "Debug View Hierarchy". -const double _kItemExtent = 32.0; +const _kItemExtent = 32.0; class DatePickerContentData { final DateTime? initialDate; @@ -27,7 +27,7 @@ class DatePickerContentData { final DateTime? lastDate; final DateTime selectedDate; - DatePickerContentData({ + const DatePickerContentData({ this.initialDate, this.firstDate, this.lastDate, @@ -35,24 +35,22 @@ class DatePickerContentData { }); } -typedef DatePickerContentBuilder = Widget Function( - DatePickerContentData data, - CupertinoDatePickerData? cupertinoData, -); +typedef DatePickerContentBuilder = + Widget Function( + DatePickerContentData data, + CupertinoDatePickerData? cupertinoData, + ); abstract class _BaseData { final DateTime? initialDate; final DateTime? firstDate; final DateTime? lastDate; - _BaseData({ - this.initialDate, - this.firstDate, - this.lastDate, - }); + + const _BaseData({this.initialDate, this.firstDate, this.lastDate}); } class MaterialDatePickerData extends _BaseData { - MaterialDatePickerData({ + const MaterialDatePickerData({ super.initialDate, super.firstDate, super.lastDate, @@ -109,7 +107,7 @@ class MaterialDatePickerData extends _BaseData { } class CupertinoDatePickerData extends _BaseData { - CupertinoDatePickerData({ + const CupertinoDatePickerData({ super.initialDate, super.firstDate, super.lastDate, @@ -197,10 +195,7 @@ Future showPlatformDatePicker({ ); return await _showDateModalBottomSheet( context, - cupertinoContentBuilder?.call( - contentData, - data, - ) ?? + cupertinoContentBuilder?.call(contentData, data) ?? _renderManagedCupertinoDatePicker( data: data, initialDate: initialDate, diff --git a/lib/src/platform_dialog_action.dart b/lib/src/platform_dialog_action.dart index 63a21e8..5a944f0 100644 --- a/lib/src/platform_dialog_action.dart +++ b/lib/src/platform_dialog_action.dart @@ -20,7 +20,7 @@ import 'platform.dart'; import 'widget_base.dart'; abstract class _BaseData { - _BaseData({ + const _BaseData({ this.widgetKey, this.child, this.onPressed, @@ -36,7 +36,7 @@ abstract class _BaseData { } class MaterialDialogActionData extends _BaseData { - MaterialDialogActionData({ + const MaterialDialogActionData({ super.widgetKey, super.child, super.onPressed, @@ -63,7 +63,7 @@ class MaterialDialogActionData extends _BaseData { } class MaterialDialogFlatActionData extends _BaseData { - MaterialDialogFlatActionData({ + const MaterialDialogFlatActionData({ super.child, super.onPressed, super.widgetKey, @@ -114,7 +114,7 @@ class MaterialDialogFlatActionData extends _BaseData { } class CupertinoDialogActionData extends _BaseData { - CupertinoDialogActionData({ + const CupertinoDialogActionData({ super.child, super.onPressed, super.widgetKey, diff --git a/lib/src/platform_elevated_button.dart b/lib/src/platform_elevated_button.dart index f54ca66..b955ef7 100644 --- a/lib/src/platform_elevated_button.dart +++ b/lib/src/platform_elevated_button.dart @@ -13,10 +13,10 @@ import 'package:flutter/widgets.dart'; import 'platform.dart'; import 'widget_base.dart'; -const double _kMinInteractiveDimensionCupertino = 44.0; +const _kMinInteractiveDimensionCupertino = 44.0; abstract class _BaseData { - _BaseData({ + const _BaseData({ this.widgetKey, this.child, this.onPressed, @@ -30,7 +30,7 @@ abstract class _BaseData { } class MaterialElevatedButtonData extends _BaseData { - MaterialElevatedButtonData({ + const MaterialElevatedButtonData({ super.widgetKey, super.child, super.onPressed, @@ -58,7 +58,7 @@ class MaterialElevatedButtonData extends _BaseData { } class CupertinoElevatedButtonData extends _BaseData { - CupertinoElevatedButtonData({ + const CupertinoElevatedButtonData({ super.widgetKey, super.child, super.onPressed, @@ -139,7 +139,8 @@ class PlatformElevatedButton autofocus: data?.autofocus ?? false, clipBehavior: data?.clipBehavior ?? Clip.none, focusNode: data?.focusNode, - style: data?.style ?? + style: + data?.style ?? ElevatedButton.styleFrom( backgroundColor: color, padding: padding, @@ -160,7 +161,8 @@ class PlatformElevatedButton autofocus: data?.autofocus ?? false, clipBehavior: data?.clipBehavior ?? Clip.none, focusNode: data?.focusNode, - style: data?.style ?? + style: + data?.style ?? ElevatedButton.styleFrom( backgroundColor: color, padding: padding, @@ -180,8 +182,8 @@ class PlatformElevatedButton key: data?.widgetKey ?? widgetKey, child: data?.child ?? child!, onPressed: data?.onPressed ?? onPressed, - borderRadius: data?.borderRadius ?? - const BorderRadius.all(Radius.circular(8.0)), + borderRadius: + data?.borderRadius ?? const BorderRadius.all(Radius.circular(8.0)), minSize: data?.minSize ?? _kMinInteractiveDimensionCupertino, padding: data?.padding ?? padding, pressedOpacity: data?.pressedOpacity ?? 0.4, @@ -201,8 +203,8 @@ class PlatformElevatedButton key: data?.widgetKey ?? widgetKey, child: data?.child ?? child!, onPressed: data?.onPressed ?? onPressed, - borderRadius: data?.borderRadius ?? - const BorderRadius.all(Radius.circular(8.0)), + borderRadius: + data?.borderRadius ?? const BorderRadius.all(Radius.circular(8.0)), minSize: data?.minSize ?? _kMinInteractiveDimensionCupertino, padding: data?.padding ?? padding, pressedOpacity: data?.pressedOpacity ?? 0.4, diff --git a/lib/src/platform_icon_button.dart b/lib/src/platform_icon_button.dart index bd82c2b..33cfd43 100644 --- a/lib/src/platform_icon_button.dart +++ b/lib/src/platform_icon_button.dart @@ -19,10 +19,10 @@ import 'platform.dart'; import 'platform_provider.dart'; import 'widget_base.dart'; -const double _kMinInteractiveDimensionCupertino = 44.0; +const _kMinInteractiveDimensionCupertino = 44.0; abstract class _BaseData { - _BaseData({ + const _BaseData({ this.widgetKey, this.icon, this.onPressed, @@ -42,7 +42,7 @@ abstract class _BaseData { } class CupertinoIconButtonData extends _BaseData { - CupertinoIconButtonData({ + const CupertinoIconButtonData({ super.widgetKey, super.icon, super.onPressed, @@ -73,7 +73,7 @@ class CupertinoIconButtonData extends _BaseData { } class MaterialIconButtonData extends _BaseData { - MaterialIconButtonData({ + const MaterialIconButtonData({ super.widgetKey, super.icon, super.onPressed, @@ -195,9 +195,10 @@ class PlatformIconButton extends PlatformWidgetBase { assert(data?.icon != null || cupertinoIcon != null || icon != null); // If the IconButton is placed inside the AppBar, we need to have zero padding. - final haveZeroPadding = PlatformProvider.of(context) - ?.settings - .iosUseZeroPaddingForAppbarPlatformIcon ?? + final haveZeroPadding = + PlatformProvider.of( + context, + )?.settings.iosUseZeroPaddingForAppbarPlatformIcon ?? false; final isPlacedOnPlatformAppBar = ParentWidgetFinder.of(context) != null; @@ -212,11 +213,12 @@ class PlatformIconButton extends PlatformWidgetBase { onPressed: data?.onPressed ?? onPressed, padding: givenPadding, color: data?.color ?? color, - borderRadius: data?.borderRadius ?? - const BorderRadius.all(Radius.circular(8.0)), + borderRadius: + data?.borderRadius ?? const BorderRadius.all(Radius.circular(8.0)), minSize: data?.minSize ?? _kMinInteractiveDimensionCupertino, pressedOpacity: data?.pressedOpacity ?? 0.4, - disabledColor: data?.disabledColor ?? + disabledColor: + data?.disabledColor ?? disabledColor ?? CupertinoColors.quaternarySystemFill, alignment: data?.alignment ?? Alignment.center, diff --git a/lib/src/platform_list_tile.dart b/lib/src/platform_list_tile.dart index 6036d15..5ecf52a 100644 --- a/lib/src/platform_list_tile.dart +++ b/lib/src/platform_list_tile.dart @@ -11,11 +11,11 @@ import 'package:flutter/widgets.dart'; import 'platform.dart'; import 'widget_base.dart'; -const double _kLeadingSize = 28.0; -const double _kLeadingToTitle = 16.0; +const _kLeadingSize = 28.0; +const _kLeadingToTitle = 16.0; abstract class _BaseData { - _BaseData({ + const _BaseData({ this.key, this.leading, this.title, @@ -33,7 +33,7 @@ abstract class _BaseData { } class MaterialListTileData extends _BaseData { - MaterialListTileData({ + const MaterialListTileData({ super.key, super.leading, super.title, @@ -107,7 +107,7 @@ class MaterialListTileData extends _BaseData { } class CupertinoListTileData extends _BaseData { - CupertinoListTileData({ + const CupertinoListTileData({ super.key, super.leading, super.title, @@ -122,12 +122,12 @@ class CupertinoListTileData extends _BaseData { this.additionalInfo, }); - double? leadingToTitle; - double? leadingSize; - EdgeInsetsGeometry? padding; - Color? backgroundColor; - Color? backgroundColorActivated; - Widget? additionalInfo; + final double? leadingToTitle; + final double? leadingSize; + final EdgeInsetsGeometry? padding; + final Color? backgroundColor; + final Color? backgroundColorActivated; + final Widget? additionalInfo; } class PlatformListTile extends PlatformWidgetBase { diff --git a/lib/src/platform_nav_bar.dart b/lib/src/platform_nav_bar.dart index 1a3fdbc..de9f554 100644 --- a/lib/src/platform_nav_bar.dart +++ b/lib/src/platform_nav_bar.dart @@ -21,12 +21,12 @@ import 'platform.dart'; import 'widget_base.dart'; // Standard iOS 10 tab bar height. -const double _kTabBarHeight = 50.0; -const Color _kDefaultTabBarBorderColor = Color(0x4C000000); +const _kTabBarHeight = 50.0; +const _kDefaultTabBarBorderColor = Color(0x4C000000); const Color _kDefaultTabBarInactiveColor = CupertinoColors.inactiveGray; abstract class _BaseData { - _BaseData({ + const _BaseData({ this.widgetKey, this.items, this.backgroundColor, @@ -48,7 +48,7 @@ abstract class _BaseData { } class CupertinoTabBarData extends _BaseData { - CupertinoTabBarData({ + const CupertinoTabBarData({ super.backgroundColor, super.items, super.activeColor, @@ -66,7 +66,7 @@ class CupertinoTabBarData extends _BaseData { } class MaterialNavigationBarData { - MaterialNavigationBarData({ + const MaterialNavigationBarData({ this.widgetKey, this.items, this.height, @@ -104,7 +104,7 @@ class MaterialNavigationBarData { } class MaterialNavBarData extends _BaseData { - MaterialNavBarData({ + const MaterialNavBarData({ super.items, super.backgroundColor, super.iconSize, @@ -200,19 +200,17 @@ class PlatformNavBar extends PlatformWidgetBase { Widget _createMaterial3Widget(BuildContext context) { final data = material3?.call(context, platform(context)); final selectedIndex = data?.selectedIndex ?? currentIndex ?? 0; - final destinations = data?.items ?? - items?.map( - (item) { - return NavigationDestination( - // key: , - icon: item.icon, - label: item.label ?? '', - selectedIcon: item.activeIcon, - tooltip: item.tooltip, - enabled: true, - ); - }, - ).toList() ?? + final destinations = + data?.items ?? + items?.map((item) { + return NavigationDestination( + // key: , + icon: item.icon, + label: item.label ?? '', + selectedIcon: item.activeIcon, + tooltip: item.tooltip, + ); + }).toList() ?? []; assert(destinations.length >= 2); assert(0 <= selectedIndex && selectedIndex < destinations.length); @@ -294,12 +292,12 @@ class PlatformNavBar extends PlatformWidgetBase { inactiveColor: data?.inactiveColor ?? _kDefaultTabBarInactiveColor, key: data?.widgetKey ?? widgetKey, onTap: data?.itemChanged ?? itemChanged, - border: data?.border ?? + border: + data?.border ?? const Border( top: BorderSide( color: _kDefaultTabBarBorderColor, - width: 0.0, // One physical pixel. - style: BorderStyle.solid, + width: 0, // One physical pixel. ), ), height: data?.height ?? height ?? _kTabBarHeight, diff --git a/lib/src/platform_page.dart b/lib/src/platform_page.dart index f7b3f29..69b58b8 100644 --- a/lib/src/platform_page.dart +++ b/lib/src/platform_page.dart @@ -56,7 +56,7 @@ abstract class _BasePageData { final PopInvokedWithResultCallback? onPopInvoked; - _BasePageData({ + const _BasePageData({ this.child, this.name, this.maintainState, @@ -71,7 +71,7 @@ abstract class _BasePageData { } class MaterialPageData extends _BasePageData { - MaterialPageData({ + const MaterialPageData({ super.child, super.name, super.maintainState, @@ -86,7 +86,7 @@ class MaterialPageData extends _BasePageData { } class CupertinoPageData extends _BasePageData { - CupertinoPageData({ + const CupertinoPageData({ super.child, super.name, super.maintainState, diff --git a/lib/src/platform_page_route.dart b/lib/src/platform_page_route.dart index a21f8fb..93b30ae 100644 --- a/lib/src/platform_page_route.dart +++ b/lib/src/platform_page_route.dart @@ -21,7 +21,7 @@ class _BasePageRouteData { final bool? barrierDismissible; final bool? requestFocus; - _BasePageRouteData({ + const _BasePageRouteData({ this.builder, this.settings, this.maintainState, @@ -33,7 +33,7 @@ class _BasePageRouteData { } class MaterialPageRouteData extends _BasePageRouteData { - MaterialPageRouteData({ + const MaterialPageRouteData({ super.builder, super.settings, super.maintainState, @@ -45,7 +45,7 @@ class MaterialPageRouteData extends _BasePageRouteData { } class CupertinoPageRouteData extends _BasePageRouteData { - CupertinoPageRouteData({ + const CupertinoPageRouteData({ super.builder, super.settings, super.maintainState, diff --git a/lib/src/platform_popup_menu.dart b/lib/src/platform_popup_menu.dart index 3dac3af..36e6f48 100644 --- a/lib/src/platform_popup_menu.dart +++ b/lib/src/platform_popup_menu.dart @@ -17,7 +17,7 @@ import 'platform.dart'; import 'platform_widget.dart'; import 'widget_base.dart'; -const double _kMenuDividerHeight = 16.0; +const _kMenuDividerHeight = 16.0; class PopupMenuOption { final String? label; @@ -26,7 +26,7 @@ class PopupMenuOption { final PlatformBuilder? cupertino; final PlatformBuilder? material; - PopupMenuOption({ + const PopupMenuOption({ this.label, this.onTap, this.cupertino, @@ -38,10 +38,7 @@ abstract class _BaseData { final Key? key; final Widget? child; - _BaseData({ - this.key, - this.child, - }); + const _BaseData({this.key, this.child}); } class MaterialPopupMenuOptionData extends _BaseData { @@ -55,7 +52,7 @@ class MaterialPopupMenuOptionData extends _BaseData { final double dividerHeight; final WidgetStateProperty? labelTextStyle; - MaterialPopupMenuOptionData({ + const MaterialPopupMenuOptionData({ super.key, super.child, this.enabled, @@ -76,7 +73,7 @@ class CupertinoPopupMenuOptionData extends _BaseData { final bool? isDestructiveAction; final MouseCursor? mouseCursor; - CupertinoPopupMenuOptionData({ + const CupertinoPopupMenuOptionData({ super.key, super.child, this.onPressed, @@ -118,7 +115,7 @@ class MaterialPopupMenuData { final bool? requestFocus; final RouteSettings? routeSettings; - MaterialPopupMenuData({ + const MaterialPopupMenuData({ this.key, this.icon, this.itemBuilder, @@ -161,7 +158,7 @@ class CupertinoPopupMenuData { final List? actions; final CupertinoPopupMenuCancelButtonData? cancelButtonData; - CupertinoPopupMenuData({ + const CupertinoPopupMenuData({ this.key, this.title, this.message, @@ -235,34 +232,35 @@ class PlatformPopupMenu extends StatelessWidget { message: data?.message, actionScrollController: data?.actionScrollController, messageScrollController: data?.messageScrollController, - actions: data?.actions ?? - options.map( - (option) { - final data = option.cupertino?.call(context, platform(context)); - return CupertinoActionSheetAction( - key: data?.key, - isDefaultAction: data?.isDefaultAction ?? false, - isDestructiveAction: data?.isDestructiveAction ?? false, - child: data?.child ?? Text(option.label ?? ''), - onPressed: data?.onPressed ?? - () { - Navigator.pop(context); - option.onTap?.call(option); - }, - mouseCursor: data?.mouseCursor, - ); - }, - ).toList(), - cancelButton: cancelData == null - ? null - : CupertinoActionSheetAction( - key: cancelData.key, - child: cancelData.child, - isDefaultAction: cancelData.isDefaultAction ?? false, - isDestructiveAction: cancelData.isDestructiveAction ?? false, - onPressed: cancelData.onPressed ?? () => Navigator.pop(context), - mouseCursor: cancelData.mouseCursor, - ), + actions: + data?.actions ?? + options.map((option) { + final data = option.cupertino?.call(context, platform(context)); + return CupertinoActionSheetAction( + key: data?.key, + isDefaultAction: data?.isDefaultAction ?? false, + isDestructiveAction: data?.isDestructiveAction ?? false, + child: data?.child ?? Text(option.label ?? ''), + onPressed: + data?.onPressed ?? + () { + Navigator.pop(context); + option.onTap?.call(option); + }, + mouseCursor: data?.mouseCursor, + ); + }).toList(), + cancelButton: + cancelData == null + ? null + : CupertinoActionSheetAction( + key: cancelData.key, + child: cancelData.child, + isDefaultAction: cancelData.isDefaultAction ?? false, + isDestructiveAction: cancelData.isDestructiveAction ?? false, + onPressed: cancelData.onPressed ?? () => Navigator.pop(context), + mouseCursor: cancelData.mouseCursor, + ), ); } @@ -274,23 +272,26 @@ class PlatformPopupMenu extends StatelessWidget { option.onTap?.call(option); }, icon: data?.icon ?? icon, - itemBuilder: data?.itemBuilder ?? + itemBuilder: + data?.itemBuilder ?? (context) { final items = >[]; for (final option in options) { final data = option.material?.call(context, platform(context)); - items.add(PopupMenuItem( - value: option, - child: data?.child ?? Text(option.label ?? ''), - enabled: data?.enabled ?? true, - height: data?.height ?? kMinInteractiveDimension, - key: data?.key, - mouseCursor: data?.mouseCursor, - onTap: data?.onTap, - padding: data?.padding, - textStyle: data?.textStyle, - labelTextStyle: data?.labelTextStyle, - )); + items.add( + PopupMenuItem( + value: option, + child: data?.child ?? Text(option.label ?? ''), + enabled: data?.enabled ?? true, + height: data?.height ?? kMinInteractiveDimension, + key: data?.key, + mouseCursor: data?.mouseCursor, + onTap: data?.onTap, + padding: data?.padding, + textStyle: data?.textStyle, + labelTextStyle: data?.labelTextStyle, + ), + ); if (data?.withDivider ?? false) { items.add( PopupMenuDivider( diff --git a/lib/src/platform_provider.dart b/lib/src/platform_provider.dart index 3497604..e7e32a5 100644 --- a/lib/src/platform_provider.dart +++ b/lib/src/platform_provider.dart @@ -89,9 +89,7 @@ class _PlatformProviderState extends State { return Theme( data: Theme.of(context).copyWith(platform: platform), - child: Builder( - builder: (context) => widget.builder(context), - ), + child: Builder(builder: (context) => widget.builder(context)), ); } } @@ -158,7 +156,7 @@ class PlatformSettingsData { /// Going forward [PlatformText] will likely be removed when the material3 property on ThemeData is removed and all material widgets will assume material3 style. final bool matchMaterialCaseForPlatformText; - PlatformSettingsData({ + const PlatformSettingsData({ this.iosUsesMaterialWidgets = false, this.iosUseZeroPaddingForAppbarPlatformIcon = false, this.legacyIosUsesMaterialWidgets = false, @@ -168,10 +166,7 @@ class PlatformSettingsData { }); } -enum PlatformStyle { - Material, - Cupertino, -} +enum PlatformStyle { Material, Cupertino } class PlatformStyleData { final PlatformStyle android; diff --git a/lib/src/platform_radio.dart b/lib/src/platform_radio.dart index 836c595..c11845d 100644 --- a/lib/src/platform_radio.dart +++ b/lib/src/platform_radio.dart @@ -13,7 +13,7 @@ import 'platform.dart'; import 'widget_base.dart'; abstract class _BaseData { - _BaseData({ + const _BaseData({ this.widgetKey, this.value, this.groupValue, @@ -25,6 +25,7 @@ abstract class _BaseData { this.autofocus, this.mouseCursor, }); + final Key? widgetKey; final T? value; final T? groupValue; @@ -39,7 +40,7 @@ abstract class _BaseData { } class MaterialRadioData extends _BaseData { - MaterialRadioData({ + const MaterialRadioData({ //Material this.hoverColor, this.overlayColor, @@ -69,7 +70,7 @@ class MaterialRadioData extends _BaseData { } class CupertinoRadioData extends _BaseData { - CupertinoRadioData({ + const CupertinoRadioData({ //Cupertino this.inactiveColor, this.fillColor, diff --git a/lib/src/platform_scaffold.dart b/lib/src/platform_scaffold.dart index 6d333e0..48416b8 100644 --- a/lib/src/platform_scaffold.dart +++ b/lib/src/platform_scaffold.dart @@ -29,11 +29,7 @@ import 'platform_provider.dart'; import 'widget_base.dart'; abstract class _BaseData { - _BaseData({ - this.widgetKey, - this.backgroundColor, - this.body, - }); + const _BaseData({this.widgetKey, this.backgroundColor, this.body}); final Color? backgroundColor; final Widget? body; @@ -41,7 +37,7 @@ abstract class _BaseData { } class MaterialScaffoldData extends _BaseData { - MaterialScaffoldData({ + const MaterialScaffoldData({ super.backgroundColor, super.body, super.widgetKey, @@ -94,7 +90,7 @@ class MaterialScaffoldData extends _BaseData { } class CupertinoPageScaffoldData extends _BaseData { - CupertinoPageScaffoldData({ + const CupertinoPageScaffoldData({ super.backgroundColor, super.body, super.widgetKey, @@ -207,7 +203,8 @@ class PlatformScaffold extends PlatformWidgetBase { tabBar: tabBar!, controller: data?.controller, tabBuilder: (BuildContext context, int index) { - final currentChild = cupertinoTabChildBuilder?.call(context, index) ?? + final currentChild = + cupertinoTabChildBuilder?.call(context, index) ?? data?.body ?? body ?? const SizedBox.shrink(); @@ -246,12 +243,18 @@ class PlatformScaffold extends PlatformWidgetBase { // Ensure that there is Material widget at the root page level // as there can be Material widgets used on ios - return result.withMaterial(useLegacyMaterial && - context.findAncestorWidgetOfExactType() == null); + return result.withMaterial( + useLegacyMaterial && + context.findAncestorWidgetOfExactType() == null, + ); } - Widget iosContentPad(BuildContext context, Widget child, - ObstructingPreferredSizeWidget? navigationBar, CupertinoTabBar? tabBar) { + Widget iosContentPad( + BuildContext context, + Widget child, + ObstructingPreferredSizeWidget? navigationBar, + CupertinoTabBar? tabBar, + ) { final MediaQueryData existingMediaQuery = MediaQuery.of(context); if (!iosContentPadding && !iosContentBottomPadding) { diff --git a/lib/src/platform_scrollbar.dart b/lib/src/platform_scrollbar.dart index 19bff53..4ded537 100644 --- a/lib/src/platform_scrollbar.dart +++ b/lib/src/platform_scrollbar.dart @@ -11,10 +11,10 @@ import 'package:flutter/widgets.dart'; import 'platform.dart'; import 'widget_base.dart'; -const double _kScrollbarMainAxisMargin = 3.0; +const _kScrollbarMainAxisMargin = 3.0; abstract class _BaseData { - _BaseData({ + const _BaseData({ // Common this.widgetKey, this.child, @@ -25,6 +25,7 @@ abstract class _BaseData { this.notificationPredicate, this.scrollbarOrientation, }); + final Key? widgetKey; final Widget? child; final ScrollController? controller; @@ -36,7 +37,7 @@ abstract class _BaseData { } class MaterialScrollbarData extends _BaseData { - MaterialScrollbarData({ + const MaterialScrollbarData({ // Common super.widgetKey, super.child, @@ -57,7 +58,7 @@ class MaterialScrollbarData extends _BaseData { } class CupertinoScrollbarData extends _BaseData { - CupertinoScrollbarData({ + const CupertinoScrollbarData({ // Common super.widgetKey, super.child, @@ -72,9 +73,11 @@ class CupertinoScrollbarData extends _BaseData { this.thicknessWhileDragging, this.radiusWhileDragging, this.mainAxisMargin, - }) : assert(thickness != null && thickness < double.infinity), - assert(thicknessWhileDragging != null && - thicknessWhileDragging < double.infinity); + }) : assert(thickness != null && thickness < double.infinity), + assert( + thicknessWhileDragging != null && + thicknessWhileDragging < double.infinity, + ); final double? thicknessWhileDragging; final Radius? radiusWhileDragging; final double? mainAxisMargin; @@ -150,9 +153,11 @@ class PlatformScrollbar scrollbarOrientation: data?.scrollbarOrientation ?? scrollbarOrientation, //Cupertino only - thicknessWhileDragging: data?.thicknessWhileDragging ?? + thicknessWhileDragging: + data?.thicknessWhileDragging ?? CupertinoScrollbar.defaultThicknessWhileDragging, - radiusWhileDragging: data?.radiusWhileDragging ?? + radiusWhileDragging: + data?.radiusWhileDragging ?? CupertinoScrollbar.defaultRadiusWhileDragging, mainAxisMargin: data?.mainAxisMargin ?? _kScrollbarMainAxisMargin, ); diff --git a/lib/src/platform_search_bar.dart b/lib/src/platform_search_bar.dart index e307a69..cc6a922 100644 --- a/lib/src/platform_search_bar.dart +++ b/lib/src/platform_search_bar.dart @@ -19,7 +19,7 @@ import 'platform.dart'; import 'widget_base.dart'; abstract class _BaseData { - _BaseData({ + const _BaseData({ this.widgetKey, this.controller, this.focusNode, @@ -29,6 +29,7 @@ abstract class _BaseData { this.autofocus, this.enabled, }); + final Key? widgetKey; final FocusNode? focusNode; final TextEditingController? controller; @@ -40,7 +41,7 @@ abstract class _BaseData { } class MaterialSearchBarData extends _BaseData { - MaterialSearchBarData({ + const MaterialSearchBarData({ // Common super.widgetKey, super.controller, @@ -98,7 +99,7 @@ class MaterialSearchBarData extends _BaseData { } class CupertinoSearchBarData extends _BaseData { - CupertinoSearchBarData({ + const CupertinoSearchBarData({ //Common super.widgetKey, super.controller, @@ -136,18 +137,18 @@ class CupertinoSearchBarData extends _BaseData { this.cursorOpacityAnimates, this.cursorRadius, this.cursorWidth, - }) : assert( - !((decoration != null) && (backgroundColor != null)), - 'Cannot provide both a background color and a decoration\n' - 'To provide both, use "decoration: BoxDecoration(color: ' - 'backgroundColor)"', - ), - assert( - !((decoration != null) && (borderRadius != null)), - 'Cannot provide both a border radius and a decoration\n' - 'To provide both, use "decoration: BoxDecoration(borderRadius: ' - 'borderRadius)"', - ); + }) : assert( + !((decoration != null) && (backgroundColor != null)), + 'Cannot provide both a background color and a decoration\n' + 'To provide both, use "decoration: BoxDecoration(color: ' + 'backgroundColor)"', + ), + assert( + !((decoration != null) && (borderRadius != null)), + 'Cannot provide both a border radius and a decoration\n' + 'To provide both, use "decoration: BoxDecoration(borderRadius: ' + 'borderRadius)"', + ); final ValueChanged? onSubmitted; final BoxDecoration? decoration; final BorderRadius? borderRadius; @@ -226,7 +227,8 @@ class PlatformSearchBar EditableTextState editableTextState, ) { return AdaptiveTextSelectionToolbar.editableText( - editableTextState: editableTextState); + editableTextState: editableTextState, + ); } @override @@ -243,16 +245,19 @@ class PlatformSearchBar onTap: data?.onTap ?? onTap, onChanged: data?.onChanged ?? onChanged, - backgroundColor: data?.backgroundColor ?? + backgroundColor: + data?.backgroundColor ?? (backgroundColor != null ? WidgetStateProperty.all(backgroundColor) : null), hintText: data?.hintText ?? hintText, - hintStyle: data?.hintStyle ?? + hintStyle: + data?.hintStyle ?? (hintStyle != null ? WidgetStateProperty.all(hintStyle) : null), - textStyle: data?.textStyle ?? + textStyle: + data?.textStyle ?? (textStyle != null ? WidgetStateProperty.all(textStyle) : null), @@ -306,10 +311,12 @@ class PlatformSearchBar borderRadius: data?.borderRadius, itemColor: data?.itemColor ?? CupertinoColors.secondaryLabel, itemSize: data?.itemSize ?? 20.0, - prefixInsets: data?.prefixInsets ?? + prefixInsets: + data?.prefixInsets ?? const EdgeInsetsDirectional.fromSTEB(6, 0, 0, 3), prefixIcon: data?.prefixIcon ?? const Icon(CupertinoIcons.search), - suffixInsets: data?.suffixInsets ?? + suffixInsets: + data?.suffixInsets ?? const EdgeInsetsDirectional.fromSTEB(0, 0, 5, 2), suffixIcon: data?.suffixIcon ?? const Icon(CupertinoIcons.xmark_circle_fill), diff --git a/lib/src/platform_slider.dart b/lib/src/platform_slider.dart index dba32ff..7566132 100644 --- a/lib/src/platform_slider.dart +++ b/lib/src/platform_slider.dart @@ -13,7 +13,7 @@ import 'platform.dart'; import 'widget_base.dart'; abstract class _BaseData { - _BaseData({ + const _BaseData({ this.widgetKey, this.value, this.onChanged, @@ -39,7 +39,7 @@ abstract class _BaseData { } class MaterialSliderData extends _BaseData { - MaterialSliderData({ + const MaterialSliderData({ super.widgetKey, super.value, super.onChanged, @@ -77,7 +77,7 @@ class MaterialSliderData extends _BaseData { } class CupertinoSliderData extends _BaseData { - CupertinoSliderData({ + const CupertinoSliderData({ super.widgetKey, super.value, super.onChanged, @@ -121,8 +121,8 @@ class PlatformSlider extends PlatformWidgetBase { this.thumbColor, this.material, this.cupertino, - }) : assert(divisions == null || divisions > 0), - assert(value >= min && value <= max); + }) : assert(divisions == null || divisions > 0), + assert(value >= min && value <= max); @override Slider createMaterialWidget(BuildContext context) { diff --git a/lib/src/platform_sliver_app_bar.dart b/lib/src/platform_sliver_app_bar.dart index c587630..0bf41ca 100644 --- a/lib/src/platform_sliver_app_bar.dart +++ b/lib/src/platform_sliver_app_bar.dart @@ -15,7 +15,7 @@ import 'platform.dart'; import 'widget_base.dart'; abstract class _BaseData { - _BaseData({ + const _BaseData({ //Common this.widgetKey, this.leading, @@ -36,7 +36,7 @@ abstract class _BaseData { } class MaterialSliverAppBarData extends _BaseData { - MaterialSliverAppBarData({ + const MaterialSliverAppBarData({ // Common super.widgetKey, super.leading, @@ -77,11 +77,15 @@ class MaterialSliverAppBarData extends _BaseData { this.forceMaterialTransparency = false, this.clipBehavior, this.actionsPadding, - }) : assert(floating || !snap, - 'The "snap" argument only makes sense for floating app bars.'), - assert(stretchTriggerOffset > 0.0), - assert(collapsedHeight == null || collapsedHeight >= toolbarHeight, - 'The "collapsedHeight" argument has to be larger than or equal to [toolbarHeight].'); + }) : assert( + floating || !snap, + 'The "snap" argument only makes sense for floating app bars.', + ), + assert(stretchTriggerOffset > 0.0), + assert( + collapsedHeight == null || collapsedHeight >= toolbarHeight, + 'The "collapsedHeight" argument has to be larger than or equal to [toolbarHeight].', + ); // final Widget? title; final List? actions; @@ -117,7 +121,7 @@ class MaterialSliverAppBarData extends _BaseData { } class CupertinoSliverAppBarData extends _BaseData { - CupertinoSliverAppBarData({ + const CupertinoSliverAppBarData({ //Common super.widgetKey, super.leading, @@ -143,11 +147,11 @@ class CupertinoSliverAppBarData extends _BaseData { this.enableBackgroundFilterBlur, this.heroTag = _defaultHeroTag, }) : assert( - automaticallyImplyTitle == true || title != null, - 'No title has been provided but automaticallyImplyTitle is also ' - 'false. Either provide a title or set automaticallyImplyTitle to ' - 'true.', - ); + automaticallyImplyTitle == true || title != null, + 'No title has been provided but automaticallyImplyTitle is also ' + 'false. Either provide a title or set automaticallyImplyTitle to ' + 'true.', + ); // final Widget? largeTitle; final bool automaticallyImplyTitle; diff --git a/lib/src/platform_switch.dart b/lib/src/platform_switch.dart index 272b0ca..b051f4b 100644 --- a/lib/src/platform_switch.dart +++ b/lib/src/platform_switch.dart @@ -13,7 +13,7 @@ import 'platform.dart'; import 'widget_base.dart'; abstract class _BaseData { - _BaseData({ + const _BaseData({ this.widgetKey, this.value, this.onChanged, @@ -55,7 +55,7 @@ abstract class _BaseData { } class MaterialSwitchData extends _BaseData { - MaterialSwitchData({ + const MaterialSwitchData({ super.widgetKey, super.value, super.onChanged, @@ -98,7 +98,7 @@ class MaterialSwitchData extends _BaseData { } class CupertinoSwitchData extends _BaseData { - CupertinoSwitchData({ + const CupertinoSwitchData({ super.widgetKey, super.value, super.onChanged, @@ -195,7 +195,8 @@ class PlatformSwitch extends PlatformWidgetBase { inactiveThumbImage: data?.inactiveThumbImage ?? inactiveThumbImage, inactiveTrackColor: data?.inactiveTrackColor ?? inactiveTrackColor, materialTapTargetSize: data?.materialTapTargetSize, - dragStartBehavior: data?.dragStartBehavior ?? + dragStartBehavior: + data?.dragStartBehavior ?? dragStartBehavior ?? DragStartBehavior.start, autofocus: data?.autofocus ?? autofocus ?? false, @@ -227,7 +228,8 @@ class PlatformSwitch extends PlatformWidgetBase { key: data?.widgetKey ?? widgetKey, value: data?.value ?? value, onChanged: data?.onChanged ?? onChanged, - dragStartBehavior: data?.dragStartBehavior ?? + dragStartBehavior: + data?.dragStartBehavior ?? dragStartBehavior ?? DragStartBehavior.start, thumbColor: data?.thumbColor, diff --git a/lib/src/platform_tab_scaffold.dart b/lib/src/platform_tab_scaffold.dart index 9a9c8fb..f23b1dd 100644 --- a/lib/src/platform_tab_scaffold.dart +++ b/lib/src/platform_tab_scaffold.dart @@ -30,17 +30,14 @@ import 'platform_provider.dart'; import 'widget_base.dart'; abstract class _BaseData { - _BaseData({ - this.widgetKey, - this.backgroundColor, - }); + const _BaseData({this.widgetKey, this.backgroundColor}); final Color? backgroundColor; final Key? widgetKey; } class MaterialTabScaffoldData extends _BaseData { - MaterialTabScaffoldData({ + const MaterialTabScaffoldData({ super.backgroundColor, super.widgetKey, this.bodyBuilder, @@ -73,7 +70,7 @@ class MaterialTabScaffoldData extends _BaseData { final Widget Function(BuildContext context, int index)? bodyBuilder; final MaterialTabController? controller; final PreferredSizeWidget? Function(BuildContext context, int index)? - appBarBuilder; + appBarBuilder; final Widget? drawer; final Widget? endDrawer; final Widget? floatingActionButton; @@ -99,7 +96,7 @@ class MaterialTabScaffoldData extends _BaseData { } class CupertinoTabViewData { - CupertinoTabViewData({ + const CupertinoTabViewData({ this.defaultTitle, this.navigatorKey, this.navigatorObservers, @@ -117,7 +114,7 @@ class CupertinoTabViewData { } class CupertinoTabScaffoldData extends _BaseData { - CupertinoTabScaffoldData({ + const CupertinoTabScaffoldData({ super.backgroundColor, super.widgetKey, this.items, @@ -137,11 +134,14 @@ class CupertinoTabScaffoldData extends _BaseData { final List? items; final CupertinoTabViewData Function(BuildContext context, int index)? - tabViewDataBuilder; + tabViewDataBuilder; final Widget Function(BuildContext context, int index)? bodyBuilder; final ObstructingPreferredSizeWidget? Function( - BuildContext context, int index)? appBarBuilder; + BuildContext context, + int index, + )? + appBarBuilder; final bool? resizeToAvoidBottomInset; final bool? resizeToAvoidBottomInsetTab; final Color? tabsBackgroundColor; @@ -179,7 +179,7 @@ class PlatformTabScaffold extends PlatformWidgetBase { final List? items; final PlatformAppBar? Function(BuildContext context, int index)? - appBarBuilder; + appBarBuilder; final String? restorationId; final double? navBarHeight; @@ -205,20 +205,20 @@ class PlatformTabScaffold extends PlatformWidgetBase { this.cupertino, this.cupertinoBuilder, this.cupertinoTabs, - }) : assert( - (material != null && materialBuilder == null) || material == null, - ), - assert( - (material == null && materialBuilder != null) || - materialBuilder == null, - ), - assert( - (cupertino != null && cupertinoBuilder == null) || cupertino == null, - ), - assert( - (cupertino == null && cupertinoBuilder != null) || - cupertinoBuilder == null, - ); + }) : assert( + (material != null && materialBuilder == null) || material == null, + ), + assert( + (material == null && materialBuilder != null) || + materialBuilder == null, + ), + assert( + (cupertino != null && cupertinoBuilder == null) || cupertino == null, + ), + assert( + (cupertino == null && cupertinoBuilder != null) || + cupertinoBuilder == null, + ); @override Widget createMaterialWidget(BuildContext context) { @@ -232,12 +232,17 @@ class PlatformTabScaffold extends PlatformWidgetBase { return AnimatedBuilder( animation: controller!, - builder: (context, _) => _buildMaterial( - context, - materialBuilder?.call(context, platform(context), controller.index) ?? - data, - controller, - ), + builder: + (context, _) => _buildMaterial( + context, + materialBuilder?.call( + context, + platform(context), + controller.index, + ) ?? + data, + controller, + ), ); } @@ -260,10 +265,12 @@ class PlatformTabScaffold extends PlatformWidgetBase { ); final tabBar = platformNavBar.createMaterialWidget(context); - final child = data?.bodyBuilder?.call(context, controller.index) ?? + final child = + data?.bodyBuilder?.call(context, controller.index) ?? bodyBuilder?.call(context, controller.index); - final appBar = data?.appBarBuilder?.call(context, controller.index) ?? + final appBar = + data?.appBarBuilder?.call(context, controller.index) ?? appBarBuilder ?.call(context, controller.index) ?.createMaterialWidget(context); @@ -311,19 +318,20 @@ class PlatformTabScaffold extends PlatformWidgetBase { PlatformTabScaffold(tabController: controller) '''); if (cupertinoBuilder == null) { - return _buildCupertino( - context, - data, - controller!, - ); + return _buildCupertino(context, data, controller!); } else { return AnimatedBuilder( animation: controller!, - builder: (context, _) => _buildCupertino( - context, - cupertinoBuilder?.call(context, platform(context), controller.index), - controller, - ), + builder: + (context, _) => _buildCupertino( + context, + cupertinoBuilder?.call( + context, + platform(context), + controller.index, + ), + controller, + ), ); } } @@ -365,7 +373,8 @@ class PlatformTabScaffold extends PlatformWidgetBase { data?.tabViewDataBuilder?.call(context, index).defaultTitle, navigatorKey: data?.tabViewDataBuilder?.call(context, index).navigatorKey, - navigatorObservers: data?.tabViewDataBuilder + navigatorObservers: + data?.tabViewDataBuilder ?.call(context, index) .navigatorObservers ?? const [], @@ -400,8 +409,10 @@ class PlatformTabScaffold extends PlatformWidgetBase { // Ensure that there is Material widget at the root page level // as there can be Material widgets used on ios - return result.withMaterial(useLegacyMaterial && - context.findAncestorWidgetOfExactType() == null); + return result.withMaterial( + useLegacyMaterial && + context.findAncestorWidgetOfExactType() == null, + ); } CupertinoPageScaffold _buildCupertinoPageScaffold( @@ -411,10 +422,12 @@ class PlatformTabScaffold extends PlatformWidgetBase { CupertinoTabBar tabBar, bool useMaterial, ) { - final appBar = data?.appBarBuilder?.call(context, index) ?? + final appBar = + data?.appBarBuilder?.call(context, index) ?? appBarBuilder?.call(context, index)?.createCupertinoWidget(context); - final child = data?.bodyBuilder?.call(context, index) ?? + final child = + data?.bodyBuilder?.call(context, index) ?? bodyBuilder?.call(context, index); assert(child != null); @@ -469,28 +482,25 @@ class PlatformTabScaffold extends PlatformWidgetBase { } class MaterialTabControllerData { - MaterialTabControllerData({ - this.initialIndex, - }); + MaterialTabControllerData({this.initialIndex}); final int? initialIndex; } class CupertinoTabControllerData { - CupertinoTabControllerData({ - this.initialIndex, - }); + CupertinoTabControllerData({this.initialIndex}); final int? initialIndex; } class MaterialTabController extends ChangeNotifier { MaterialTabController({int initialIndex = 0}) - : _index = initialIndex, - assert(initialIndex >= 0); + : _index = initialIndex, + assert(initialIndex >= 0); int get index => _index; int _index; + set index(int value) { assert(value >= 0); if (_index == value) { @@ -511,12 +521,9 @@ class PlatformTabController extends ChangeNotifier { final int _initialIndex; - PlatformTabController({ - int initialIndex = 0, - this.android, - this.ios, - }) : _initialIndex = initialIndex, - assert(initialIndex >= 0); + PlatformTabController({int initialIndex = 0, this.android, this.ios}) + : _initialIndex = initialIndex, + assert(initialIndex >= 0); CupertinoTabController? _cupertino(BuildContext context) { _init(context); @@ -554,9 +561,8 @@ class PlatformTabController extends ChangeNotifier { _cupertinoController?.dispose(); _cupertinoController = null; } - _materialController = MaterialTabController( - initialIndex: useIndex, - )..addListener(_listener); + _materialController = MaterialTabController(initialIndex: useIndex) + ..addListener(_listener); } } if (isCupertino(context)) { @@ -570,9 +576,8 @@ class PlatformTabController extends ChangeNotifier { _materialController = null; } - _cupertinoController = CupertinoTabController( - initialIndex: useIndex, - )..addListener(_listener); + _cupertinoController = CupertinoTabController(initialIndex: useIndex) + ..addListener(_listener); } } } diff --git a/lib/src/platform_text.dart b/lib/src/platform_text.dart index 2ee1b8e..43d8161 100644 --- a/lib/src/platform_text.dart +++ b/lib/src/platform_text.dart @@ -19,7 +19,8 @@ String formatData(BuildContext context, String data) { final matchMaterialCaseForPlatformText = providerState?.settings.matchMaterialCaseForPlatformText ?? true; - final m3 = PlatformTheme.of(context)?.isMaterial3 ?? + final m3 = + PlatformTheme.of(context)?.isMaterial3 ?? Theme.of(context).useMaterial3; // If it material3 and we want to match the casing as defined for material3 then do not return ALL CAPS @@ -32,10 +33,8 @@ String formatData(BuildContext context, String data) { return data; } -typedef _TextBuilder = Text Function(BuildContext context); - class PlatformText extends StatelessWidget { - final _TextBuilder _textBuilder; + final Text Function(BuildContext) _textBuilder; const PlatformText._(Key? key, this._textBuilder) : super(key: key); @@ -62,25 +61,26 @@ class PlatformText extends StatelessWidget { Color? selectionColor, }) { return PlatformText._( - key, - (BuildContext context) => Text( - formatData(context, data), - key: key, - style: style, - textAlign: textAlign, - textDirection: textDirection, - softWrap: softWrap, - overflow: overflow, - textScaler: textScaler, - maxLines: maxLines, - locale: locale, - semanticsLabel: semanticsLabel, - strutStyle: strutStyle, - textWidthBasis: textWidthBasis, - textHeightBehavior: textHeightBehavior, - selectionColor: selectionColor, - //deprecated textScaleFactor: textScaleFactor, - )); + key, + (BuildContext context) => Text( + formatData(context, data), + key: key, + style: style, + textAlign: textAlign, + textDirection: textDirection, + softWrap: softWrap, + overflow: overflow, + textScaler: textScaler, + maxLines: maxLines, + locale: locale, + semanticsLabel: semanticsLabel, + strutStyle: strutStyle, + textWidthBasis: textWidthBasis, + textHeightBehavior: textHeightBehavior, + selectionColor: selectionColor, + //deprecated textScaleFactor: textScaleFactor, + ), + ); } @override diff --git a/lib/src/platform_text_button.dart b/lib/src/platform_text_button.dart index a7f0b47..0b8192b 100644 --- a/lib/src/platform_text_button.dart +++ b/lib/src/platform_text_button.dart @@ -13,14 +13,10 @@ import 'package:flutter/widgets.dart'; import 'platform.dart'; import 'widget_base.dart'; -const double _kMinInteractiveDimensionCupertino = 44.0; +const _kMinInteractiveDimensionCupertino = 44.0; abstract class _BaseData { - _BaseData({ - this.widgetKey, - this.child, - this.onPressed, - }); + const _BaseData({this.widgetKey, this.child, this.onPressed}); final Key? widgetKey; final Widget? child; @@ -28,7 +24,7 @@ abstract class _BaseData { } class MaterialTextButtonData extends _BaseData { - MaterialTextButtonData({ + const MaterialTextButtonData({ super.widgetKey, super.child, super.onPressed, @@ -59,7 +55,7 @@ class MaterialTextButtonData extends _BaseData { } class CupertinoTextButtonData extends _BaseData { - CupertinoTextButtonData({ + const CupertinoTextButtonData({ super.widgetKey, super.child, super.onPressed, @@ -138,7 +134,8 @@ class PlatformTextButton extends PlatformWidgetBase { autofocus: data?.autofocus ?? false, clipBehavior: data?.clipBehavior ?? Clip.none, focusNode: data?.focusNode, - style: data?.style ?? + style: + data?.style ?? TextButton.styleFrom( backgroundColor: color, padding: padding, @@ -159,7 +156,8 @@ class PlatformTextButton extends PlatformWidgetBase { autofocus: data?.autofocus ?? false, clipBehavior: data?.clipBehavior ?? Clip.none, focusNode: data?.focusNode, - style: data?.style ?? + style: + data?.style ?? TextButton.styleFrom( backgroundColor: color, padding: padding, @@ -181,8 +179,8 @@ class PlatformTextButton extends PlatformWidgetBase { key: data?.widgetKey ?? widgetKey, child: data?.child ?? child!, onPressed: data?.onPressed ?? onPressed, - borderRadius: data?.borderRadius ?? - const BorderRadius.all(Radius.circular(8.0)), + borderRadius: + data?.borderRadius ?? const BorderRadius.all(Radius.circular(8.0)), minSize: data?.minSize ?? _kMinInteractiveDimensionCupertino, padding: data?.padding ?? padding, pressedOpacity: data?.pressedOpacity ?? 0.4, @@ -209,8 +207,8 @@ class PlatformTextButton extends PlatformWidgetBase { key: data?.widgetKey ?? widgetKey, child: data?.child ?? child!, onPressed: data?.onPressed ?? onPressed, - borderRadius: data?.borderRadius ?? - const BorderRadius.all(Radius.circular(8.0)), + borderRadius: + data?.borderRadius ?? const BorderRadius.all(Radius.circular(8.0)), minSize: data?.minSize ?? _kMinInteractiveDimensionCupertino, padding: data?.padding ?? padding, pressedOpacity: data?.pressedOpacity ?? 0.4, diff --git a/lib/src/platform_text_field.dart b/lib/src/platform_text_field.dart index e141039..206f03d 100644 --- a/lib/src/platform_text_field.dart +++ b/lib/src/platform_text_field.dart @@ -26,33 +26,32 @@ import 'package:flutter/widgets.dart'; import 'platform.dart'; import 'widget_base.dart'; -const BorderSide _kDefaultRoundedBorderSide = BorderSide( +const _kDefaultRoundedBorderSide = BorderSide( color: CupertinoDynamicColor.withBrightness( color: Color(0x33000000), darkColor: Color(0x33FFFFFF), ), - style: BorderStyle.solid, - width: 0.0, + width: 0, ); -const Border _kDefaultRoundedBorder = Border( +const _kDefaultRoundedBorder = Border( top: _kDefaultRoundedBorderSide, bottom: _kDefaultRoundedBorderSide, left: _kDefaultRoundedBorderSide, right: _kDefaultRoundedBorderSide, ); -const BoxDecoration kDefaultRoundedBorderDecoration = BoxDecoration( +const _kDefaultRoundedBorderDecoration = BoxDecoration( color: CupertinoDynamicColor.withBrightness( color: CupertinoColors.white, darkColor: CupertinoColors.black, ), border: _kDefaultRoundedBorder, - borderRadius: BorderRadius.all(Radius.circular(5.0)), + borderRadius: BorderRadius.all(Radius.circular(5)), ); abstract class _BaseData { - _BaseData({ + const _BaseData({ this.widgetKey, this.controller, this.focusNode, @@ -176,7 +175,7 @@ abstract class _BaseData { } class MaterialTextFieldData extends _BaseData { - MaterialTextFieldData({ + const MaterialTextFieldData({ super.widgetKey, super.controller, super.focusNode, @@ -260,7 +259,7 @@ class MaterialTextFieldData extends _BaseData { } class CupertinoTextFieldData extends _BaseData { - CupertinoTextFieldData({ + const CupertinoTextFieldData({ super.widgetKey, super.controller, super.focusNode, @@ -414,14 +413,18 @@ class PlatformTextField final bool? stylusHandwritingEnabled; static Widget _defaultMaterialContextMenuBuilder( - BuildContext context, EditableTextState editableTextState) { + BuildContext context, + EditableTextState editableTextState, + ) { return AdaptiveTextSelectionToolbar.editableText( editableTextState: editableTextState, ); } static Widget _defaultCupertinoContextMenuBuilder( - BuildContext context, EditableTextState editableTextState) { + BuildContext context, + EditableTextState editableTextState, + ) { return CupertinoAdaptiveTextSelectionToolbar.editableText( editableTextState: editableTextState, ); @@ -488,20 +491,22 @@ class PlatformTextField this.stylusHandwritingEnabled, this.material, this.cupertino, - }) : keyboardType = keyboardType ?? - (maxLines == 1 ? TextInputType.text : TextInputType.multiline); + }) : keyboardType = + keyboardType ?? + (maxLines == 1 ? TextInputType.text : TextInputType.multiline); @override TextField createMaterialWidget(BuildContext context) { final data = material?.call(context, platform(context)); final hintText = this.hintText; - final decoration = hintText == null - ? (data?.decoration ?? const InputDecoration()) - : _inputDecorationWithHint( - hintText, - data?.decoration ?? const InputDecoration(), - ); + final decoration = + hintText == null + ? (data?.decoration ?? const InputDecoration()) + : _inputDecorationWithHint( + hintText, + data?.decoration ?? const InputDecoration(), + ); return TextField( key: data?.widgetKey ?? widgetKey, @@ -526,21 +531,24 @@ class PlatformTextField data?.scrollPadding ?? scrollPadding ?? const EdgeInsets.all(20), style: data?.style ?? style, textAlign: data?.textAlign ?? textAlign ?? TextAlign.start, - textCapitalization: data?.textCapitalization ?? + textCapitalization: + data?.textCapitalization ?? textCapitalization ?? TextCapitalization.none, textInputAction: data?.textInputAction ?? textInputAction, decoration: decoration, textDirection: data?.textDirection, buildCounter: data?.buildCounter, - dragStartBehavior: data?.dragStartBehavior ?? + dragStartBehavior: + data?.dragStartBehavior ?? dragStartBehavior ?? DragStartBehavior.start, expands: data?.expands ?? expands ?? false, minLines: data?.minLines ?? minLines, scrollPhysics: data?.scrollPhysics ?? scrollPhysics, strutStyle: data?.strutStyle ?? strutStyle, - enableInteractiveSelection: data?.enableInteractiveSelection ?? + enableInteractiveSelection: + data?.enableInteractiveSelection ?? enableInteractiveSelection ?? true, scrollController: data?.scrollController ?? scrollController, @@ -551,10 +559,12 @@ class PlatformTextField enableSuggestions: data?.enableSuggestions ?? true, smartQuotesType: data?.smartQuotesType ?? smartQuotesType, smartDashesType: data?.smartDashesType ?? smartDashesType, - selectionHeightStyle: data?.selectionHeightStyle ?? + selectionHeightStyle: + data?.selectionHeightStyle ?? selectionHeightStyle ?? ui.BoxHeightStyle.tight, - selectionWidthStyle: data?.selectionWidthStyle ?? + selectionWidthStyle: + data?.selectionWidthStyle ?? selectionWidthStyle ?? ui.BoxWidthStyle.tight, obscuringCharacter: data?.obscuringCharacter ?? obscuringCharacter ?? '•', @@ -565,11 +575,13 @@ class PlatformTextField restorationId: data?.restorationId ?? restorationId, maxLengthEnforcement: data?.maxLengthEnforcement ?? maxLengthEnforcement, selectionControls: data?.selectionControls ?? selectionControls, - enableIMEPersonalizedLearning: data?.enableIMEPersonalizedLearning ?? + enableIMEPersonalizedLearning: + data?.enableIMEPersonalizedLearning ?? enableIMEPersonalizedLearning ?? true, clipBehavior: data?.clipBehavior ?? clipBehavior, - contextMenuBuilder: data?.contextMenuBuilder ?? + contextMenuBuilder: + data?.contextMenuBuilder ?? contextMenuBuilder ?? _defaultMaterialContextMenuBuilder, onTapOutside: data?.onTapOutside ?? onTapOutside, @@ -589,7 +601,8 @@ class PlatformTextField ignorePointers: data?.ignorePointers, groupId: data?.groupId ?? groupId ?? EditableText, onTapUpOutside: data?.onTapUpOutside, - stylusHandwritingEnabled: data?.stylusHandwritingEnabled ?? + stylusHandwritingEnabled: + data?.stylusHandwritingEnabled ?? stylusHandwritingEnabled ?? EditableText.defaultStylusHandwritingEnabled, // toolbarOptions: Deprecated @@ -609,7 +622,7 @@ class PlatformTextField cursorColor: data?.cursorColor ?? cursorColor ?? CupertinoColors.activeBlue, cursorRadius: - data?.cursorRadius ?? cursorRadius ?? const Radius.circular(2.0), + data?.cursorRadius ?? cursorRadius ?? const Radius.circular(2), cursorWidth: data?.cursorWidth ?? cursorWidth ?? 2.0, enabled: data?.enabled ?? enabled, focusNode: data?.focusNode ?? focusNode, @@ -623,21 +636,24 @@ class PlatformTextField onEditingComplete: data?.onEditingComplete ?? onEditingComplete, onSubmitted: data?.onSubmitted ?? onSubmitted, scrollPadding: - data?.scrollPadding ?? scrollPadding ?? const EdgeInsets.all(20.0), + data?.scrollPadding ?? scrollPadding ?? const EdgeInsets.all(20), style: data?.style ?? style, textAlign: data?.textAlign ?? textAlign ?? TextAlign.start, - textCapitalization: data?.textCapitalization ?? + textCapitalization: + data?.textCapitalization ?? textCapitalization ?? TextCapitalization.none, textInputAction: data?.textInputAction ?? textInputAction, - decoration: data?.decoration ?? + decoration: + data?.decoration ?? (makeCupertinoDecorationNull ? null - : kDefaultRoundedBorderDecoration), + : _kDefaultRoundedBorderDecoration), clearButtonMode: data?.clearButtonMode ?? OverlayVisibilityMode.never, - padding: data?.padding ?? const EdgeInsets.all(6.0), + padding: data?.padding ?? const EdgeInsets.all(6), placeholder: data?.placeholder ?? hintText, - placeholderStyle: data?.placeholderStyle ?? + placeholderStyle: + data?.placeholderStyle ?? const TextStyle( fontWeight: FontWeight.w400, color: CupertinoColors.placeholderText, @@ -646,14 +662,16 @@ class PlatformTextField prefixMode: data?.prefixMode ?? OverlayVisibilityMode.always, suffix: data?.suffix, suffixMode: data?.suffixMode ?? OverlayVisibilityMode.always, - dragStartBehavior: data?.dragStartBehavior ?? + dragStartBehavior: + data?.dragStartBehavior ?? dragStartBehavior ?? DragStartBehavior.start, expands: data?.expands ?? expands ?? false, minLines: data?.minLines ?? minLines, scrollPhysics: data?.scrollPhysics ?? scrollPhysics, strutStyle: data?.strutStyle ?? strutStyle, - enableInteractiveSelection: data?.enableInteractiveSelection ?? + enableInteractiveSelection: + data?.enableInteractiveSelection ?? enableInteractiveSelection ?? true, scrollController: data?.scrollController ?? scrollController, @@ -664,10 +682,12 @@ class PlatformTextField enableSuggestions: data?.enableSuggestions ?? true, smartQuotesType: data?.smartQuotesType ?? smartQuotesType, smartDashesType: data?.smartDashesType ?? smartDashesType, - selectionHeightStyle: data?.selectionHeightStyle ?? + selectionHeightStyle: + data?.selectionHeightStyle ?? selectionHeightStyle ?? ui.BoxHeightStyle.tight, - selectionWidthStyle: data?.selectionWidthStyle ?? + selectionWidthStyle: + data?.selectionWidthStyle ?? selectionWidthStyle ?? ui.BoxWidthStyle.tight, obscuringCharacter: data?.obscuringCharacter ?? obscuringCharacter ?? '•', @@ -676,13 +696,15 @@ class PlatformTextField restorationId: data?.restorationId ?? restorationId, maxLengthEnforcement: data?.maxLengthEnforcement ?? maxLengthEnforcement, selectionControls: data?.selectionControls ?? selectionControls, - enableIMEPersonalizedLearning: data?.enableIMEPersonalizedLearning ?? + enableIMEPersonalizedLearning: + data?.enableIMEPersonalizedLearning ?? enableIMEPersonalizedLearning ?? true, textDirection: data?.textDirection, clipBehavior: data?.clipBehavior ?? clipBehavior, - contextMenuBuilder: data?.contextMenuBuilder ?? + contextMenuBuilder: + data?.contextMenuBuilder ?? contextMenuBuilder ?? _defaultCupertinoContextMenuBuilder, onTapOutside: data?.onTapOutside ?? onTapOutside, @@ -699,7 +721,8 @@ class PlatformTextField crossAxisAlignment: data?.crossAxisAlignment ?? CrossAxisAlignment.center, groupId: data?.groupId ?? groupId ?? EditableText, onTapUpOutside: data?.onTapUpOutside, - stylusHandwritingEnabled: data?.stylusHandwritingEnabled ?? + stylusHandwritingEnabled: + data?.stylusHandwritingEnabled ?? stylusHandwritingEnabled ?? EditableText.defaultStylusHandwritingEnabled, // toolbarOptions: Deprecated diff --git a/lib/src/platform_text_form_field.dart b/lib/src/platform_text_form_field.dart index 9153a29..e638a68 100644 --- a/lib/src/platform_text_form_field.dart +++ b/lib/src/platform_text_form_field.dart @@ -19,7 +19,7 @@ import 'platform.dart'; import 'widget_base.dart'; abstract class _BaseData { - _BaseData({ + const _BaseData({ this.widgetKey, this.controller, this.initialValue, @@ -148,7 +148,7 @@ class MaterialTextFormFieldData extends _BaseData { final TapRegionUpCallback? onTapUpOutside; final bool? stylusHandwritingEnabled; - MaterialTextFormFieldData({ + const MaterialTextFormFieldData({ super.widgetKey, super.controller, super.initialValue, @@ -231,7 +231,7 @@ class CupertinoTextFormFieldData extends _BaseData { final String? placeholder; final TextStyle? placeholderStyle; - CupertinoTextFormFieldData({ + const CupertinoTextFormFieldData({ super.widgetKey, super.controller, super.initialValue, @@ -341,14 +341,18 @@ class PlatformTextFormField final PlatformBuilder? cupertino; static Widget _defaultMaterialContextMenuBuilder( - BuildContext context, EditableTextState editableTextState) { + BuildContext context, + EditableTextState editableTextState, + ) { return AdaptiveTextSelectionToolbar.editableText( editableTextState: editableTextState, ); } static Widget _defaultCupertinoContextMenuBuilder( - BuildContext context, EditableTextState editableTextState) { + BuildContext context, + EditableTextState editableTextState, + ) { return CupertinoAdaptiveTextSelectionToolbar.editableText( editableTextState: editableTextState, ); @@ -404,20 +408,22 @@ class PlatformTextFormField this.hintText, this.material, this.cupertino, - }) : keyboardType = keyboardType ?? - (maxLines == 1 ? TextInputType.text : TextInputType.multiline); + }) : keyboardType = + keyboardType ?? + (maxLines == 1 ? TextInputType.text : TextInputType.multiline); @override TextFormField createMaterialWidget(BuildContext context) { final data = material?.call(context, platform(context)); final hintText = this.hintText; - final decoration = hintText == null - ? (data?.decoration ?? const InputDecoration()) - : _inputDecorationWithHint( - hintText, - data?.decoration ?? const InputDecoration(), - ); + final decoration = + hintText == null + ? (data?.decoration ?? const InputDecoration()) + : _inputDecorationWithHint( + hintText, + data?.decoration ?? const InputDecoration(), + ); return TextFormField( key: data?.widgetKey ?? widgetKey, @@ -426,7 +432,8 @@ class PlatformTextFormField focusNode: data?.focusNode ?? focusNode, decoration: decoration, keyboardType: data?.keyboardType ?? keyboardType, - textCapitalization: data?.textCapitalization ?? + textCapitalization: + data?.textCapitalization ?? textCapitalization ?? TextCapitalization.none, textInputAction: data?.textInputAction ?? textInputAction, @@ -461,7 +468,8 @@ class PlatformTextFormField keyboardAppearance: data?.keyboardAppearance ?? keyboardAppearance, scrollPadding: data?.scrollPadding ?? scrollPadding ?? const EdgeInsets.all(20), - enableInteractiveSelection: data?.enableInteractiveSelection ?? + enableInteractiveSelection: + data?.enableInteractiveSelection ?? enableInteractiveSelection ?? true, selectionControls: data?.selectionControls ?? selectionControls, @@ -477,7 +485,8 @@ class PlatformTextFormField data?.enableIMEPersonalizedLearning ?? true, restorationId: data?.restorationId ?? restorationId, mouseCursor: data?.mouseCursor, - contextMenuBuilder: data?.contextMenuBuilder ?? + contextMenuBuilder: + data?.contextMenuBuilder ?? contextMenuBuilder ?? _defaultMaterialContextMenuBuilder, onTapOutside: data?.onTapOutside, @@ -501,7 +510,8 @@ class PlatformTextFormField ignorePointers: data?.ignorePointers, groupId: data?.groupId ?? EditableText, onTapUpOutside: data?.onTapUpOutside, - stylusHandwritingEnabled: data?.stylusHandwritingEnabled ?? + stylusHandwritingEnabled: + data?.stylusHandwritingEnabled ?? EditableText.defaultStylusHandwritingEnabled, // toolbarOptions: , Deprecated // scribbleEnabled: deprecated @@ -519,7 +529,8 @@ class PlatformTextFormField focusNode: data?.focusNode ?? focusNode, decoration: data?.decoration, keyboardType: data?.keyboardType ?? keyboardType, - textCapitalization: data?.textCapitalization ?? + textCapitalization: + data?.textCapitalization ?? textCapitalization ?? TextCapitalization.none, textInputAction: data?.textInputAction ?? textInputAction, @@ -554,25 +565,29 @@ class PlatformTextFormField keyboardAppearance: data?.keyboardAppearance ?? keyboardAppearance, scrollPadding: data?.scrollPadding ?? scrollPadding ?? const EdgeInsets.all(20), - enableInteractiveSelection: data?.enableInteractiveSelection ?? + enableInteractiveSelection: + data?.enableInteractiveSelection ?? enableInteractiveSelection ?? true, selectionControls: data?.selectionControls ?? selectionControls, scrollPhysics: data?.scrollPhysics ?? scrollPhysics, autofillHints: data?.autofillHints ?? autofillHints, - autovalidateMode: data?.autovalidateMode ?? + autovalidateMode: + data?.autovalidateMode ?? autovalidateMode ?? AutovalidateMode.disabled, prefix: data?.prefix, padding: data?.padding ?? const EdgeInsets.all(6.0), placeholder: data?.placeholder ?? hintText, - placeholderStyle: data?.placeholderStyle ?? + placeholderStyle: + data?.placeholderStyle ?? const TextStyle( fontWeight: FontWeight.w400, color: CupertinoColors.placeholderText, ), textDirection: data?.textDirection, - contextMenuBuilder: data?.contextMenuBuilder ?? + contextMenuBuilder: + data?.contextMenuBuilder ?? contextMenuBuilder ?? _defaultCupertinoContextMenuBuilder, restorationId: data?.restorationId ?? restorationId, diff --git a/lib/src/platform_theme.dart b/lib/src/platform_theme.dart index d4b82c2..aa6d5cb 100644 --- a/lib/src/platform_theme.dart +++ b/lib/src/platform_theme.dart @@ -80,7 +80,7 @@ class _PlatformThemeState extends State _init(); } - bool _matchCupertinoSystemChromeBrightness = true; + var _matchCupertinoSystemChromeBrightness = true; ThemeData? _materialLightTheme; ThemeData? _materialDarkTheme; @@ -88,11 +88,13 @@ class _PlatformThemeState extends State CupertinoThemeData? _cupertinoDarkTheme; ThemeMode? _themeMode; + ThemeMode? get themeMode => _themeMode; + set themeMode(ThemeMode? mode) => setState(() { - _themeMode = mode; - widget.onThemeModeChanged?.call(mode); - }); + _themeMode = mode; + widget.onThemeModeChanged?.call(mode); + }); bool get isDark { final platformBrightness = @@ -103,29 +105,32 @@ class _PlatformThemeState extends State } @Deprecated( - 'Switching to and from Material 2 and 3 is deprecated has no effect and wil be removed in the future.') + 'Switching to and from Material 2 and 3 is deprecated has no effect and wil be removed in the future.', + ) void changeToMaterial3({bool applyToBothDarkAndLightTheme = false}) => _setMaterialThemeType( - applyToBothDarkAndLightTheme: applyToBothDarkAndLightTheme); + applyToBothDarkAndLightTheme: applyToBothDarkAndLightTheme, + ); @Deprecated( - 'Switching to and from Material 2 and 3 is deprecated has no effect and wil be removed in the future.') + 'Switching to and from Material 2 and 3 is deprecated has no effect and wil be removed in the future.', + ) void changeToMaterial2({bool applyToBothDarkAndLightTheme = false}) => _setMaterialThemeType( - applyToBothDarkAndLightTheme: applyToBothDarkAndLightTheme); + applyToBothDarkAndLightTheme: applyToBothDarkAndLightTheme, + ); void resetMaterial({bool applyToBothDarkAndLightTheme = false}) { _setMaterialThemeType( - applyToBothDarkAndLightTheme: applyToBothDarkAndLightTheme); + applyToBothDarkAndLightTheme: applyToBothDarkAndLightTheme, + ); } bool get isMaterial3 => (isDark ? _materialDarkTheme : _materialLightTheme)?.useMaterial3 ?? false; - void _setMaterialThemeType({ - bool applyToBothDarkAndLightTheme = false, - }) { + void _setMaterialThemeType({bool applyToBothDarkAndLightTheme = false}) { setState(() { if (applyToBothDarkAndLightTheme) { _materialDarkTheme = _materialDarkTheme; @@ -151,50 +156,59 @@ class _PlatformThemeState extends State final platform = PlatformProvider.of(context)?.platform; final mDarkTheme = _materialDarkTheme ?? _materialLightTheme; return Theme( - data: (isDark + data: + (isDark ? mDarkTheme?.copyWith(platform: platform) : _materialLightTheme?.copyWith(platform: platform)) ?? Theme.of(context), - child: Builder( - builder: (context) => widget.builder(context), - ), + child: Builder(builder: (context) => widget.builder(context)), ); } } class PlatformThemeState { - PlatformThemeState._(this._parent); + const PlatformThemeState._(this._parent); final _PlatformThemeState _parent; ThemeMode? get themeMode => _parent.themeMode; + set themeMode(ThemeMode? themeMode) => _parent.themeMode = themeMode; bool get isDark => _parent.isDark; + bool get isMaterial3 => _parent.isMaterial3; CupertinoThemeData? get cupertinoLightTheme => _parent._cupertinoLightTheme; + CupertinoThemeData? get cupertinoDarkTheme => _parent._cupertinoDarkTheme; ThemeData? get materialLightTheme => _parent._materialLightTheme; + ThemeData? get materialDarkTheme => _parent._materialDarkTheme; @Deprecated( - 'Switching to and from Material 2 and 3 is deprecated has no effect and wil be removed in the future.') + 'Switching to and from Material 2 and 3 is deprecated has no effect and wil be removed in the future.', + ) void changeToMaterial3({bool applyToBothDarkAndLightTheme = false}) => _parent.changeToMaterial3( - applyToBothDarkAndLightTheme: applyToBothDarkAndLightTheme); + applyToBothDarkAndLightTheme: applyToBothDarkAndLightTheme, + ); @Deprecated( - 'Switching to and from Material 2 and 3 is deprecated has no effect and wil be removed in the future.') + 'Switching to and from Material 2 and 3 is deprecated has no effect and wil be removed in the future.', + ) void changeToMaterial2({bool applyToBothDarkAndLightTheme = false}) => _parent.changeToMaterial2( - applyToBothDarkAndLightTheme: applyToBothDarkAndLightTheme); + applyToBothDarkAndLightTheme: applyToBothDarkAndLightTheme, + ); @Deprecated( - 'Switching to and from Material 2 and 3 is deprecated has no effect and wil be removed in the future.') - void resetToMaterialDefaultVersion( - {bool applyToBothDarkAndLightTheme = false}) => - _parent.resetMaterial( - applyToBothDarkAndLightTheme: applyToBothDarkAndLightTheme); + 'Switching to and from Material 2 and 3 is deprecated has no effect and wil be removed in the future.', + ) + void resetToMaterialDefaultVersion({ + bool applyToBothDarkAndLightTheme = false, + }) => _parent.resetMaterial( + applyToBothDarkAndLightTheme: applyToBothDarkAndLightTheme, + ); } From 83b4d1e293bb4e65a28095afc595925b022b2039 Mon Sep 17 00:00:00 2001 From: M-Ahal Date: Tue, 1 Apr 2025 09:51:29 +0200 Subject: [PATCH 2/7] Remove unimplemented todo file --- lib/src/platform_simple_dialog.dart | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 lib/src/platform_simple_dialog.dart diff --git a/lib/src/platform_simple_dialog.dart b/lib/src/platform_simple_dialog.dart deleted file mode 100644 index 232d5bf..0000000 --- a/lib/src/platform_simple_dialog.dart +++ /dev/null @@ -1,7 +0,0 @@ -/* - * flutter_platform_widgets - * Copyright (c) 2018 Lance Johnstone. All rights reserved. - * See LICENSE for distribution and usage details. - */ - -//TODO From 2104cbfbae0c09c8e49ead96be30f23433ed2f38 Mon Sep 17 00:00:00 2001 From: M-Ahal Date: Tue, 1 Apr 2025 09:53:04 +0200 Subject: [PATCH 3/7] used const constructors in examples --- example/lib/cupertino_date_picker.dart | 4 ++-- example/lib/main.dart | 2 +- example/lib/platform_page.dart.dart | 22 +++++++++---------- example/lib/tab_pages/originalTabbedPage.dart | 2 +- lib/src/platform_provider.dart | 2 +- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/example/lib/cupertino_date_picker.dart b/example/lib/cupertino_date_picker.dart index c8acf14..b7dbded 100644 --- a/example/lib/cupertino_date_picker.dart +++ b/example/lib/cupertino_date_picker.dart @@ -69,8 +69,8 @@ void _showResultDialog(BuildContext context, String text) { content: Text('$text content'), actions: [ PlatformDialogAction( - material: (_, __) => MaterialDialogActionData(), - cupertino: (_, __) => CupertinoDialogActionData(), + material: (_, __) => const MaterialDialogActionData(), + cupertino: (_, __) => const CupertinoDialogActionData(), child: PlatformText('Cancel'), onPressed: () => Navigator.pop(context), ), diff --git a/example/lib/main.dart b/example/lib/main.dart index dbdb075..7ec87fd 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -47,7 +47,7 @@ class _MyAppState extends State { MaterialBasedCupertinoThemeData(materialTheme: materialLightTheme); return PlatformProvider( - settings: PlatformSettingsData( + settings: const PlatformSettingsData( iosUsesMaterialWidgets: true, iosUseZeroPaddingForAppbarPlatformIcon: true, ), diff --git a/example/lib/platform_page.dart.dart b/example/lib/platform_page.dart.dart index d55e084..5394072 100644 --- a/example/lib/platform_page.dart.dart +++ b/example/lib/platform_page.dart.dart @@ -158,10 +158,10 @@ class PlatformPage extends StatelessWidget { child: Text(platform.text), onPressed: () => debugPrint('${platform.text} PlatformButton'), padding: const EdgeInsets.all(8), - material: (_, __) => MaterialElevatedButtonData( - icon: const Icon(Icons.home), + material: (_, __) => const MaterialElevatedButtonData( + icon: Icon(Icons.home), ), - cupertino: (_, __) => CupertinoElevatedButtonData( + cupertino: (_, __) => const CupertinoElevatedButtonData( originalStyle: true, ), ), @@ -181,10 +181,10 @@ class PlatformPage extends StatelessWidget { child: Text(platform.text), onPressed: () => debugPrint('${platform.text} PlatformButton'), padding: const EdgeInsets.all(8), - material: (_, __) => MaterialTextButtonData( - icon: const Icon(Icons.home), + material: (_, __) => const MaterialTextButtonData( + icon: Icon(Icons.home), ), - cupertino: (_, __) => CupertinoTextButtonData( + cupertino: (_, __) => const CupertinoTextButtonData( originalStyle: true, ), ), @@ -298,14 +298,14 @@ class PlatformPage extends StatelessWidget { ), ), options: [ - PopupMenuOption(label: 'One'), + const PopupMenuOption(label: 'One'), PopupMenuOption( label: 'Two', - material: (_, __) => MaterialPopupMenuOptionData( + material: (_, __) => const MaterialPopupMenuOptionData( withDivider: true, ), ), - PopupMenuOption(label: 'Three'), + const PopupMenuOption(label: 'Three'), ], ), ), @@ -453,8 +453,8 @@ void _showExampleDialog(BuildContext context, String text) { content: Text('$text content'), actions: [ PlatformDialogAction( - material: (_, __) => MaterialDialogActionData(), - cupertino: (_, __) => CupertinoDialogActionData(), + material: (_, __) => const MaterialDialogActionData(), + cupertino: (_, __) => const CupertinoDialogActionData(), child: PlatformText('Cancel'), onPressed: () => Navigator.pop(context), ), diff --git a/example/lib/tab_pages/originalTabbedPage.dart b/example/lib/tab_pages/originalTabbedPage.dart index bfb22a9..4064046 100644 --- a/example/lib/tab_pages/originalTabbedPage.dart +++ b/example/lib/tab_pages/originalTabbedPage.dart @@ -67,7 +67,7 @@ class _OriginalTabbedPageState extends State { ), bodyBuilder: (context, index) => ContentView(index, widget.platform), items: items(context), - cupertino: (_, __) => CupertinoTabScaffoldData( + cupertino: (_, __) => const CupertinoTabScaffoldData( // Having this property as false (default true) forces it not to use CupertinoTabView which will show // the back button, but does required transitionBetweenRoutes set to false (see above) useCupertinoTabView: false, diff --git a/lib/src/platform_provider.dart b/lib/src/platform_provider.dart index e7e32a5..e943994 100644 --- a/lib/src/platform_provider.dart +++ b/lib/src/platform_provider.dart @@ -102,7 +102,7 @@ class PlatformProviderState { TargetPlatform? get platform => _parent.platform; PlatformSettingsData get settings => - _parent.settings ?? PlatformSettingsData(); + _parent.settings ?? const PlatformSettingsData(); void changeToMaterialPlatform() { _parent.changeToMaterialPlatform(); From 7a85013acfd2c4d410cd9ba4d23603dba537efbb Mon Sep 17 00:00:00 2001 From: M-Ahal Date: Tue, 1 Apr 2025 10:00:32 +0200 Subject: [PATCH 4/7] Add flutter sdk from FVM to gitignore Interferes with the pinned SDK version in pubspec.yaml --- .fvm/flutter_sdk | 1 - .fvm/fvm_config.json | 4 ---- .gitignore | 4 ++++ 3 files changed, 4 insertions(+), 5 deletions(-) delete mode 120000 .fvm/flutter_sdk delete mode 100644 .fvm/fvm_config.json diff --git a/.fvm/flutter_sdk b/.fvm/flutter_sdk deleted file mode 120000 index bc28121..0000000 --- a/.fvm/flutter_sdk +++ /dev/null @@ -1 +0,0 @@ -/Users/lancejohnstone/fvm/versions/3.24.0 \ No newline at end of file diff --git a/.fvm/fvm_config.json b/.fvm/fvm_config.json deleted file mode 100644 index 8142fd7..0000000 --- a/.fvm/fvm_config.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "flutterSdkVersion": "3.24.0", - "flavors": {} -} \ No newline at end of file diff --git a/.gitignore b/.gitignore index b43bd64..1daac75 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ +## FVM +.fvm/** +.fvmrc + .DS_Store .dart_tool/ .idea From d4e1dd2243d0843a5c62afb1faf64889c0789ceb Mon Sep 17 00:00:00 2001 From: M-Ahal Date: Tue, 1 Apr 2025 10:12:19 +0200 Subject: [PATCH 5/7] Regenerated example to migrate to newer android build system --- example/.gitignore | 7 +- example/.metadata | 19 +- example/analysis_options.yaml | 28 + example/android/.gitignore | 5 +- example/android/app/build.gradle | 59 -- example/android/app/build.gradle.kts | 44 ++ .../android/app/src/debug/AndroidManifest.xml | 6 +- .../android/app/src/main/AndroidManifest.xml | 27 +- .../com/example/example/MainActivity.kt | 3 +- .../app/src/main/res/values-night/styles.xml | 4 +- .../app/src/main/res/values/styles.xml | 4 +- .../app/src/profile/AndroidManifest.xml | 6 +- example/android/build.gradle | 31 - example/android/build.gradle.kts | 21 + example/android/gradle.properties | 2 +- .../gradle/wrapper/gradle-wrapper.properties | 3 +- example/android/settings.gradle | 11 - example/android/settings.gradle.kts | 25 + example/ios/.gitignore | 2 + example/ios/Runner.xcodeproj/project.pbxproj | 175 +++++- .../xcshareddata/xcschemes/Runner.xcscheme | 37 +- example/ios/Runner/AppDelegate.swift | 2 +- .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 564 -> 295 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 1283 -> 406 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 1588 -> 450 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 1025 -> 282 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 1716 -> 462 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 1920 -> 704 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 1283 -> 406 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 1895 -> 586 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 2665 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 2665 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 3831 -> 1674 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 1888 -> 762 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 3294 -> 1226 bytes .../Icon-App-83.5x83.5@2x.png | Bin 3612 -> 1418 bytes example/ios/Runner/Info.plist | 4 +- example/ios/RunnerTests/RunnerTests.swift | 12 + example/macos/.gitignore | 7 - example/macos/Flutter/Flutter-Debug.xcconfig | 1 - .../macos/Flutter/Flutter-Release.xcconfig | 1 - .../Flutter/GeneratedPluginRegistrant.swift | 10 - .../macos/Runner.xcodeproj/project.pbxproj | 573 ------------------ .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/xcschemes/Runner.xcscheme | 87 --- .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - example/macos/Runner/AppDelegate.swift | 9 - .../AppIcon.appiconset/Contents.json | 68 --- .../AppIcon.appiconset/app_icon_1024.png | Bin 102994 -> 0 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 5680 -> 0 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 520 -> 0 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 14142 -> 0 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 1066 -> 0 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 36406 -> 0 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 2218 -> 0 bytes example/macos/Runner/Base.lproj/MainMenu.xib | 343 ----------- example/macos/Runner/Configs/AppInfo.xcconfig | 14 - example/macos/Runner/Configs/Debug.xcconfig | 2 - example/macos/Runner/Configs/Release.xcconfig | 2 - .../macos/Runner/Configs/Warnings.xcconfig | 13 - .../macos/Runner/DebugProfile.entitlements | 12 - example/macos/Runner/Info.plist | 32 - example/macos/Runner/MainFlutterWindow.swift | 15 - example/macos/Runner/Release.entitlements | 8 - example/test/widget_test.dart | 30 + example/web/favicon.png | Bin 917 -> 0 bytes example/web/icons/Icon-192.png | Bin 5292 -> 0 bytes example/web/icons/Icon-512.png | Bin 8252 -> 0 bytes example/web/index.html | 45 -- example/web/manifest.json | 23 - 71 files changed, 413 insertions(+), 1442 deletions(-) create mode 100644 example/analysis_options.yaml delete mode 100644 example/android/app/build.gradle create mode 100644 example/android/app/build.gradle.kts delete mode 100644 example/android/build.gradle create mode 100644 example/android/build.gradle.kts delete mode 100644 example/android/settings.gradle create mode 100644 example/android/settings.gradle.kts create mode 100644 example/ios/RunnerTests/RunnerTests.swift delete mode 100644 example/macos/.gitignore delete mode 100644 example/macos/Flutter/Flutter-Debug.xcconfig delete mode 100644 example/macos/Flutter/Flutter-Release.xcconfig delete mode 100644 example/macos/Flutter/GeneratedPluginRegistrant.swift delete mode 100644 example/macos/Runner.xcodeproj/project.pbxproj delete mode 100644 example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme delete mode 100644 example/macos/Runner.xcworkspace/contents.xcworkspacedata delete mode 100644 example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 example/macos/Runner/AppDelegate.swift delete mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png delete mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png delete mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png delete mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png delete mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png delete mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png delete mode 100644 example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png delete mode 100644 example/macos/Runner/Base.lproj/MainMenu.xib delete mode 100644 example/macos/Runner/Configs/AppInfo.xcconfig delete mode 100644 example/macos/Runner/Configs/Debug.xcconfig delete mode 100644 example/macos/Runner/Configs/Release.xcconfig delete mode 100644 example/macos/Runner/Configs/Warnings.xcconfig delete mode 100644 example/macos/Runner/DebugProfile.entitlements delete mode 100644 example/macos/Runner/Info.plist delete mode 100644 example/macos/Runner/MainFlutterWindow.swift delete mode 100644 example/macos/Runner/Release.entitlements create mode 100644 example/test/widget_test.dart delete mode 100644 example/web/favicon.png delete mode 100644 example/web/icons/Icon-192.png delete mode 100644 example/web/icons/Icon-512.png delete mode 100644 example/web/index.html delete mode 100644 example/web/manifest.json diff --git a/example/.gitignore b/example/.gitignore index 0fa6b67..79c113f 100644 --- a/example/.gitignore +++ b/example/.gitignore @@ -5,9 +5,12 @@ *.swp .DS_Store .atom/ +.build/ .buildlog/ .history .svn/ +.swiftpm/ +migrate_working_dir/ # IntelliJ related *.iml @@ -26,14 +29,10 @@ .dart_tool/ .flutter-plugins .flutter-plugins-dependencies -.packages .pub-cache/ .pub/ /build/ -# Web related -lib/generated_plugin_registrant.dart - # Symbolication related app.*.symbols diff --git a/example/.metadata b/example/.metadata index a221795..82b7d8f 100644 --- a/example/.metadata +++ b/example/.metadata @@ -1,11 +1,11 @@ # This file tracks properties of this Flutter project. # Used by Flutter tool to assess capabilities and perform upgrades etc. # -# This file should be version controlled. +# This file should be version controlled and should not be manually edited. version: - revision: b06b8b2710955028a6b562f5aa6fe62941d6febf - channel: stable + revision: "c23637390482d4cf9598c3ce3f2be31aa7332daf" + channel: "stable" project_type: app @@ -13,11 +13,14 @@ project_type: app migration: platforms: - platform: root - create_revision: b06b8b2710955028a6b562f5aa6fe62941d6febf - base_revision: b06b8b2710955028a6b562f5aa6fe62941d6febf - - platform: macos - create_revision: b06b8b2710955028a6b562f5aa6fe62941d6febf - base_revision: b06b8b2710955028a6b562f5aa6fe62941d6febf + create_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf + base_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf + - platform: android + create_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf + base_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf + - platform: ios + create_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf + base_revision: c23637390482d4cf9598c3ce3f2be31aa7332daf # User provided section diff --git a/example/analysis_options.yaml b/example/analysis_options.yaml new file mode 100644 index 0000000..0d29021 --- /dev/null +++ b/example/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/example/android/.gitignore b/example/android/.gitignore index 0a741cb..be3943c 100644 --- a/example/android/.gitignore +++ b/example/android/.gitignore @@ -5,7 +5,10 @@ gradle-wrapper.jar /gradlew.bat /local.properties GeneratedPluginRegistrant.java +.cxx/ # Remember to never publicly share your keystore. -# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +# See https://flutter.dev/to/reference-keystore key.properties +**/*.keystore +**/*.jks diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle deleted file mode 100644 index 86d5ab4..0000000 --- a/example/android/app/build.gradle +++ /dev/null @@ -1,59 +0,0 @@ -def localProperties = new Properties() -def localPropertiesFile = rootProject.file('local.properties') -if (localPropertiesFile.exists()) { - localPropertiesFile.withReader('UTF-8') { reader -> - localProperties.load(reader) - } -} - -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - -def flutterVersionCode = localProperties.getProperty('flutter.versionCode') -if (flutterVersionCode == null) { - flutterVersionCode = '1' -} - -def flutterVersionName = localProperties.getProperty('flutter.versionName') -if (flutterVersionName == null) { - flutterVersionName = '1.0' -} - -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - -android { - compileSdkVersion 31 - - sourceSets { - main.java.srcDirs += 'src/main/kotlin' - } - - defaultConfig { - // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). - applicationId "com.example.example" - minSdkVersion 16 - targetSdkVersion 31 - versionCode flutterVersionCode.toInteger() - versionName flutterVersionName - } - - buildTypes { - release { - // TODO: Add your own signing config for the release build. - // Signing with the debug keys for now, so `flutter run --release` works. - signingConfig signingConfigs.debug - } - } -} - -flutter { - source '../..' -} - -dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} diff --git a/example/android/app/build.gradle.kts b/example/android/app/build.gradle.kts new file mode 100644 index 0000000..21ecea9 --- /dev/null +++ b/example/android/app/build.gradle.kts @@ -0,0 +1,44 @@ +plugins { + id("com.android.application") + id("kotlin-android") + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id("dev.flutter.flutter-gradle-plugin") +} + +android { + namespace = "com.example.example" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_11.toString() + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "com.example.example" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = flutter.minSdkVersion + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig = signingConfigs.getByName("debug") + } + } +} + +flutter { + source = "../.." +} diff --git a/example/android/app/src/debug/AndroidManifest.xml b/example/android/app/src/debug/AndroidManifest.xml index c208884..399f698 100644 --- a/example/android/app/src/debug/AndroidManifest.xml +++ b/example/android/app/src/debug/AndroidManifest.xml @@ -1,6 +1,6 @@ - - diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index 9991c9e..74a78b9 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -1,12 +1,13 @@ - - + - - @@ -39,4 +31,15 @@ android:name="flutterEmbedding" android:value="2" /> + + + + + + + diff --git a/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt b/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt index e793a00..ac81bae 100644 --- a/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt +++ b/example/android/app/src/main/kotlin/com/example/example/MainActivity.kt @@ -2,5 +2,4 @@ package com.example.example import io.flutter.embedding.android.FlutterActivity -class MainActivity: FlutterActivity() { -} +class MainActivity : FlutterActivity() diff --git a/example/android/app/src/main/res/values-night/styles.xml b/example/android/app/src/main/res/values-night/styles.xml index 449a9f9..06952be 100644 --- a/example/android/app/src/main/res/values-night/styles.xml +++ b/example/android/app/src/main/res/values-night/styles.xml @@ -3,14 +3,14 @@