Merge pull request 'refactor: Migrate to Flutter 3.7' (#194) from flutter-3.7 into master

Reviewed-on: kherel/selfprivacy.org.app#194
Reviewed-by: NaiJi  <naiji@udongein.xyz>
pull/207/head
Inex Code 2023-03-28 17:46:23 +03:00
commit fb8fdad0c5
24 changed files with 650 additions and 656 deletions

View File

@ -31,7 +31,6 @@ linter:
avoid_print: false # Uncomment to disable the `avoid_print` rule avoid_print: false # Uncomment to disable the `avoid_print` rule
prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
always_use_package_imports: true always_use_package_imports: true
invariant_booleans: true
no_adjacent_strings_in_list: true no_adjacent_strings_in_list: true
unnecessary_statements: true unnecessary_statements: true
always_declare_return_types: true always_declare_return_types: true

View File

@ -1,88 +1,3 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:selfprivacy/config/text_themes.dart';
import 'package:selfprivacy/config/brand_colors.dart';
final ThemeData lightTheme = ThemeData(
useMaterial3: true,
primaryColor: BrandColors.primary,
fontFamily: 'Inter',
brightness: Brightness.light,
scaffoldBackgroundColor: BrandColors.scaffoldBackground,
inputDecorationTheme: const InputDecorationTheme(
border: InputBorder.none,
contentPadding: EdgeInsets.all(16),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(4)),
borderSide: BorderSide(color: BrandColors.inputInactive),
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(4)),
borderSide: BorderSide(color: BrandColors.blue),
),
errorBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(4)),
borderSide: BorderSide(
width: 1,
color: BrandColors.red1,
),
),
focusedErrorBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(4)),
borderSide: BorderSide(
width: 1,
color: BrandColors.red1,
),
),
errorStyle: TextStyle(
fontSize: 12,
color: BrandColors.red1,
),
),
listTileTheme: const ListTileThemeData(
minLeadingWidth: 24.0,
),
textTheme: TextTheme(
headline1: headline1Style,
headline2: headline2Style,
headline3: headline3Style,
headline4: headline4Style,
bodyText1: body1Style,
subtitle1: const TextStyle(fontSize: 15, height: 1.6), // text input style
),
);
ThemeData darkTheme = lightTheme.copyWith(
brightness: Brightness.dark,
scaffoldBackgroundColor: const Color(0xFF202120),
iconTheme: const IconThemeData(color: BrandColors.gray3),
cardColor: BrandColors.gray1,
dialogBackgroundColor: const Color(0xFF202120),
textTheme: TextTheme(
headline1: headline1Style.copyWith(color: BrandColors.white),
headline2: headline2Style.copyWith(color: BrandColors.white),
headline3: headline3Style.copyWith(color: BrandColors.white),
headline4: headline4Style.copyWith(color: BrandColors.white),
bodyText1: body1Style.copyWith(color: BrandColors.white),
subtitle1: const TextStyle(fontSize: 15, height: 1.6), // text input style
),
inputDecorationTheme: const InputDecorationTheme(
labelStyle: TextStyle(color: BrandColors.white),
hintStyle: TextStyle(color: BrandColors.white),
border: OutlineInputBorder(
borderSide: BorderSide(
color: BrandColors.white,
),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(
color: BrandColors.white,
),
),
),
);
const EdgeInsets paddingH15V30 =
EdgeInsets.symmetric(horizontal: 15, vertical: 30);
const EdgeInsets paddingH15V0 = EdgeInsets.symmetric(horizontal: 15); const EdgeInsets paddingH15V0 = EdgeInsets.symmetric(horizontal: 15);

View File

@ -1,5 +1,4 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:selfprivacy/ui/components/brand_button/filled_button.dart';
import 'package:selfprivacy/ui/components/brand_text/brand_text.dart'; import 'package:selfprivacy/ui/components/brand_text/brand_text.dart';
enum BrandButtonTypes { rised, text, iconText } enum BrandButtonTypes { rised, text, iconText }
@ -20,9 +19,29 @@ class BrandButton {
), ),
child: FilledButton( child: FilledButton(
key: key, key: key,
title: text,
onPressed: onPressed, onPressed: onPressed,
child: child, child: child ?? Text(text ?? ''),
),
);
}
static ConstrainedBox filled({
required final VoidCallback? onPressed,
final Key? key,
final String? text,
final Widget? child,
}) {
assert(text == null || child == null, 'required title or child');
assert(text != null || child != null, 'required title or child');
return ConstrainedBox(
constraints: const BoxConstraints(
minHeight: 40,
minWidth: double.infinity,
),
child: FilledButton(
key: key,
onPressed: onPressed,
child: child ?? Text(text ?? ''),
), ),
); );
} }

View File

@ -1,41 +0,0 @@
import 'package:flutter/material.dart';
class FilledButton extends StatelessWidget {
const FilledButton({
super.key,
this.onPressed,
this.title,
this.child,
this.disabled = false,
});
final VoidCallback? onPressed;
final String? title;
final Widget? child;
final bool disabled;
@override
Widget build(final BuildContext context) {
final ButtonStyle enabledStyle = ElevatedButton.styleFrom(
foregroundColor: Theme.of(context).colorScheme.onPrimary,
backgroundColor: Theme.of(context).colorScheme.primary,
).copyWith(elevation: ButtonStyleButton.allOrNull(0.0));
final ButtonStyle disabledStyle = ElevatedButton.styleFrom(
foregroundColor: Theme.of(context).colorScheme.onSurface.withAlpha(30),
backgroundColor: Theme.of(context).colorScheme.onSurface.withAlpha(98),
).copyWith(elevation: ButtonStyleButton.allOrNull(0.0));
return ConstrainedBox(
constraints: const BoxConstraints(
minHeight: 40,
minWidth: double.infinity,
),
child: ElevatedButton(
onPressed: onPressed,
style: disabled ? disabledStyle : enabledStyle,
child: child ?? Text(title ?? ''),
),
);
}
}

View File

@ -25,7 +25,7 @@ class BrandOutlinedButton extends StatelessWidget {
child: child ?? child: child ??
Text( Text(
title ?? '', title ?? '',
style: Theme.of(context).textTheme.button?.copyWith( style: Theme.of(context).textTheme.labelLarge?.copyWith(
color: Theme.of(context).colorScheme.primary, color: Theme.of(context).colorScheme.primary,
), ),
), ),

View File

@ -76,7 +76,7 @@ class _BackupDetailsState extends State<BackupDetails>
), ),
title: Text( title: Text(
'backup.create_new'.tr(), 'backup.create_new'.tr(),
style: Theme.of(context).textTheme.headline6, style: Theme.of(context).textTheme.titleLarge,
), ),
), ),
if (backupStatus == BackupStatusEnum.backingUp) if (backupStatus == BackupStatusEnum.backingUp)
@ -85,7 +85,7 @@ class _BackupDetailsState extends State<BackupDetails>
'backup.creating'.tr( 'backup.creating'.tr(
args: [(backupProgress * 100).round().toString()], args: [(backupProgress * 100).round().toString()],
), ),
style: Theme.of(context).textTheme.headline6, style: Theme.of(context).textTheme.titleLarge,
), ),
subtitle: LinearProgressIndicator( subtitle: LinearProgressIndicator(
value: backupProgress, value: backupProgress,
@ -98,7 +98,7 @@ class _BackupDetailsState extends State<BackupDetails>
'backup.restoring'.tr( 'backup.restoring'.tr(
args: [(backupProgress * 100).round().toString()], args: [(backupProgress * 100).round().toString()],
), ),
style: Theme.of(context).textTheme.headline6, style: Theme.of(context).textTheme.titleLarge,
), ),
subtitle: LinearProgressIndicator( subtitle: LinearProgressIndicator(
backgroundColor: Colors.grey.withOpacity(0.2), backgroundColor: Colors.grey.withOpacity(0.2),
@ -112,7 +112,7 @@ class _BackupDetailsState extends State<BackupDetails>
), ),
title: Text( title: Text(
'backup.error_pending'.tr(), 'backup.error_pending'.tr(),
style: Theme.of(context).textTheme.headline6, style: Theme.of(context).textTheme.titleLarge,
), ),
), ),
], ],
@ -134,7 +134,7 @@ class _BackupDetailsState extends State<BackupDetails>
), ),
title: Text( title: Text(
'backup.restore'.tr(), 'backup.restore'.tr(),
style: Theme.of(context).textTheme.headline6, style: Theme.of(context).textTheme.titleLarge,
), ),
), ),
const Divider( const Divider(

View File

@ -3,7 +3,7 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:selfprivacy/logic/cubit/devices/devices_cubit.dart'; import 'package:selfprivacy/logic/cubit/devices/devices_cubit.dart';
import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart'; import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart';
import 'package:selfprivacy/ui/components/brand_button/filled_button.dart'; import 'package:selfprivacy/ui/components/brand_button/brand_button.dart';
import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart'; import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart';
class NewDeviceScreen extends StatelessWidget { class NewDeviceScreen extends StatelessWidget {
@ -71,7 +71,7 @@ class _KeyDisplay extends StatelessWidget {
], ],
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
FilledButton( BrandButton.filled(
child: Text( child: Text(
'basis.done'.tr(), 'basis.done'.tr(),
), ),

View File

@ -7,7 +7,6 @@ import 'package:selfprivacy/logic/common_enum/common_enum.dart';
import 'package:selfprivacy/logic/cubit/recovery_key/recovery_key_cubit.dart'; import 'package:selfprivacy/logic/cubit/recovery_key/recovery_key_cubit.dart';
import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart'; import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart';
import 'package:selfprivacy/ui/components/brand_button/brand_button.dart'; import 'package:selfprivacy/ui/components/brand_button/brand_button.dart';
import 'package:selfprivacy/ui/components/brand_button/filled_button.dart';
import 'package:selfprivacy/ui/components/brand_cards/filled_card.dart'; import 'package:selfprivacy/ui/components/brand_cards/filled_card.dart';
import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart'; import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart';
import 'package:selfprivacy/ui/pages/recovery_key/recovery_key_receiving.dart'; import 'package:selfprivacy/ui/pages/recovery_key/recovery_key_receiving.dart';
@ -104,8 +103,8 @@ class _RecoveryKeyContentState extends State<RecoveryKeyContent> {
}, },
), ),
if (!_isConfigurationVisible && !keyStatus.isValid && keyStatus.exists) if (!_isConfigurationVisible && !keyStatus.isValid && keyStatus.exists)
FilledButton( BrandButton.filled(
title: 'recovery_key.key_replace_button'.tr(), child: Text('recovery_key.key_replace_button'.tr()),
onPressed: () { onPressed: () {
setState(() { setState(() {
_isConfigurationVisible = true; _isConfigurationVisible = true;
@ -393,12 +392,11 @@ class _RecoveryKeyConfigurationState extends State<RecoveryKeyConfiguration> {
secondChild: Container(), secondChild: Container(),
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
FilledButton( BrandButton.filled(
title: 'recovery_key.key_receive_button'.tr(), onPressed: !_isAmountError && !_isExpirationError && !_isLoading
disabled: _isAmountError || _isExpirationError || _isLoading,
onPressed: !_isAmountError && !_isExpirationError
? _generateRecoveryToken ? _generateRecoveryToken
: null, : null,
child: Text('recovery_key.key_receive_button'.tr()),
), ),
], ],
); );

View File

@ -1,6 +1,6 @@
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:selfprivacy/ui/components/brand_button/filled_button.dart'; import 'package:selfprivacy/ui/components/brand_button/brand_button.dart';
import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart'; import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart';
import 'package:selfprivacy/ui/components/info_box/info_box.dart'; import 'package:selfprivacy/ui/components/info_box/info_box.dart';
@ -33,8 +33,8 @@ class RecoveryKeyReceiving extends StatelessWidget {
text: 'recovery_key.key_receiving_info'.tr(), text: 'recovery_key.key_receiving_info'.tr(),
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
FilledButton( BrandButton.filled(
title: 'recovery_key.key_receiving_done'.tr(), child: Text('recovery_key.key_receiving_done'.tr()),
onPressed: () { onPressed: () {
Navigator.of(context).popUntil((final route) => route.isFirst); Navigator.of(context).popUntil((final route) => route.isFirst);
}, },

View File

@ -2,7 +2,7 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:selfprivacy/logic/cubit/server_jobs/server_jobs_cubit.dart'; import 'package:selfprivacy/logic/cubit/server_jobs/server_jobs_cubit.dart';
import 'package:selfprivacy/logic/models/json/server_job.dart'; import 'package:selfprivacy/logic/models/json/server_job.dart';
import 'package:selfprivacy/ui/components/brand_button/filled_button.dart'; import 'package:selfprivacy/ui/components/brand_button/brand_button.dart';
import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart'; import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart';
import 'package:selfprivacy/ui/components/brand_linear_indicator/brand_linear_indicator.dart'; import 'package:selfprivacy/ui/components/brand_linear_indicator/brand_linear_indicator.dart';
import 'package:selfprivacy/ui/pages/root_route.dart'; import 'package:selfprivacy/ui/pages/root_route.dart';
@ -50,8 +50,8 @@ class _MigrationProcessPageState extends State<MigrationProcessPage> {
), ),
if (job.finishedAt != null) const SizedBox(height: 16), if (job.finishedAt != null) const SizedBox(height: 16),
if (job.finishedAt != null) if (job.finishedAt != null)
FilledButton( BrandButton.filled(
title: 'storage.migration_done'.tr(), child: Text('storage.migration_done'.tr()),
onPressed: () { onPressed: () {
Navigator.of(context).pushAndRemoveUntil( Navigator.of(context).pushAndRemoveUntil(
materialRoute(const RootPage()), materialRoute(const RootPage()),

View File

@ -5,7 +5,7 @@ import 'package:selfprivacy/logic/cubit/services/services_cubit.dart';
import 'package:selfprivacy/logic/models/disk_size.dart'; import 'package:selfprivacy/logic/models/disk_size.dart';
import 'package:selfprivacy/logic/models/service.dart'; import 'package:selfprivacy/logic/models/service.dart';
import 'package:selfprivacy/ui/components/brand_bottom_sheet/brand_bottom_sheet.dart'; import 'package:selfprivacy/ui/components/brand_bottom_sheet/brand_bottom_sheet.dart';
import 'package:selfprivacy/ui/components/brand_button/filled_button.dart'; import 'package:selfprivacy/ui/components/brand_button/brand_button.dart';
import 'package:selfprivacy/ui/components/brand_header/brand_header.dart'; import 'package:selfprivacy/ui/components/brand_header/brand_header.dart';
import 'package:selfprivacy/ui/components/info_box/info_box.dart'; import 'package:selfprivacy/ui/components/info_box/info_box.dart';
import 'package:selfprivacy/logic/models/disk_status.dart'; import 'package:selfprivacy/logic/models/disk_status.dart';
@ -163,8 +163,8 @@ class _ServicesMigrationPageState extends State<ServicesMigrationPage> {
), ),
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
FilledButton( BrandButton.filled(
title: 'storage.start_migration_button'.tr(), child: Text('storage.start_migration_button'.tr()),
onPressed: () { onPressed: () {
if (widget.isMigration) { if (widget.isMigration) {
context.read<ServerJobsCubit>().migrateToBinds( context.read<ServerJobsCubit>().migrateToBinds(

View File

@ -5,7 +5,7 @@ import 'package:selfprivacy/logic/cubit/provider_volumes/provider_volume_cubit.d
import 'package:selfprivacy/logic/cubit/server_volumes/server_volume_cubit.dart'; import 'package:selfprivacy/logic/cubit/server_volumes/server_volume_cubit.dart';
import 'package:selfprivacy/logic/models/disk_size.dart'; import 'package:selfprivacy/logic/models/disk_size.dart';
import 'package:selfprivacy/logic/models/price.dart'; import 'package:selfprivacy/logic/models/price.dart';
import 'package:selfprivacy/ui/components/brand_button/filled_button.dart'; import 'package:selfprivacy/ui/components/brand_button/brand_button.dart';
import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart'; import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart';
import 'package:selfprivacy/logic/models/disk_status.dart'; import 'package:selfprivacy/logic/models/disk_status.dart';
import 'package:selfprivacy/ui/pages/root_route.dart'; import 'package:selfprivacy/ui/pages/root_route.dart';
@ -146,9 +146,8 @@ class _ExtendingVolumePageState extends State<ExtendingVolumePage> {
}, },
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
FilledButton( BrandButton.filled(
title: 'storage.extend_volume_button.title'.tr(), onPressed: _isError || isAlreadyResizing
onPressed: _isError
? null ? null
: () { : () {
context.read<ApiProviderVolumeCubit>().resizeVolume( context.read<ApiProviderVolumeCubit>().resizeVolume(
@ -161,7 +160,7 @@ class _ExtendingVolumePageState extends State<ExtendingVolumePage> {
(final predicate) => false, (final predicate) => false,
); );
}, },
disabled: _isError || isAlreadyResizing, child: Text('storage.extend_volume_button.title'.tr()),
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
const Divider( const Divider(

View File

@ -7,7 +7,7 @@ import 'package:selfprivacy/logic/cubit/app_config_dependent/authentication_depe
import 'package:selfprivacy/logic/cubit/forms/setup/initializing/provider_form_cubit.dart'; import 'package:selfprivacy/logic/cubit/forms/setup/initializing/provider_form_cubit.dart';
import 'package:selfprivacy/logic/models/hive/server_details.dart'; import 'package:selfprivacy/logic/models/hive/server_details.dart';
import 'package:selfprivacy/ui/components/brand_bottom_sheet/brand_bottom_sheet.dart'; import 'package:selfprivacy/ui/components/brand_bottom_sheet/brand_bottom_sheet.dart';
import 'package:selfprivacy/ui/components/brand_button/filled_button.dart'; import 'package:selfprivacy/ui/components/brand_button/brand_button.dart';
import 'package:selfprivacy/ui/components/brand_button/outlined_button.dart'; import 'package:selfprivacy/ui/components/brand_button/outlined_button.dart';
import 'package:selfprivacy/ui/components/brand_cards/outlined_card.dart'; import 'package:selfprivacy/ui/components/brand_cards/outlined_card.dart';
import 'package:selfprivacy/ui/components/brand_md/brand_md.dart'; import 'package:selfprivacy/ui/components/brand_md/brand_md.dart';
@ -120,8 +120,8 @@ class ProviderInputDataPage extends StatelessWidget {
), ),
), ),
const SizedBox(height: 32), const SizedBox(height: 32),
FilledButton( BrandButton.filled(
title: 'basis.connect'.tr(), child: Text('basis.connect'.tr()),
onPressed: () => providerCubit.trySubmit(), onPressed: () => providerCubit.trySubmit(),
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
@ -238,8 +238,8 @@ class ProviderSelectionPage extends StatelessWidget {
style: Theme.of(context).textTheme.bodySmall, style: Theme.of(context).textTheme.bodySmall,
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
FilledButton( BrandButton.filled(
title: 'basis.select'.tr(), child: Text('basis.select'.tr()),
onPressed: () { onPressed: () {
serverInstallationCubit serverInstallationCubit
.setServerProviderType(ServerProvider.hetzner); .setServerProviderType(ServerProvider.hetzner);
@ -312,8 +312,8 @@ class ProviderSelectionPage extends StatelessWidget {
style: Theme.of(context).textTheme.bodySmall, style: Theme.of(context).textTheme.bodySmall,
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
FilledButton( BrandButton.filled(
title: 'basis.select'.tr(), child: Text('basis.select'.tr()),
onPressed: () { onPressed: () {
serverInstallationCubit serverInstallationCubit
.setServerProviderType(ServerProvider.digitalOcean); .setServerProviderType(ServerProvider.digitalOcean);

View File

@ -1,7 +1,7 @@
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:selfprivacy/logic/cubit/forms/setup/recovering/recovery_device_form_cubit.dart'; import 'package:selfprivacy/logic/cubit/forms/setup/recovering/recovery_device_form_cubit.dart';
import 'package:selfprivacy/ui/components/brand_button/filled_button.dart'; import 'package:selfprivacy/ui/components/brand_button/brand_button.dart';
import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart'; import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart';
import 'package:selfprivacy/utils/route_transitions/basic.dart'; import 'package:selfprivacy/utils/route_transitions/basic.dart';
import 'package:cubit_form/cubit_form.dart'; import 'package:cubit_form/cubit_form.dart';
@ -20,8 +20,8 @@ class RecoverByNewDeviceKeyInstruction extends StatelessWidget {
onBackButtonPressed: onBackButtonPressed:
context.read<ServerInstallationCubit>().revertRecoveryStep, context.read<ServerInstallationCubit>().revertRecoveryStep,
children: [ children: [
FilledButton( BrandButton.filled(
title: 'recovering.method_device_button'.tr(), child: Text('recovering.method_device_button'.tr()),
onPressed: () => Navigator.of(context) onPressed: () => Navigator.of(context)
.push(materialRoute(const RecoverByNewDeviceKeyInput())), .push(materialRoute(const RecoverByNewDeviceKeyInput())),
) )
@ -73,11 +73,11 @@ class RecoverByNewDeviceKeyInput extends StatelessWidget {
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
FilledButton( FilledButton(
title: 'basis.continue'.tr(),
onPressed: formCubitState.isSubmitting onPressed: formCubitState.isSubmitting
? null ? null
: () => : () =>
context.read<RecoveryDeviceFormCubit>().trySubmit(), context.read<RecoveryDeviceFormCubit>().trySubmit(),
child: Text('basis.continue'.tr()),
) )
], ],
); );

View File

@ -1,7 +1,7 @@
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:selfprivacy/logic/cubit/forms/setup/recovering/recovery_device_form_cubit.dart'; import 'package:selfprivacy/logic/cubit/forms/setup/recovering/recovery_device_form_cubit.dart';
import 'package:selfprivacy/ui/components/brand_button/filled_button.dart'; import 'package:selfprivacy/ui/components/brand_button/brand_button.dart';
import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart'; import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart';
import 'package:selfprivacy/ui/components/brand_md/brand_md.dart'; import 'package:selfprivacy/ui/components/brand_md/brand_md.dart';
import 'package:cubit_form/cubit_form.dart'; import 'package:cubit_form/cubit_form.dart';
@ -35,8 +35,8 @@ class RecoverByOldTokenInstruction extends StatelessWidget {
fileName: instructionFilename, fileName: instructionFilename,
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
FilledButton( BrandButton.filled(
title: 'recovering.method_device_button'.tr(), child: Text('recovering.method_device_button'.tr()),
onPressed: () => context onPressed: () => context
.read<ServerInstallationCubit>() .read<ServerInstallationCubit>()
.selectRecoveryMethod(ServerRecoveryMethods.oldToken), .selectRecoveryMethod(ServerRecoveryMethods.oldToken),
@ -82,11 +82,11 @@ class RecoverByOldToken extends StatelessWidget {
), ),
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
FilledButton( BrandButton.filled(
title: 'basis.continue'.tr(),
onPressed: formCubitState.isSubmitting onPressed: formCubitState.isSubmitting
? null ? null
: () => context.read<RecoveryDeviceFormCubit>().trySubmit(), : () => context.read<RecoveryDeviceFormCubit>().trySubmit(),
child: Text('basis.continue'.tr()),
) )
], ],
); );

View File

@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
import 'package:selfprivacy/logic/cubit/forms/factories/field_cubit_factory.dart'; import 'package:selfprivacy/logic/cubit/forms/factories/field_cubit_factory.dart';
import 'package:selfprivacy/logic/cubit/forms/setup/recovering/recovery_device_form_cubit.dart'; import 'package:selfprivacy/logic/cubit/forms/setup/recovering/recovery_device_form_cubit.dart';
import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart'; import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart';
import 'package:selfprivacy/ui/components/brand_button/filled_button.dart'; import 'package:selfprivacy/ui/components/brand_button/brand_button.dart';
import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart'; import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart';
class RecoverByRecoveryKey extends StatelessWidget { class RecoverByRecoveryKey extends StatelessWidget {
@ -43,11 +43,11 @@ class RecoverByRecoveryKey extends StatelessWidget {
), ),
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
FilledButton( BrandButton.filled(
title: 'basis.continue'.tr(),
onPressed: formCubitState.isSubmitting onPressed: formCubitState.isSubmitting
? null ? null
: () => context.read<RecoveryDeviceFormCubit>().trySubmit(), : () => context.read<RecoveryDeviceFormCubit>().trySubmit(),
child: Text('basis.continue'.tr()),
) )
], ],
); );

View File

@ -2,7 +2,6 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:selfprivacy/logic/cubit/app_config_dependent/authentication_dependend_cubit.dart'; import 'package:selfprivacy/logic/cubit/app_config_dependent/authentication_dependend_cubit.dart';
import 'package:selfprivacy/logic/models/server_basic_info.dart'; import 'package:selfprivacy/logic/models/server_basic_info.dart';
import 'package:selfprivacy/ui/components/brand_button/filled_button.dart';
import 'package:selfprivacy/ui/components/brand_button/brand_button.dart'; import 'package:selfprivacy/ui/components/brand_button/brand_button.dart';
import 'package:selfprivacy/ui/components/brand_cards/filled_card.dart'; import 'package:selfprivacy/ui/components/brand_cards/filled_card.dart';
import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart'; import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart';
@ -70,7 +69,7 @@ class _RecoveryConfirmServerState extends State<RecoveryConfirmServer> {
Center( Center(
child: Text( child: Text(
'recovering.no_servers'.tr(), 'recovering.no_servers'.tr(),
style: Theme.of(context).textTheme.headline6, style: Theme.of(context).textTheme.titleLarge,
), ),
), ),
], ],
@ -97,8 +96,8 @@ class _RecoveryConfirmServerState extends State<RecoveryConfirmServer> {
server: server, server: server,
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
FilledButton( BrandButton.filled(
title: 'recovering.confirm_server_accept'.tr(), child: Text('recovering.confirm_server_accept'.tr()),
onPressed: () => _showConfirmationDialog(context, server), onPressed: () => _showConfirmationDialog(context, server),
), ),
const SizedBox(height: 16), const SizedBox(height: 16),

View File

@ -4,7 +4,7 @@ import 'package:flutter/material.dart';
import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart'; import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart';
import 'package:selfprivacy/logic/cubit/forms/factories/field_cubit_factory.dart'; import 'package:selfprivacy/logic/cubit/forms/factories/field_cubit_factory.dart';
import 'package:selfprivacy/logic/cubit/forms/setup/recovering/recovery_domain_form_cubit.dart'; import 'package:selfprivacy/logic/cubit/forms/setup/recovering/recovery_domain_form_cubit.dart';
import 'package:selfprivacy/ui/components/brand_button/filled_button.dart'; import 'package:selfprivacy/ui/components/brand_button/brand_button.dart';
import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart'; import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart';
import 'package:selfprivacy/ui/pages/root_route.dart'; import 'package:selfprivacy/ui/pages/root_route.dart';
import 'package:selfprivacy/ui/pages/setup/recovering/recover_by_old_token.dart'; import 'package:selfprivacy/ui/pages/setup/recovering/recover_by_old_token.dart';
@ -126,12 +126,12 @@ class SelectDomainToRecover extends StatelessWidget {
), ),
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
FilledButton( BrandButton.filled(
title: 'basis.continue'.tr(),
onPressed: formCubitState.isSubmitting onPressed: formCubitState.isSubmitting
? null ? null
: () => : () =>
context.read<RecoveryDomainFormCubit>().trySubmit(), context.read<RecoveryDomainFormCubit>().trySubmit(),
child: Text('basis.continue'.tr()),
) )
], ],
), ),

View File

@ -3,7 +3,6 @@ import 'package:flutter/material.dart';
import 'package:selfprivacy/config/brand_theme.dart'; import 'package:selfprivacy/config/brand_theme.dart';
import 'package:selfprivacy/logic/cubit/forms/setup/initializing/provider_form_cubit.dart'; import 'package:selfprivacy/logic/cubit/forms/setup/initializing/provider_form_cubit.dart';
import 'package:selfprivacy/ui/components/brand_bottom_sheet/brand_bottom_sheet.dart'; import 'package:selfprivacy/ui/components/brand_bottom_sheet/brand_bottom_sheet.dart';
import 'package:selfprivacy/ui/components/brand_button/filled_button.dart';
import 'package:selfprivacy/ui/components/brand_button/brand_button.dart'; import 'package:selfprivacy/ui/components/brand_button/brand_button.dart';
import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart'; import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart';
import 'package:cubit_form/cubit_form.dart'; import 'package:cubit_form/cubit_form.dart';
@ -45,11 +44,11 @@ class RecoveryServerProviderConnected extends StatelessWidget {
), ),
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
FilledButton( BrandButton.filled(
title: 'basis.continue'.tr(),
onPressed: formCubitState.isSubmitting onPressed: formCubitState.isSubmitting
? null ? null
: () => context.read<ProviderFormCubit>().trySubmit(), : () => context.read<ProviderFormCubit>().trySubmit(),
child: Text('basis.continue'.tr()),
), ),
const SizedBox(height: 16), const SizedBox(height: 16),
BrandButton.text( BrandButton.text(

View File

@ -5,14 +5,14 @@
import FlutterMacOS import FlutterMacOS
import Foundation import Foundation
import connectivity_plus_macos import connectivity_plus
import device_info_plus_macos import device_info_plus
import dynamic_color import dynamic_color
import flutter_secure_storage_macos import flutter_secure_storage_macos
import package_info import package_info
import path_provider_macos import path_provider_foundation
import share_plus_macos import share_plus
import shared_preferences_macos import shared_preferences_foundation
import url_launcher_macos import url_launcher_macos
import wakelock_macos import wakelock_macos

File diff suppressed because it is too large Load Diff

View File

@ -4,58 +4,58 @@ publish_to: 'none'
version: 0.8.0+17 version: 0.8.0+17
environment: environment:
sdk: '>=2.17.0 <3.0.0' sdk: '>=2.19.0 <3.0.0'
flutter: ">=3.0.0" flutter: ">=3.7.0"
dependencies: dependencies:
auto_size_text: ^3.0.0 auto_size_text: ^3.0.0
basic_utils: ^4.2.0 basic_utils: ^5.4.2
crypt: ^4.2.1 crypt: ^4.2.1
cubit_form: ^2.0.1 cubit_form: ^2.0.1
device_info_plus: ^4.0.1 device_info_plus: ^8.0.0
dio: ^4.0.4 dio: ^4.0.4
dynamic_color: ^1.5.4 dynamic_color: ^1.6.2
easy_localization: ^3.0.0 easy_localization: ^3.0.1
either_option: ^2.0.1-dev.1 either_option: ^2.0.1-dev.1
equatable: ^2.0.3 equatable: ^2.0.5
fl_chart: ^0.50.1 fl_chart: ^0.50.1
flutter: flutter:
sdk: flutter sdk: flutter
flutter_bloc: ^8.0.1 flutter_bloc: ^8.1.1
flutter_markdown: ^0.6.9 flutter_markdown: ^0.6.13+1
flutter_secure_storage: ^7.0.1 flutter_secure_storage: ^7.0.1
flutter_svg: ^1.1.4 flutter_svg: ^2.0.0+1
get_it: ^7.2.0 get_it: ^7.2.0
gql: ^0.13.1 gql: ^0.14.0
graphql: ^5.1.1 graphql: ^5.1.2
graphql_codegen: ^0.10.2 graphql_codegen: ^0.12.0-beta.7
graphql_flutter: ^5.1.0 graphql_flutter: ^5.1.2
hive: ^2.2.3 hive: ^2.2.3
hive_flutter: ^1.1.0 hive_flutter: ^1.1.0
http: ^0.13.5 http: ^0.13.5
intl: ^0.17.0 intl: ^0.17.0
ionicons: ^0.1.2 ionicons: ^0.2.2
json_annotation: ^4.6.0 json_annotation: ^4.8.0
local_auth: ^2.0.2 local_auth: ^2.1.3
material_color_utilities: ^0.1.5 material_color_utilities: ^0.2.0
modal_bottom_sheet: ^2.0.1 modal_bottom_sheet: ^3.0.0-pre
nanoid: ^1.0.0 nanoid: ^1.0.0
package_info: ^2.0.2 package_info: ^2.0.2
pretty_dio_logger: ^1.2.0-beta-1 pretty_dio_logger: ^1.2.0-beta-1
provider: ^6.0.2 provider: ^6.0.5
pub_semver: ^2.1.1 pub_semver: ^2.1.3
share_plus: ^4.0.4 share_plus: ^6.3.0
timezone: ^0.8.0 timezone: ^0.9.1
url_launcher: ^6.0.20 url_launcher: ^6.1.8
wakelock: ^0.6.1+1 wakelock: ^0.6.2
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
sdk: flutter sdk: flutter
build_runner: ^2.2.0 build_runner: ^2.3.3
flutter_launcher_icons: ^0.9.2 flutter_launcher_icons: ^0.9.2
hive_generator: ^1.1.3 hive_generator: ^2.0.0
json_serializable: ^6.3.1 json_serializable: ^6.6.1
flutter_lints: ^2.0.1 flutter_lints: ^2.0.1
flutter_icons: flutter_icons:

View File

@ -6,9 +6,11 @@
#include "generated_plugin_registrant.h" #include "generated_plugin_registrant.h"
#include <connectivity_plus_windows/connectivity_plus_windows_plugin.h> #include <connectivity_plus/connectivity_plus_windows_plugin.h>
#include <dynamic_color/dynamic_color_plugin_c_api.h> #include <dynamic_color/dynamic_color_plugin_c_api.h>
#include <flutter_secure_storage_windows/flutter_secure_storage_windows_plugin.h> #include <flutter_secure_storage_windows/flutter_secure_storage_windows_plugin.h>
#include <local_auth_windows/local_auth_plugin.h>
#include <share_plus/share_plus_windows_plugin_c_api.h>
#include <url_launcher_windows/url_launcher_windows.h> #include <url_launcher_windows/url_launcher_windows.h>
void RegisterPlugins(flutter::PluginRegistry* registry) { void RegisterPlugins(flutter::PluginRegistry* registry) {
@ -18,6 +20,10 @@ void RegisterPlugins(flutter::PluginRegistry* registry) {
registry->GetRegistrarForPlugin("DynamicColorPluginCApi")); registry->GetRegistrarForPlugin("DynamicColorPluginCApi"));
FlutterSecureStorageWindowsPluginRegisterWithRegistrar( FlutterSecureStorageWindowsPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin"));
LocalAuthPluginRegisterWithRegistrar(
registry->GetRegistrarForPlugin("LocalAuthPlugin"));
SharePlusWindowsPluginCApiRegisterWithRegistrar(
registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi"));
UrlLauncherWindowsRegisterWithRegistrar( UrlLauncherWindowsRegisterWithRegistrar(
registry->GetRegistrarForPlugin("UrlLauncherWindows")); registry->GetRegistrarForPlugin("UrlLauncherWindows"));
} }

View File

@ -3,9 +3,11 @@
# #
list(APPEND FLUTTER_PLUGIN_LIST list(APPEND FLUTTER_PLUGIN_LIST
connectivity_plus_windows connectivity_plus
dynamic_color dynamic_color
flutter_secure_storage_windows flutter_secure_storage_windows
local_auth_windows
share_plus
url_launcher_windows url_launcher_windows
) )