diff --git a/ios/Podfile.lock b/ios/Podfile.lock index ac765d6c..640a910c 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -11,17 +11,15 @@ PODS: - Flutter - package_info (0.0.1): - Flutter - - path_provider_ios (0.0.1): + - path_provider_foundation (0.0.1): - Flutter + - FlutterMacOS - ReachabilitySwift (5.0.0) - - share_plus (0.0.1): - - Flutter - - shared_preferences_ios (0.0.1): + - shared_preferences_foundation (0.0.1): - Flutter + - FlutterMacOS - url_launcher_ios (0.0.1): - Flutter - - wakelock (0.0.1): - - Flutter DEPENDENCIES: - connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`) @@ -30,11 +28,9 @@ DEPENDENCIES: - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) - local_auth_ios (from `.symlinks/plugins/local_auth_ios/ios`) - package_info (from `.symlinks/plugins/package_info/ios`) - - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`) - - share_plus (from `.symlinks/plugins/share_plus/ios`) - - shared_preferences_ios (from `.symlinks/plugins/shared_preferences_ios/ios`) + - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) + - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - - wakelock (from `.symlinks/plugins/wakelock/ios`) SPEC REPOS: trunk: @@ -53,31 +49,25 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/local_auth_ios/ios" package_info: :path: ".symlinks/plugins/package_info/ios" - path_provider_ios: - :path: ".symlinks/plugins/path_provider_ios/ios" - share_plus: - :path: ".symlinks/plugins/share_plus/ios" - shared_preferences_ios: - :path: ".symlinks/plugins/shared_preferences_ios/ios" + path_provider_foundation: + :path: ".symlinks/plugins/path_provider_foundation/darwin" + shared_preferences_foundation: + :path: ".symlinks/plugins/shared_preferences_foundation/darwin" url_launcher_ios: :path: ".symlinks/plugins/url_launcher_ios/ios" - wakelock: - :path: ".symlinks/plugins/wakelock/ios" SPEC CHECKSUMS: - connectivity_plus: 413a8857dd5d9f1c399a39130850d02fe0feaf7e - device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed + connectivity_plus: bf0076dd84a130856aa636df1c71ccaff908fa1d + device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6 Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be - local_auth_ios: 0d333dde7780f669e66f19d2ff6005f3ea84008d + local_auth_ios: c6cf091ded637a88f24f86a8875d8b0f526e2605 package_info: 873975fc26034f0b863a300ad47e7f1ac6c7ec62 - path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02 + path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943 ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825 - share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68 - shared_preferences_ios: 548a61f8053b9b8a49ac19c1ffbc8b92c50d68ad - url_launcher_ios: 839c58cdb4279282219f5e248c3321761ff3c4de - wakelock: d0fc7c864128eac40eba1617cb5264d9c940b46f + shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126 + url_launcher_ios: bf5ce03e0e2088bad9cc378ea97fa0ed5b49673b PODFILE CHECKSUM: ef19549a9bc3046e7bb7d2fab4d021637c0c58a3 -COCOAPODS: 1.11.3 +COCOAPODS: 1.15.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index ad268014..f134273d 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ @@ -159,7 +159,7 @@ 97C146E61CF9000F007C117D /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = ""; TargetAttributes = { 97C146ED1CF9000F007C117D = { @@ -203,10 +203,12 @@ /* Begin PBXShellScriptBuildPhase section */ 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); name = "Thin Binary"; outputPaths = ( @@ -239,6 +241,7 @@ }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -360,14 +363,14 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = 46723VZHWZ; + DEVELOPMENT_TEAM = P2P92N48K5; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = org.selfprivacy.selfprivacy; + PRODUCT_BUNDLE_IDENTIFIER = org.selfprivacy.app; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -490,14 +493,14 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = 46723VZHWZ; + DEVELOPMENT_TEAM = P2P92N48K5; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = org.selfprivacy.selfprivacy; + PRODUCT_BUNDLE_IDENTIFIER = org.selfprivacy.app; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -514,14 +517,14 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = 46723VZHWZ; + DEVELOPMENT_TEAM = P2P92N48K5; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = org.selfprivacy.selfprivacy; + PRODUCT_BUNDLE_IDENTIFIER = org.selfprivacy.app; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index c87d15a3..a6b826db 100644 --- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ + CADisableMinimumFrameDurationOnPhone + CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName @@ -24,6 +26,8 @@ $(FLUTTER_BUILD_NUMBER) LSRequiresIPhoneOS + UIApplicationSupportsIndirectInputEvents + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile @@ -43,9 +47,5 @@ UIViewControllerBasedStatusBarAppearance - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - diff --git a/lib/ui/layouts/root_scaffold_with_navigation.dart b/lib/ui/layouts/root_scaffold_with_navigation.dart index 2278bb4e..abbd82d7 100644 --- a/lib/ui/layouts/root_scaffold_with_navigation.dart +++ b/lib/ui/layouts/root_scaffold_with_navigation.dart @@ -1,4 +1,7 @@ +import 'dart:io'; + import 'package:auto_route/auto_route.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:selfprivacy/ui/components/drawers/support_drawer.dart'; import 'package:selfprivacy/ui/components/pre_styled_buttons/flash_fab.dart'; @@ -199,21 +202,36 @@ class _BottomBar extends StatelessWidget { decoration: BoxDecoration( color: Theme.of(context).scaffoldBackgroundColor, ), - child: NavigationBar( - selectedIndex: prevActiveIndex == -1 ? 0 : prevActiveIndex, - labelBehavior: NavigationDestinationLabelBehavior.alwaysShow, - onDestinationSelected: (final index) { - context.router.replaceAll([destinations[index].route]); - }, - destinations: destinations - .map( - (final destination) => NavigationDestination( - icon: Icon(destination.icon), - label: destination.label, - ), + child: Platform.isIOS + ? CupertinoTabBar( + currentIndex: prevActiveIndex == -1 ? 0 : prevActiveIndex, + onTap: (final index) { + context.router.replaceAll([destinations[index].route]); + }, + items: destinations + .map( + (final destination) => BottomNavigationBarItem( + icon: Icon(destination.icon), + label: destination.label, + ), + ) + .toList(), ) - .toList(), - ), + : NavigationBar( + selectedIndex: prevActiveIndex == -1 ? 0 : prevActiveIndex, + labelBehavior: NavigationDestinationLabelBehavior.alwaysShow, + onDestinationSelected: (final index) { + context.router.replaceAll([destinations[index].route]); + }, + destinations: destinations + .map( + (final destination) => NavigationDestination( + icon: Icon(destination.icon), + label: destination.label, + ), + ) + .toList(), + ), ); } } diff --git a/lib/ui/pages/backups/backup_details.dart b/lib/ui/pages/backups/backup_details.dart index dad45db4..a5650bbb 100644 --- a/lib/ui/pages/backups/backup_details.dart +++ b/lib/ui/pages/backups/backup_details.dart @@ -67,7 +67,7 @@ class BackupDetailsPage extends StatelessWidget { const Center( child: Padding( padding: EdgeInsets.all(16.0), - child: CircularProgressIndicator(), + child: CircularProgressIndicator.adaptive(), ), ), if (!preventActions) diff --git a/lib/ui/pages/backups/change_period_modal.dart b/lib/ui/pages/backups/change_period_modal.dart index d3217b64..80247acb 100644 --- a/lib/ui/pages/backups/change_period_modal.dart +++ b/lib/ui/pages/backups/change_period_modal.dart @@ -53,7 +53,7 @@ class _ChangeAutobackupsPeriodModalState ), const SizedBox(height: 16), // Select all services tile - RadioListTile( + RadioListTile.adaptive( onChanged: (final Duration? value) { setState(() { selectedPeriod = value; @@ -69,7 +69,7 @@ class _ChangeAutobackupsPeriodModalState height: 1.0, ), ...autobackupPeriods.map( - (final Duration period) => RadioListTile( + (final Duration period) => RadioListTile.adaptive( onChanged: (final Duration? value) { setState(() { selectedPeriod = value; diff --git a/lib/ui/pages/backups/change_rotation_quotas_modal.dart b/lib/ui/pages/backups/change_rotation_quotas_modal.dart index 1a7e91bc..19b39151 100644 --- a/lib/ui/pages/backups/change_rotation_quotas_modal.dart +++ b/lib/ui/pages/backups/change_rotation_quotas_modal.dart @@ -232,7 +232,7 @@ class QuotaSelectionTile extends StatelessWidget { children: [ // Discrete slider to select the new value if (value >= -1 && value <= max) - Slider( + Slider.adaptive( value: value == -1 ? max + 1 : value.toDouble(), min: min.toDouble(), max: (max + 1).toDouble(), diff --git a/lib/ui/pages/backups/create_backups_modal.dart b/lib/ui/pages/backups/create_backups_modal.dart index acf6ac6f..f78e1075 100644 --- a/lib/ui/pages/backups/create_backups_modal.dart +++ b/lib/ui/pages/backups/create_backups_modal.dart @@ -71,7 +71,7 @@ class _CreateBackupsModalState extends State { ), const SizedBox(height: 16), // Select all services tile - CheckboxListTile( + CheckboxListTile.adaptive( onChanged: (final bool? value) { setState(() { if (value ?? true) { @@ -103,7 +103,7 @@ class _CreateBackupsModalState extends State { ...widget.services.map( (final Service service) { final bool busy = busyServices.contains(service.id); - return CheckboxListTile( + return CheckboxListTile.adaptive( onChanged: !busy ? (final bool? value) { setState(() { diff --git a/lib/ui/pages/devices/devices.dart b/lib/ui/pages/devices/devices.dart index 4d92cd56..6c2992c8 100644 --- a/lib/ui/pages/devices/devices.dart +++ b/lib/ui/pages/devices/devices.dart @@ -36,7 +36,7 @@ class _DevicesScreenState extends State { if (devicesStatus is DevicesInitial) ...[ const Center( heightFactor: 8, - child: CircularProgressIndicator(), + child: CircularProgressIndicator.adaptive(), ), ], if (devicesStatus is! DevicesInitial) ...[ @@ -94,7 +94,7 @@ class _DevicesInfo extends StatelessWidget { if (devicesStatus is DevicesDeleting) ...[ const Center( heightFactor: 4, - child: CircularProgressIndicator(), + child: CircularProgressIndicator.adaptive(), ), ], if (devicesStatus is! DevicesDeleting) diff --git a/lib/ui/pages/devices/new_device.dart b/lib/ui/pages/devices/new_device.dart index 6f343b22..bbf03728 100644 --- a/lib/ui/pages/devices/new_device.dart +++ b/lib/ui/pages/devices/new_device.dart @@ -27,7 +27,9 @@ class NewDeviceScreen extends StatelessWidget { newDeviceKey: snapshot.data.toString(), ); } else { - return const Center(child: CircularProgressIndicator()); + return const Center( + child: CircularProgressIndicator.adaptive(), + ); } }, ), diff --git a/lib/ui/pages/more/app_settings/app_settings.dart b/lib/ui/pages/more/app_settings/app_settings.dart index 43b4ef32..b41f1a74 100644 --- a/lib/ui/pages/more/app_settings/app_settings.dart +++ b/lib/ui/pages/more/app_settings/app_settings.dart @@ -31,7 +31,7 @@ class _AppSettingsPageState extends State { bodyPadding: const EdgeInsets.symmetric(vertical: 16), heroTitle: 'application_settings.title'.tr(), children: [ - SwitchListTile( + SwitchListTile.adaptive( title: Text('application_settings.system_dark_theme_title'.tr()), subtitle: Text('application_settings.system_dark_theme_description'.tr()), @@ -40,7 +40,7 @@ class _AppSettingsPageState extends State { .read() .updateAutoDarkMode(isAutoDarkModeOn: !isSystemDarkModeOn), ), - SwitchListTile( + SwitchListTile.adaptive( title: Text('application_settings.dark_theme_title'.tr()), subtitle: Text('application_settings.dark_theme_description'.tr()), value: Theme.of(context).brightness == Brightness.dark, diff --git a/lib/ui/pages/more/app_settings/developer_settings.dart b/lib/ui/pages/more/app_settings/developer_settings.dart index 46149e15..751eabb6 100644 --- a/lib/ui/pages/more/app_settings/developer_settings.dart +++ b/lib/ui/pages/more/app_settings/developer_settings.dart @@ -28,7 +28,7 @@ class _DeveloperSettingsPageState extends State { heroSubtitle: 'developer_settings.subtitle'.tr(), children: [ SectionTitle(title: 'developer_settings.server_setup'.tr()), - SwitchListTile( + SwitchListTile.adaptive( title: Text('developer_settings.use_staging_acme'.tr()), subtitle: Text('developer_settings.use_staging_acme_description'.tr()), @@ -37,7 +37,7 @@ class _DeveloperSettingsPageState extends State { () => TlsOptions.stagingAcme = value, ), ), - SwitchListTile( + SwitchListTile.adaptive( title: Text('developer_settings.ignore_tls'.tr()), subtitle: Text('developer_settings.ignore_tls_description'.tr()), value: !TlsOptions.verifyCertificate, @@ -45,7 +45,7 @@ class _DeveloperSettingsPageState extends State { () => TlsOptions.verifyCertificate = !value, ), ), - SwitchListTile( + SwitchListTile.adaptive( title: Text('developer_settings.allow_ssh_key_at_setup'.tr()), subtitle: Text( 'developer_settings.allow_ssh_key_at_setup_description'.tr(), diff --git a/lib/ui/pages/more/console.dart b/lib/ui/pages/more/console.dart index 94c06b4d..0c60cf81 100644 --- a/lib/ui/pages/more/console.dart +++ b/lib/ui/pages/more/console.dart @@ -96,7 +96,7 @@ class _ConsolePageState extends State { children: [ Text('console_page.waiting'.tr()), const Gap(16), - const CircularProgressIndicator(), + const CircularProgressIndicator.adaptive(), ], ); } diff --git a/lib/ui/pages/providers/providers.dart b/lib/ui/pages/providers/providers.dart index 554c594b..ec397805 100644 --- a/lib/ui/pages/providers/providers.dart +++ b/lib/ui/pages/providers/providers.dart @@ -1,6 +1,7 @@ import 'package:auto_route/auto_route.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:gap/gap.dart'; import 'package:selfprivacy/config/brand_theme.dart'; import 'package:selfprivacy/logic/bloc/backups/backups_bloc.dart'; import 'package:selfprivacy/logic/bloc/volumes/volumes_bloc.dart'; @@ -146,20 +147,18 @@ class _Card extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + mainAxisAlignment: MainAxisAlignment.start, children: [ - Row( - children: [ - IconStatusMask( - status: state, - icon: Icon(icon, size: 30, color: Colors.white), - ), - const SizedBox(width: 8), - Text( - title, - style: Theme.of(context).textTheme.headlineMedium, - ), - ], + IconStatusMask( + status: state, + icon: Icon(icon, size: 30, color: Colors.white), + ), + const Gap(8), + Expanded( + child: Text( + title, + style: Theme.of(context).textTheme.headlineMedium, + ), ), if (state != StateType.uninitialized) IconStatusMask( diff --git a/lib/ui/pages/recovery_key/recovery_key.dart b/lib/ui/pages/recovery_key/recovery_key.dart index b211bad7..d5bd7a15 100644 --- a/lib/ui/pages/recovery_key/recovery_key.dart +++ b/lib/ui/pages/recovery_key/recovery_key.dart @@ -32,7 +32,7 @@ class _RecoveryKeyPageState extends State { case RecoveryKeyRefreshing(): subtitle = 'recovery_key.key_synchronizing'.tr(); widgets = [ - const Center(child: CircularProgressIndicator()), + const Center(child: CircularProgressIndicator.adaptive()), ]; break; case RecoveryKeyLoaded(): @@ -306,7 +306,7 @@ class _RecoveryKeyConfigurationState extends State { return Column( children: [ - SwitchListTile( + SwitchListTile.adaptive( value: _isAmountToggled, title: Text('recovery_key.key_amount_toggle'.tr()), activeColor: Theme.of(context).colorScheme.primary, @@ -346,7 +346,7 @@ class _RecoveryKeyConfigurationState extends State { ), secondChild: Container(), ), - SwitchListTile( + SwitchListTile.adaptive( value: _isExpirationToggled, title: Text('recovery_key.key_duedate_toggle'.tr()), activeColor: Theme.of(context).colorScheme.primary, diff --git a/lib/ui/pages/server_details/charts/chart.dart b/lib/ui/pages/server_details/charts/chart.dart index 76576261..ffa2e367 100644 --- a/lib/ui/pages/server_details/charts/chart.dart +++ b/lib/ui/pages/server_details/charts/chart.dart @@ -48,23 +48,38 @@ class _Chart extends StatelessWidget { children: [ Row( crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text( - 'resource_chart.network_title'.tr(), - style: Theme.of(context).textTheme.titleMedium?.copyWith( - color: - Theme.of(context).colorScheme.onSurfaceVariant, + Flexible( + child: Text( + 'resource_chart.network_title'.tr(), + style: + Theme.of(context).textTheme.titleMedium?.copyWith( + color: Theme.of(context) + .colorScheme + .onSurfaceVariant, + ), + ), + ), + Flexible( + fit: FlexFit.loose, + child: Wrap( + spacing: 8.0, + runSpacing: 8.0, + alignment: WrapAlignment.end, + runAlignment: WrapAlignment.end, + children: [ + Legend( + color: Theme.of(context).colorScheme.primary, + text: 'resource_chart.in'.tr(), ), - ), - const Spacer(), - Legend( - color: Theme.of(context).colorScheme.primary, - text: 'resource_chart.in'.tr(), - ), - const SizedBox(width: 5), - Legend( - color: Theme.of(context).colorScheme.tertiary, - text: 'resource_chart.out'.tr(), + Legend( + color: Theme.of(context).colorScheme.tertiary, + text: 'resource_chart.out'.tr(), + ), + ], + ), ), ], ), @@ -156,7 +171,7 @@ class _GraphLoadingCardContent extends StatelessWidget { @override Widget build(final BuildContext context) => const SizedBox( height: 200, - child: Center(child: CircularProgressIndicator()), + child: Center(child: CircularProgressIndicator.adaptive()), ); } @@ -172,6 +187,7 @@ class Legend extends StatelessWidget { @override Widget build(final BuildContext context) => Row( mainAxisAlignment: MainAxisAlignment.end, + mainAxisSize: MainAxisSize.min, children: [ _ColoredBox(color: color), const SizedBox(width: 5), diff --git a/lib/ui/pages/server_details/server_settings.dart b/lib/ui/pages/server_details/server_settings.dart index f3a78292..58715fa6 100644 --- a/lib/ui/pages/server_details/server_settings.dart +++ b/lib/ui/pages/server_details/server_settings.dart @@ -34,7 +34,7 @@ class _ServerSettingsState extends State<_ServerSettings> { return Column( children: [ - SwitchListTile( + SwitchListTile.adaptive( value: allowAutoUpgrade ?? false, onChanged: (final switched) { context.read().addJob( @@ -67,7 +67,7 @@ class _ServerSettingsState extends State<_ServerSettings> { ), activeColor: Theme.of(context).colorScheme.primary, ), - SwitchListTile( + SwitchListTile.adaptive( value: rebootAfterUpgrade ?? false, onChanged: (final switched) { context.read().addJob( @@ -113,7 +113,7 @@ class _ServerSettingsState extends State<_ServerSettings> { ); }, ), - SwitchListTile( + SwitchListTile.adaptive( value: enableSsh ?? true, onChanged: (final switched) { context.read().addJob( @@ -145,7 +145,7 @@ class _ServerSettingsState extends State<_ServerSettings> { ), activeColor: Theme.of(context).colorScheme.primary, ), - SwitchListTile( + SwitchListTile.adaptive( value: allowPasswordAuthentication ?? false, onChanged: (final switched) { context.read().addJob( diff --git a/lib/ui/pages/server_storage/binds_migration/services_migration.dart b/lib/ui/pages/server_storage/binds_migration/services_migration.dart index 695b8de4..cc4d18aa 100644 --- a/lib/ui/pages/server_storage/binds_migration/services_migration.dart +++ b/lib/ui/pages/server_storage/binds_migration/services_migration.dart @@ -147,7 +147,7 @@ class _ServicesMigrationPageState extends State { padding: const EdgeInsets.all(16.0), children: [ if (widget.services.isEmpty) - const Center(child: CircularProgressIndicator()), + const Center(child: CircularProgressIndicator.adaptive()), ...widget.services.map( (final service) => Column( children: [ diff --git a/lib/ui/pages/server_storage/extending_volume.dart b/lib/ui/pages/server_storage/extending_volume.dart index e6961a95..2b222276 100644 --- a/lib/ui/pages/server_storage/extending_volume.dart +++ b/lib/ui/pages/server_storage/extending_volume.dart @@ -71,7 +71,7 @@ class _ExtendingVolumePageState extends State { children: const [ SizedBox(height: 16), Center( - child: CircularProgressIndicator(), + child: CircularProgressIndicator.adaptive(), ), ], ); diff --git a/lib/ui/pages/server_storage/storage_card.dart b/lib/ui/pages/server_storage/storage_card.dart index 15ac54fc..ac603d3b 100644 --- a/lib/ui/pages/server_storage/storage_card.dart +++ b/lib/ui/pages/server_storage/storage_card.dart @@ -59,21 +59,23 @@ class StorageCard extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - 'storage.card_title'.tr(), - style: Theme.of(context).textTheme.titleLarge, - ), - if (state != StateType.uninitialized) + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ Text( - diskStatus.isDiskOkay - ? 'storage.status_ok'.tr() - : 'storage.status_error'.tr(), - style: Theme.of(context).textTheme.bodyLarge, + 'storage.card_title'.tr(), + style: Theme.of(context).textTheme.titleLarge, ), - ], + if (state != StateType.uninitialized) + Text( + diskStatus.isDiskOkay + ? 'storage.status_ok'.tr() + : 'storage.status_error'.tr(), + style: Theme.of(context).textTheme.bodyLarge, + ), + ], + ), ), if (state != StateType.uninitialized) IconStatusMask( diff --git a/lib/ui/pages/services/service_page.dart b/lib/ui/pages/services/service_page.dart index c0064eef..6e441c94 100644 --- a/lib/ui/pages/services/service_page.dart +++ b/lib/ui/pages/services/service_page.dart @@ -33,7 +33,7 @@ class _ServicePageState extends State { hasBackButton: true, children: [ Center( - child: CircularProgressIndicator(), + child: CircularProgressIndicator.adaptive(), ), ], ); diff --git a/lib/ui/pages/services/services.dart b/lib/ui/pages/services/services.dart index 994e2040..684af19a 100644 --- a/lib/ui/pages/services/services.dart +++ b/lib/ui/pages/services/services.dart @@ -2,6 +2,7 @@ import 'package:auto_route/auto_route.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; +import 'package:gap/gap.dart'; import 'package:selfprivacy/config/brand_theme.dart'; import 'package:selfprivacy/logic/bloc/services/services_bloc.dart'; import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart'; @@ -134,10 +135,12 @@ class _Card extends StatelessWidget { ), ), ), - const SizedBox(width: 8), - Text( - service.displayName, - style: Theme.of(context).textTheme.headlineMedium, + const Gap(8), + Expanded( + child: Text( + service.displayName, + style: Theme.of(context).textTheme.headlineMedium, + ), ), ], ), diff --git a/lib/ui/pages/setup/initializing/server_type_picker.dart b/lib/ui/pages/setup/initializing/server_type_picker.dart index 067746f6..6fb09f4b 100644 --- a/lib/ui/pages/setup/initializing/server_type_picker.dart +++ b/lib/ui/pages/setup/initializing/server_type_picker.dart @@ -141,7 +141,7 @@ class SelectLocationPage extends StatelessWidget { ), ); } else { - return const Center(child: CircularProgressIndicator()); + return const Center(child: CircularProgressIndicator.adaptive()); } }, ); @@ -479,7 +479,7 @@ class SelectTypePage extends StatelessWidget { InfoBox(text: 'initializing.choose_server_type_notice'.tr()), ); } else { - return const Center(child: CircularProgressIndicator()); + return const Center(child: CircularProgressIndicator.adaptive()); } }, ); diff --git a/lib/ui/pages/setup/recovering/recovery_confirm_server.dart b/lib/ui/pages/setup/recovering/recovery_confirm_server.dart index e9c53f94..9e7709bc 100644 --- a/lib/ui/pages/setup/recovering/recovery_confirm_server.dart +++ b/lib/ui/pages/setup/recovering/recovery_confirm_server.dart @@ -76,7 +76,7 @@ class _RecoveryConfirmServerState extends State { ); } else { return const Center( - child: CircularProgressIndicator(), + child: CircularProgressIndicator.adaptive(), ); } }, diff --git a/lib/ui/pages/users/users.dart b/lib/ui/pages/users/users.dart index b08b168e..b7469a6e 100644 --- a/lib/ui/pages/users/users.dart +++ b/lib/ui/pages/users/users.dart @@ -56,7 +56,7 @@ class UsersPage extends StatelessWidget { if (users.isEmpty) { if (state is UsersRefreshing) { return const Center( - child: CircularProgressIndicator(), + child: CircularProgressIndicator.adaptive(), ); } return RefreshIndicator( diff --git a/macos/Podfile b/macos/Podfile index de1123e8..e20d34c6 100644 --- a/macos/Podfile +++ b/macos/Podfile @@ -1,4 +1,4 @@ -platform :osx, '10.13' +platform :osx, '10.14' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/macos/Podfile.lock b/macos/Podfile.lock index 7bd65a88..7d720b06 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -1,8 +1,8 @@ PODS: - - connectivity_plus_macos (0.0.1): + - connectivity_plus (0.0.1): - FlutterMacOS - ReachabilitySwift - - device_info_plus_macos (0.0.1): + - device_info_plus (0.0.1): - FlutterMacOS - dynamic_color (0.0.2): - FlutterMacOS @@ -11,40 +11,36 @@ PODS: - FlutterMacOS (1.0.0) - package_info (0.0.1): - FlutterMacOS - - path_provider_macos (0.0.1): + - path_provider_foundation (0.0.1): + - Flutter - FlutterMacOS - ReachabilitySwift (5.0.0) - - share_plus_macos (0.0.1): - - FlutterMacOS - - shared_preferences_macos (0.0.1): + - shared_preferences_foundation (0.0.1): + - Flutter - FlutterMacOS - url_launcher_macos (0.0.1): - FlutterMacOS - - wakelock_macos (0.0.1): - - FlutterMacOS DEPENDENCIES: - - connectivity_plus_macos (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus_macos/macos`) - - device_info_plus_macos (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus_macos/macos`) + - connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos`) + - device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`) - dynamic_color (from `Flutter/ephemeral/.symlinks/plugins/dynamic_color/macos`) - flutter_secure_storage_macos (from `Flutter/ephemeral/.symlinks/plugins/flutter_secure_storage_macos/macos`) - FlutterMacOS (from `Flutter/ephemeral`) - package_info (from `Flutter/ephemeral/.symlinks/plugins/package_info/macos`) - - path_provider_macos (from `Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos`) - - share_plus_macos (from `Flutter/ephemeral/.symlinks/plugins/share_plus_macos/macos`) - - shared_preferences_macos (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_macos/macos`) + - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`) + - shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`) - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`) - - wakelock_macos (from `Flutter/ephemeral/.symlinks/plugins/wakelock_macos/macos`) SPEC REPOS: trunk: - ReachabilitySwift EXTERNAL SOURCES: - connectivity_plus_macos: - :path: Flutter/ephemeral/.symlinks/plugins/connectivity_plus_macos/macos - device_info_plus_macos: - :path: Flutter/ephemeral/.symlinks/plugins/device_info_plus_macos/macos + connectivity_plus: + :path: Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos + device_info_plus: + :path: Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos dynamic_color: :path: Flutter/ephemeral/.symlinks/plugins/dynamic_color/macos flutter_secure_storage_macos: @@ -53,31 +49,25 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral package_info: :path: Flutter/ephemeral/.symlinks/plugins/package_info/macos - path_provider_macos: - :path: Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos - share_plus_macos: - :path: Flutter/ephemeral/.symlinks/plugins/share_plus_macos/macos - shared_preferences_macos: - :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_macos/macos + path_provider_foundation: + :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin + shared_preferences_foundation: + :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin url_launcher_macos: :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos - wakelock_macos: - :path: Flutter/ephemeral/.symlinks/plugins/wakelock_macos/macos SPEC CHECKSUMS: - connectivity_plus_macos: f6e86fd000e971d361e54b5afcadc8c8fa773308 - device_info_plus_macos: 1ad388a1ef433505c4038e7dd9605aadd1e2e9c7 - dynamic_color: 394d6a888650f8534e029b27d2f8bc5c64e44008 - flutter_secure_storage_macos: 75c8cadfdba05ca007c0fa4ea0c16e5cf85e521b - FlutterMacOS: ae6af50a8ea7d6103d888583d46bd8328a7e9811 + connectivity_plus: 18d3c32514c886e046de60e9c13895109866c747 + device_info_plus: 5401765fde0b8d062a2f8eb65510fb17e77cf07f + dynamic_color: 2eaa27267de1ca20d879fbd6e01259773fb1670f + flutter_secure_storage_macos: d56e2d218c1130b262bef8b4a7d64f88d7f9c9ea + FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 package_info: 6eba2fd8d3371dda2d85c8db6fe97488f24b74b2 - path_provider_macos: 3c0c3b4b0d4a76d2bf989a913c2de869c5641a19 + path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943 ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825 - share_plus_macos: 853ee48e7dce06b633998ca0735d482dd671ade4 - shared_preferences_macos: a64dc611287ed6cbe28fd1297898db1336975727 - url_launcher_macos: 597e05b8e514239626bcf4a850fcf9ef5c856ec3 - wakelock_macos: bc3f2a9bd8d2e6c89fee1e1822e7ddac3bd004a9 + shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126 + url_launcher_macos: d2691c7dd33ed713bf3544850a623080ec693d95 -PODFILE CHECKSUM: 69608711ca93a0af5aac7e2f834b34cf2422afce +PODFILE CHECKSUM: b0cc1fdf1eda0fefb5163971bbf18550427d02c4 -COCOAPODS: 1.11.3 +COCOAPODS: 1.15.2 diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj index ce134fe4..37e2180a 100644 --- a/macos/Runner.xcodeproj/project.pbxproj +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 51; + objectVersion = 54; objects = { /* Begin PBXAggregateTarget section */ @@ -202,7 +202,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = ""; TargetAttributes = { 33CC10EC2044A3C60003C045 = { @@ -255,6 +255,7 @@ /* Begin PBXShellScriptBuildPhase section */ 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); @@ -403,7 +404,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.13; + MACOSX_DEPLOYMENT_TARGET = 10.14; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -428,7 +429,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.13; + MACOSX_DEPLOYMENT_TARGET = 10.14; MARKETING_VERSION = 0.8.0; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; @@ -487,7 +488,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.13; + MACOSX_DEPLOYMENT_TARGET = 10.14; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -534,7 +535,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.13; + MACOSX_DEPLOYMENT_TARGET = 10.14; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -559,7 +560,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.13; + MACOSX_DEPLOYMENT_TARGET = 10.14; MARKETING_VERSION = 0.8.0; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -584,7 +585,7 @@ "$(inherited)", "@executable_path/../Frameworks", ); - MACOSX_DEPLOYMENT_TARGET = 10.13; + MACOSX_DEPLOYMENT_TARGET = 10.14; MARKETING_VERSION = 0.8.0; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 523b108f..aa456674 100644 --- a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@