chore: Merge master into digital-ocean

routes-refactor
NaiJi ✨ 2022-10-26 20:41:45 +04:00
commit 93c58323b2
88 changed files with 159 additions and 176 deletions

View File

@ -16,7 +16,7 @@ import 'package:selfprivacy/logic/cubit/users/users_cubit.dart';
import 'package:selfprivacy/logic/cubit/provider_volumes/provider_volume_cubit.dart';
class BlocAndProviderConfig extends StatelessWidget {
const BlocAndProviderConfig({final super.key, this.child});
const BlocAndProviderConfig({super.key, this.child});
final Widget? child;

View File

@ -4,16 +4,4 @@ import 'package:flutter_bloc/flutter_bloc.dart';
class SimpleBlocObserver extends BlocObserver {
SimpleBlocObserver();
@override
void onError(
final BlocBase<dynamic> bloc,
final Object error,
final StackTrace stackTrace,
) {
// getIt<NavigationService>().showSnackBar(
// 'Bloc error: ${error.toString()}',
// );
super.onError(bloc, error, stackTrace);
}
}

View File

@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
class Localization extends StatelessWidget {
const Localization({
final super.key,
super.key,
this.child,
});

View File

@ -35,9 +35,9 @@ class GenericMutationResult {
class GenericJobMutationReturn extends GenericMutationResult {
GenericJobMutationReturn({
required final super.success,
required final super.code,
final super.message,
required super.success,
required super.code,
super.message,
this.job,
});
final ServerJob? job;

View File

@ -2,9 +2,9 @@ part of 'server.dart';
class UserMutationResult extends GenericMutationResult {
UserMutationResult({
required final super.success,
required final super.code,
final super.message,
required super.success,
required super.code,
super.message,
this.user,
});

View File

@ -2,9 +2,9 @@ part of 'server.dart';
class MigrateToBindsMutationReturn extends GenericMutationResult {
MigrateToBindsMutationReturn({
required final super.success,
required final super.code,
final super.message,
required super.success,
required super.code,
super.message,
this.jobUid,
});
final String? jobUid;

View File

@ -5,7 +5,6 @@ import 'dart:io';
import 'package:dio/dio.dart';
import 'package:selfprivacy/config/get_it_config.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_map.dart';
import 'package:selfprivacy/logic/common_enum/common_enum.dart';
import 'package:selfprivacy/logic/models/hive/backblaze_bucket.dart';
import 'package:selfprivacy/logic/models/hive/server_domain.dart';
import 'package:selfprivacy/logic/models/hive/user.dart';

View File

@ -3,7 +3,6 @@ import 'dart:async';
import 'package:cubit_form/cubit_form.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart';
import 'package:selfprivacy/logic/cubit/forms/validations/validations.dart';
class ProviderFormCubit extends FormCubit {
ProviderFormCubit(this.serverInstallationCubit) {

View File

@ -11,7 +11,7 @@ class UserFormCubit extends FormCubit {
UserFormCubit({
required this.jobsCubit,
required final FieldCubitFactory fieldFactory,
final this.initialUser,
this.initialUser,
}) {
if (initialUser == null) {
login = fieldFactory.createUserLoginField();

View File

@ -3,7 +3,6 @@ import 'package:selfprivacy/config/get_it_config.dart';
import 'package:selfprivacy/logic/api_maps/graphql_maps/server_api/server.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_creator.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/api_factory_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_api_settings.dart';
import 'package:selfprivacy/logic/api_maps/rest_maps/server_providers/server_provider_factory.dart';
import 'package:selfprivacy/logic/common_enum/common_enum.dart';
import 'package:selfprivacy/logic/cubit/app_config_dependent/authentication_dependend_cubit.dart';

View File

@ -14,11 +14,11 @@ class ServerJob {
required this.uid,
required this.updatedAt,
required this.createdAt,
final this.error,
final this.progress,
final this.result,
final this.statusText,
final this.finishedAt,
this.error,
this.progress,
this.result,
this.statusText,
this.finishedAt,
});
ServerJob.fromGraphQL(final Query$GetApiJobs$jobs$getJobs serverJob)

View File

@ -29,11 +29,11 @@ class ServerBasicInfoWithValidators extends ServerBasicInfo {
);
ServerBasicInfoWithValidators({
required final super.id,
required final super.name,
required final super.reverseDns,
required final super.ip,
required final super.created,
required super.id,
required super.name,
required super.reverseDns,
required super.ip,
required super.created,
required this.isIpValid,
required this.isReverseDnsValid,
});

View File

@ -7,6 +7,27 @@ import 'package:selfprivacy/logic/models/disk_size.dart';
import 'package:selfprivacy/logic/models/json/dns_records.dart';
class Service {
Service.fromGraphQL(final Query$AllServices$services$allServices service)
: this(
id: service.id,
displayName: service.displayName,
description: service.description,
isEnabled: service.isEnabled,
isRequired: service.isRequired,
isMovable: service.isMovable,
status: ServiceStatus.fromGraphQL(service.status),
storageUsage: ServiceStorageUsage(
used: DiskSize(byte: int.parse(service.storageUsage.usedSpace)),
volume: service.storageUsage.volume?.name,
),
// Decode the base64 encoded svg icon to text.
svgIcon: utf8.decode(base64.decode(service.svgIcon)),
dnsRecords: service.dnsRecords
?.map((final record) => DnsRecord.fromGraphQL(record))
.toList() ??
[],
url: service.url,
);
Service({
required this.id,
required this.displayName,
@ -40,28 +61,6 @@ class Service {
return '';
}
Service.fromGraphQL(final Query$AllServices$services$allServices service)
: this(
id: service.id,
displayName: service.displayName,
description: service.description,
isEnabled: service.isEnabled,
isRequired: service.isRequired,
isMovable: service.isMovable,
status: ServiceStatus.fromGraphQL(service.status),
storageUsage: ServiceStorageUsage(
used: DiskSize(byte: int.parse(service.storageUsage.usedSpace)),
volume: service.storageUsage.volume?.name,
),
// Decode the base64 encoded svg icon to text.
svgIcon: utf8.decode(base64.decode(service.svgIcon)),
dnsRecords: service.dnsRecords
?.map((final record) => DnsRecord.fromGraphQL(record))
.toList() ??
[],
url: service.url,
);
static Service empty = Service(
id: 'empty',
displayName: '',

View File

@ -60,7 +60,7 @@ class MyApp extends StatelessWidget {
const MyApp({
required this.lightThemeData,
required this.darkThemeData,
final super.key,
super.key,
});
final ThemeData lightThemeData;

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
class ActionButton extends StatelessWidget {
const ActionButton({
final super.key,
super.key,
this.text,
this.onPressed,
this.isRed = false,

View File

@ -2,10 +2,10 @@ import 'package:flutter/material.dart';
class BrandAlert extends AlertDialog {
BrandAlert({
final super.key,
super.key,
final String? title,
final String? contentText,
final super.actions,
super.actions,
}) : super(
title: title != null ? Text(title) : null,
content: title != null ? Text(contentText!) : null,

View File

@ -4,7 +4,7 @@ import 'package:selfprivacy/config/brand_colors.dart';
class BrandBottomSheet extends StatelessWidget {
const BrandBottomSheet({
required this.child,
final super.key,
super.key,
this.isExpended = false,
});

View File

@ -56,7 +56,7 @@ class BrandButton {
class IconTextButton extends StatelessWidget {
const IconTextButton({
final super.key,
super.key,
this.onPressed,
this.title,
this.icon,

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
class FilledButton extends StatelessWidget {
const FilledButton({
final super.key,
super.key,
this.onPressed,
this.title,
this.child,
@ -17,13 +17,13 @@ class FilledButton extends StatelessWidget {
@override
Widget build(final BuildContext context) {
final ButtonStyle enabledStyle = ElevatedButton.styleFrom(
onPrimary: Theme.of(context).colorScheme.onPrimary,
primary: Theme.of(context).colorScheme.primary,
foregroundColor: Theme.of(context).colorScheme.onPrimary,
backgroundColor: Theme.of(context).colorScheme.primary,
).copyWith(elevation: ButtonStyleButton.allOrNull(0.0));
final ButtonStyle disabledStyle = ElevatedButton.styleFrom(
onPrimary: Theme.of(context).colorScheme.onSurface.withAlpha(30),
primary: Theme.of(context).colorScheme.onSurface.withAlpha(98),
foregroundColor: Theme.of(context).colorScheme.onSurface.withAlpha(30),
backgroundColor: Theme.of(context).colorScheme.onSurface.withAlpha(98),
).copyWith(elevation: ButtonStyleButton.allOrNull(0.0));
return ConstrainedBox(

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
class BrandOutlinedButton extends StatelessWidget {
const BrandOutlinedButton({
final super.key,
super.key,
this.onPressed,
this.title,
this.child,

View File

@ -5,7 +5,7 @@ class SegmentedButtons extends StatelessWidget {
required this.isSelected,
required this.onPressed,
required this.titles,
final super.key,
super.key,
});
final List<bool> isSelected;

View File

@ -7,7 +7,7 @@ class FilledCard extends StatelessWidget {
this.tertiary = false,
this.error = false,
this.clipped = true,
final super.key,
super.key,
});
final Widget child;

View File

@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
class OutlinedCard extends StatelessWidget {
const OutlinedCard({
required this.child,
final super.key,
super.key,
});
final Widget child;

View File

@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
class BrandHeader extends StatelessWidget {
const BrandHeader({
final super.key,
super.key,
this.title = '',
this.hasBackButton = false,
this.onBackButtonPressed,

View File

@ -5,7 +5,7 @@ import 'package:selfprivacy/ui/helpers/widget_size.dart';
class BrandHeroScreen extends StatelessWidget {
const BrandHeroScreen({
required this.children,
final super.key,
super.key,
this.hasBackButton = true,
this.hasFlashButton = true,
this.heroIcon,
@ -82,7 +82,7 @@ class HeroSliverAppBar extends StatefulWidget {
required this.hasBackButton,
required this.onBackButtonPressed,
required this.heroIconWidget,
final super.key,
super.key,
});
final String heroTitle;

View File

@ -6,7 +6,7 @@ class BrandLinearIndicator extends StatelessWidget {
required this.color,
required this.backgroundColor,
required this.height,
final super.key,
super.key,
});
final double value;

View File

@ -6,7 +6,7 @@ class BrandLoader {
}
class HorizontalLoader extends StatelessWidget {
const HorizontalLoader({final super.key});
const HorizontalLoader({super.key});
@override
Widget build(final BuildContext context) => Column(

View File

@ -9,7 +9,7 @@ import 'package:url_launcher/url_launcher_string.dart';
class BrandMarkdown extends StatefulWidget {
const BrandMarkdown({
required this.fileName,
final super.key,
super.key,
});
final String fileName;

View File

@ -6,7 +6,7 @@ import 'package:selfprivacy/config/brand_colors.dart';
class BrandRadio extends StatelessWidget {
const BrandRadio({
required this.isChecked,
final super.key,
super.key,
});
final bool isChecked;

View File

@ -4,7 +4,7 @@ class BrandSwitch extends StatelessWidget {
const BrandSwitch({
required this.onChanged,
required this.value,
final super.key,
super.key,
});
final ValueChanged<bool> onChanged;

View File

@ -3,7 +3,7 @@ import 'package:flutter/material.dart';
import 'package:selfprivacy/ui/components/brand_icons/brand_icons.dart';
class BrandTabBar extends StatefulWidget {
const BrandTabBar({final super.key, this.controller});
const BrandTabBar({super.key, this.controller});
final TabController? controller;
@override

View File

@ -147,7 +147,7 @@ class BrandText extends StatelessWidget {
const BrandText(
this.text, {
required this.type,
final super.key,
super.key,
this.style,
this.overflow,
this.softWrap,

View File

@ -9,7 +9,7 @@ class BrandTimer extends StatefulWidget {
const BrandTimer({
required this.startDateTime,
required this.duration,
final super.key,
super.key,
});
final DateTime startDateTime;

View File

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
class BrandError extends StatelessWidget {
const BrandError({final super.key, this.error, this.stackTrace});
const BrandError({super.key, this.error, this.stackTrace});
final Object? error;
final StackTrace? stackTrace;

View File

@ -6,7 +6,7 @@ class IconStatusMask extends StatelessWidget {
const IconStatusMask({
required this.icon,
required this.status,
final super.key,
super.key,
});
final Widget icon;

View File

@ -4,7 +4,7 @@ class InfoBox extends StatelessWidget {
const InfoBox({
required this.text,
this.isWarning = false,
final super.key,
super.key,
});
final String text;

View File

@ -16,7 +16,7 @@ import 'package:selfprivacy/ui/components/brand_text/brand_text.dart';
import 'package:selfprivacy/ui/components/jobs_content/server_job_card.dart';
class JobsContent extends StatelessWidget {
const JobsContent({final super.key});
const JobsContent({super.key});
@override
Widget build(final BuildContext context) {
@ -89,7 +89,8 @@ class JobsContent extends StatelessWidget {
const SizedBox(width: 10),
ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Theme.of(context).colorScheme.errorContainer,
backgroundColor:
Theme.of(context).colorScheme.errorContainer,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
),

View File

@ -4,8 +4,8 @@ import 'package:selfprivacy/ui/components/brand_linear_indicator/brand_linear_in
class ServerJobCard extends StatelessWidget {
const ServerJobCard({
required final this.serverJob,
final super.key,
required this.serverJob,
super.key,
});
final ServerJob serverJob;

View File

@ -7,7 +7,7 @@ class ListTileOnSurfaceVariant extends StatelessWidget {
this.leadingIcon,
this.onTap,
this.disableSubtitleOverflow = false,
final super.key,
super.key,
});
final String title;

View File

@ -6,7 +6,7 @@ import 'package:selfprivacy/utils/route_transitions/basic.dart';
import 'package:easy_localization/easy_localization.dart';
class NotReadyCard extends StatelessWidget {
const NotReadyCard({final super.key});
const NotReadyCard({super.key});
@override
Widget build(final BuildContext context) => Container(

View File

@ -7,7 +7,7 @@ import 'package:selfprivacy/ui/components/jobs_content/jobs_content.dart';
import 'package:selfprivacy/ui/helpers/modals.dart';
class BrandFab extends StatefulWidget {
const BrandFab({final super.key});
const BrandFab({super.key});
@override
State<BrandFab> createState() => _BrandFabState();

View File

@ -8,7 +8,7 @@ class ProgressBar extends StatefulWidget {
const ProgressBar({
required this.steps,
required this.activeIndex,
final super.key,
super.key,
});
final int activeIndex;

View File

@ -6,9 +6,9 @@ import 'package:selfprivacy/logic/models/disk_status.dart';
class ServerStorageListItem extends StatelessWidget {
const ServerStorageListItem({
required this.volume,
final this.showIcon = true,
final this.dense = false,
final super.key,
this.showIcon = true,
this.dense = false,
super.key,
});
final DiskVolume volume;
@ -52,7 +52,7 @@ class ConsumptionListItem extends StatelessWidget {
this.rightSideText,
this.icon,
this.dense = false,
final super.key,
super.key,
});
final String title;

View File

@ -9,7 +9,7 @@ class ServiceMigrationListItem extends StatelessWidget {
required this.diskStatus,
required this.selectedVolume,
required this.onChange,
final super.key,
super.key,
});
final Service service;
@ -54,7 +54,7 @@ class ServiceMigrationListItem extends StatelessWidget {
class ServiceConsumptionTitle extends StatelessWidget {
const ServiceConsumptionTitle({
required this.service,
final super.key,
super.key,
});
final Service service;

View File

@ -8,7 +8,7 @@ class ServiceStorageConsumptionListItem extends StatelessWidget {
required this.storageConsumptionText,
required this.color,
required this.icon,
final super.key,
super.key,
});
final String title;

View File

@ -8,7 +8,7 @@ class SwitcherBlock extends StatelessWidget {
required this.child,
required this.isActive,
required this.onChange,
final super.key,
super.key,
});
final Widget child;

View File

@ -5,7 +5,7 @@ class WidgetSize extends StatefulWidget {
const WidgetSize({
required this.onChange,
required this.child,
final super.key,
super.key,
});
final Widget child;
final Function onChange;
@ -27,12 +27,11 @@ class _WidgetSizeState extends State<WidgetSize> {
var widgetKey = GlobalKey();
Size? oldSize;
void postFrameCallback(_) {
void postFrameCallback(final _) {
final context = widgetKey.currentContext;
if (context == null) {
return;
}
;
final newSize = context.size;
if (oldSize == newSize) {

View File

@ -16,7 +16,7 @@ import 'package:selfprivacy/ui/components/brand_text/brand_text.dart';
GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
class BackupDetails extends StatefulWidget {
const BackupDetails({final super.key});
const BackupDetails({super.key});
@override
State<BackupDetails> createState() => _BackupDetailsState();

View File

@ -11,7 +11,7 @@ import 'package:selfprivacy/ui/pages/devices/new_device.dart';
import 'package:selfprivacy/utils/route_transitions/basic.dart';
class DevicesScreen extends StatefulWidget {
const DevicesScreen({final super.key});
const DevicesScreen({super.key});
@override
State<DevicesScreen> createState() => _DevicesScreenState();

View File

@ -7,7 +7,7 @@ import 'package:selfprivacy/ui/components/brand_button/filled_button.dart';
import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart';
class NewDeviceScreen extends StatelessWidget {
const NewDeviceScreen({final super.key});
const NewDeviceScreen({super.key});
@override
Widget build(final BuildContext context) => BrandHeroScreen(

View File

@ -8,7 +8,7 @@ import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.da
import 'package:selfprivacy/ui/components/brand_icons/brand_icons.dart';
class DnsDetailsPage extends StatefulWidget {
const DnsDetailsPage({final super.key});
const DnsDetailsPage({super.key});
@override
State<DnsDetailsPage> createState() => _DnsDetailsPageState();

View File

@ -7,7 +7,7 @@ import 'package:package_info/package_info.dart';
import 'package:easy_localization/easy_localization.dart';
class AboutApplicationPage extends StatelessWidget {
const AboutApplicationPage({final super.key});
const AboutApplicationPage({super.key});
@override
Widget build(final BuildContext context) => SafeArea(

View File

@ -5,7 +5,7 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:selfprivacy/ui/components/brand_md/brand_md.dart';
class AboutUsPage extends StatelessWidget {
const AboutUsPage({final super.key});
const AboutUsPage({super.key});
@override
Widget build(final BuildContext context) => SafeArea(

View File

@ -12,7 +12,7 @@ import 'package:selfprivacy/utils/named_font_weight.dart';
import 'package:easy_localization/easy_localization.dart';
class AppSettingsPage extends StatefulWidget {
const AppSettingsPage({final super.key});
const AppSettingsPage({super.key});
@override
State<AppSettingsPage> createState() => _AppSettingsPageState();
@ -80,7 +80,7 @@ class _AppSettingsPageState extends State<AppSettingsPage> {
const SizedBox(width: 5),
ElevatedButton(
style: ElevatedButton.styleFrom(
primary: BrandColors.red1,
backgroundColor: BrandColors.red1,
),
child: Text(
'basis.reset'.tr(),
@ -145,7 +145,7 @@ class _AppSettingsPageState extends State<AppSettingsPage> {
const SizedBox(width: 5),
ElevatedButton(
style: ElevatedButton.styleFrom(
primary: BrandColors.red1,
backgroundColor: BrandColors.red1,
),
onPressed: isDisabled
? null

View File

@ -8,7 +8,7 @@ import 'package:selfprivacy/logic/models/message.dart';
import 'package:selfprivacy/ui/components/brand_header/brand_header.dart';
class Console extends StatefulWidget {
const Console({final super.key});
const Console({super.key});
@override
State<Console> createState() => _ConsoleState();

View File

@ -23,7 +23,7 @@ import 'package:selfprivacy/ui/pages/more/console.dart';
import 'package:selfprivacy/ui/pages/more/about_application.dart';
class MorePage extends StatelessWidget {
const MorePage({final super.key});
const MorePage({super.key});
@override
Widget build(final BuildContext context) {

View File

@ -6,7 +6,7 @@ import 'package:selfprivacy/utils/route_transitions/basic.dart';
import 'package:easy_localization/easy_localization.dart';
class OnboardingPage extends StatefulWidget {
const OnboardingPage({required this.nextPage, final super.key});
const OnboardingPage({required this.nextPage, super.key});
final Widget nextPage;
@override

View File

@ -18,7 +18,7 @@ import 'package:selfprivacy/utils/route_transitions/basic.dart';
GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
class ProvidersPage extends StatefulWidget {
const ProvidersPage({final super.key});
const ProvidersPage({super.key});
@override
State<ProvidersPage> createState() => _ProvidersPageState();
@ -119,11 +119,11 @@ class _ProvidersPageState extends State<ProvidersPage> {
class _Card extends StatelessWidget {
const _Card({
required final this.state,
required final this.icon,
required final this.title,
required final this.subtitle,
final this.onTap,
required this.state,
required this.icon,
required this.title,
required this.subtitle,
this.onTap,
});
final Function()? onTap;

View File

@ -14,7 +14,7 @@ import 'package:selfprivacy/ui/pages/recovery_key/recovery_key_receiving.dart';
import 'package:selfprivacy/utils/route_transitions/basic.dart';
class RecoveryKey extends StatefulWidget {
const RecoveryKey({final super.key});
const RecoveryKey({super.key});
@override
State<RecoveryKey> createState() => _RecoveryKeyState();
@ -61,7 +61,7 @@ class _RecoveryKeyState extends State<RecoveryKey> {
}
class RecoveryKeyContent extends StatefulWidget {
const RecoveryKeyContent({final super.key});
const RecoveryKeyContent({super.key});
@override
State<RecoveryKeyContent> createState() => _RecoveryKeyContentState();
@ -107,7 +107,7 @@ class _RecoveryKeyContentState extends State<RecoveryKeyContent> {
}
class RecoveryKeyStatusCard extends StatelessWidget {
const RecoveryKeyStatusCard({required this.isValid, final super.key});
const RecoveryKeyStatusCard({required this.isValid, super.key});
final bool isValid;
@ -144,7 +144,7 @@ class RecoveryKeyStatusCard extends StatelessWidget {
}
class RecoveryKeyInformation extends StatelessWidget {
const RecoveryKeyInformation({required this.state, final super.key});
const RecoveryKeyInformation({required this.state, super.key});
final RecoveryKeyState state;
@ -201,7 +201,7 @@ class RecoveryKeyInformation extends StatelessWidget {
}
class RecoveryKeyConfiguration extends StatefulWidget {
const RecoveryKeyConfiguration({final super.key});
const RecoveryKeyConfiguration({super.key});
@override
State<StatefulWidget> createState() => _RecoveryKeyConfigurationState();

View File

@ -5,7 +5,7 @@ import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.da
import 'package:selfprivacy/ui/components/info_box/info_box.dart';
class RecoveryKeyReceiving extends StatelessWidget {
const RecoveryKeyReceiving({required this.recoveryKey, final super.key});
const RecoveryKeyReceiving({required this.recoveryKey, super.key});
final String recoveryKey;

View File

@ -9,7 +9,7 @@ import 'package:selfprivacy/ui/pages/users/users.dart';
import 'package:selfprivacy/ui/components/pre_styled_buttons/flash_fab.dart';
class RootPage extends StatefulWidget {
const RootPage({final super.key});
const RootPage({super.key});
@override
State<RootPage> createState() => _RootPageState();

View File

@ -164,7 +164,7 @@ class Legend extends StatelessWidget {
const Legend({
required this.color,
required this.text,
final super.key,
super.key,
});
final String text;

View File

@ -10,7 +10,7 @@ class CpuChart extends StatelessWidget {
required this.data,
required this.period,
required this.start,
final super.key,
super.key,
});
final List<TimeSeriesData> data;

View File

@ -13,7 +13,7 @@ class NetworkChart extends StatelessWidget {
required this.listData,
required this.period,
required this.start,
final super.key,
super.key,
});
final List<List<TimeSeriesData>> listData;

View File

@ -34,7 +34,7 @@ part 'time_zone/time_zone.dart';
var navigatorKey = GlobalKey<NavigatorState>();
class ServerDetailsScreen extends StatefulWidget {
const ServerDetailsScreen({final super.key});
const ServerDetailsScreen({super.key});
@override
State<ServerDetailsScreen> createState() => _ServerDetailsScreenState();

View File

@ -7,7 +7,7 @@ final List<Location> locations = timeZoneDatabase.locations.values.toList()
);
class SelectTimezone extends StatefulWidget {
const SelectTimezone({final super.key});
const SelectTimezone({super.key});
@override
State<SelectTimezone> createState() => _SelectTimezoneState();
@ -117,7 +117,9 @@ class _SelectTimezoneState extends State<SelectTimezone> {
);
MapEntry<int, Container> locationToListTile(
final int key, final Location location) {
final int key,
final Location location,
) {
final duration = Duration(milliseconds: location.currentTimeZone.offset);
final area = location.currentTimeZone.abbreviation
.replaceAll(RegExp(r'[\d+()-]'), '');

View File

@ -9,9 +9,7 @@ import 'package:selfprivacy/ui/pages/root_route.dart';
import 'package:selfprivacy/utils/route_transitions/basic.dart';
class MigrationProcessPage extends StatefulWidget {
const MigrationProcessPage({
final super.key,
});
const MigrationProcessPage({super.key});
@override
State<MigrationProcessPage> createState() => _MigrationProcessPageState();

View File

@ -21,7 +21,7 @@ class ServicesMigrationPage extends StatefulWidget {
required this.services,
required this.diskStatus,
required this.isMigration,
final super.key,
super.key,
});
final DiskStatus diskStatus;

View File

@ -15,7 +15,7 @@ class ExtendingVolumePage extends StatefulWidget {
const ExtendingVolumePage({
required this.diskVolumeToResize,
required this.diskStatus,
final super.key,
super.key,
});
final DiskVolume diskVolumeToResize;

View File

@ -12,7 +12,10 @@ import 'package:selfprivacy/ui/components/storage_list_items/server_storage_list
import 'package:selfprivacy/utils/route_transitions/basic.dart';
class ServerStoragePage extends StatefulWidget {
const ServerStoragePage({required this.diskStatus, final super.key});
const ServerStoragePage({
required this.diskStatus,
super.key,
});
final DiskStatus diskStatus;
@ -75,7 +78,7 @@ class ServerStorageSection extends StatelessWidget {
required this.volume,
required this.diskStatus,
required this.services,
final super.key,
super.key,
});
final DiskVolume volume;
@ -120,7 +123,7 @@ class ServerConsumptionListTile extends StatelessWidget {
const ServerConsumptionListTile({
required this.service,
required this.volume,
final super.key,
super.key,
});
final Service service;

View File

@ -10,8 +10,8 @@ import 'package:selfprivacy/utils/route_transitions/basic.dart';
class StorageCard extends StatelessWidget {
const StorageCard({
required final this.diskStatus,
final super.key,
required this.diskStatus,
super.key,
});
final DiskStatus diskStatus;

View File

@ -1,7 +1,6 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:selfprivacy/logic/common_enum/common_enum.dart';
import 'package:selfprivacy/logic/cubit/client_jobs/client_jobs_cubit.dart';
import 'package:selfprivacy/logic/cubit/server_volumes/server_volume_cubit.dart';
import 'package:selfprivacy/logic/cubit/services/services_cubit.dart';
@ -14,7 +13,7 @@ import 'package:selfprivacy/utils/route_transitions/basic.dart';
import 'package:url_launcher/url_launcher.dart';
class ServicePage extends StatefulWidget {
const ServicePage({required this.serviceId, final super.key});
const ServicePage({required this.serviceId, super.key});
final String serviceId;
@ -147,7 +146,7 @@ class _ServicePageState extends State<ServicePage> {
class ServiceStatusCard extends StatelessWidget {
const ServiceStatusCard({
required this.status,
final super.key,
super.key,
});
final ServiceStatus status;

View File

@ -3,7 +3,6 @@ import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:selfprivacy/config/brand_theme.dart';
import 'package:selfprivacy/logic/common_enum/common_enum.dart';
import 'package:selfprivacy/logic/cubit/server_installation/server_installation_cubit.dart';
import 'package:selfprivacy/logic/cubit/client_jobs/client_jobs_cubit.dart';
import 'package:selfprivacy/logic/cubit/services/services_cubit.dart';
@ -31,7 +30,7 @@ const switchableServices = [
];
class ServicesPage extends StatefulWidget {
const ServicesPage({final super.key});
const ServicesPage({super.key});
@override
State<ServicesPage> createState() => _ServicesPageState();

View File

@ -23,9 +23,7 @@ import 'package:selfprivacy/ui/pages/setup/recovering/recovery_routing.dart';
import 'package:selfprivacy/utils/route_transitions/basic.dart';
class InitializingPage extends StatelessWidget {
const InitializingPage({
super.key,
});
const InitializingPage({super.key});
@override
Widget build(final BuildContext context) {

View File

@ -9,7 +9,7 @@ import 'package:selfprivacy/logic/cubit/server_installation/server_installation_
import 'package:selfprivacy/logic/cubit/forms/factories/field_cubit_factory.dart';
class RecoverByNewDeviceKeyInstruction extends StatelessWidget {
const RecoverByNewDeviceKeyInstruction({final super.key});
const RecoverByNewDeviceKeyInstruction({super.key});
@override
Widget build(final BuildContext context) => BrandHeroScreen(
@ -30,7 +30,7 @@ class RecoverByNewDeviceKeyInstruction extends StatelessWidget {
}
class RecoverByNewDeviceKeyInput extends StatelessWidget {
const RecoverByNewDeviceKeyInput({final super.key});
const RecoverByNewDeviceKeyInput({super.key});
@override
Widget build(final BuildContext context) {

View File

@ -12,7 +12,7 @@ class RecoverByOldTokenInstruction extends StatelessWidget {
@override
const RecoverByOldTokenInstruction({
required this.instructionFilename,
final super.key,
super.key,
});
@override
@ -49,7 +49,7 @@ class RecoverByOldTokenInstruction extends StatelessWidget {
}
class RecoverByOldToken extends StatelessWidget {
const RecoverByOldToken({final super.key});
const RecoverByOldToken({super.key});
@override
Widget build(final BuildContext context) {

View File

@ -8,7 +8,7 @@ import 'package:selfprivacy/ui/components/brand_button/filled_button.dart';
import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart';
class RecoverByRecoveryKey extends StatelessWidget {
const RecoverByRecoveryKey({final super.key});
const RecoverByRecoveryKey({super.key});
@override
Widget build(final BuildContext context) {

View File

@ -10,7 +10,7 @@ import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.da
import 'package:selfprivacy/ui/components/brand_md/brand_md.dart';
class RecoveryConfirmBackblaze extends StatelessWidget {
const RecoveryConfirmBackblaze({final super.key});
const RecoveryConfirmBackblaze({super.key});
@override
Widget build(final BuildContext context) {

View File

@ -10,7 +10,7 @@ import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.da
import 'package:selfprivacy/ui/components/brand_md/brand_md.dart';
class RecoveryConfirmCloudflare extends StatelessWidget {
const RecoveryConfirmCloudflare({final super.key});
const RecoveryConfirmCloudflare({super.key});
@override
Widget build(final BuildContext context) {

View File

@ -8,7 +8,7 @@ import 'package:selfprivacy/ui/components/brand_cards/filled_card.dart';
import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.dart';
class RecoveryConfirmServer extends StatefulWidget {
const RecoveryConfirmServer({final super.key});
const RecoveryConfirmServer({super.key});
@override
State<RecoveryConfirmServer> createState() => _RecoveryConfirmServerState();
@ -265,7 +265,7 @@ class IsValidStringDisplay extends StatelessWidget {
required this.isValid,
required this.textIfValid,
required this.textIfInvalid,
final super.key,
super.key,
});
final bool isValid;

View File

@ -11,7 +11,7 @@ import 'package:selfprivacy/logic/cubit/server_installation/server_installation_
import 'package:selfprivacy/ui/components/brand_md/brand_md.dart';
class RecoveryHetznerConnected extends StatelessWidget {
const RecoveryHetznerConnected({final super.key});
const RecoveryHetznerConnected({super.key});
@override
Widget build(final BuildContext context) {

View File

@ -9,7 +9,7 @@ import 'package:selfprivacy/ui/pages/setup/recovering/recover_by_old_token.dart'
import 'package:selfprivacy/utils/route_transitions/basic.dart';
class RecoveryMethodSelect extends StatelessWidget {
const RecoveryMethodSelect({final super.key});
const RecoveryMethodSelect({super.key});
@override
Widget build(final BuildContext context) => BrandHeroScreen(
@ -56,7 +56,7 @@ class RecoveryMethodSelect extends StatelessWidget {
}
class RecoveryFallbackMethodSelect extends StatelessWidget {
const RecoveryFallbackMethodSelect({final super.key});
const RecoveryFallbackMethodSelect({super.key});
@override
Widget build(final BuildContext context) =>

View File

@ -18,7 +18,7 @@ import 'package:selfprivacy/ui/pages/setup/recovering/recovery_method_select.dar
import 'package:selfprivacy/utils/route_transitions/basic.dart';
class RecoveryRouting extends StatelessWidget {
const RecoveryRouting({final super.key});
const RecoveryRouting({super.key});
@override
Widget build(final BuildContext context) {
@ -77,7 +77,7 @@ class RecoveryRouting extends StatelessWidget {
}
class SelectDomainToRecover extends StatelessWidget {
const SelectDomainToRecover({final super.key});
const SelectDomainToRecover({super.key});
@override
Widget build(final BuildContext context) {

View File

@ -1,7 +1,7 @@
part of 'users.dart';
class AddUserFab extends StatelessWidget {
const AddUserFab({final super.key});
const AddUserFab({super.key});
@override
Widget build(final BuildContext context) => FloatingActionButton.small(

View File

@ -1,7 +1,7 @@
part of 'users.dart';
class NewUser extends StatelessWidget {
const NewUser({final super.key});
const NewUser({super.key});
@override
Widget build(final BuildContext context) {

View File

@ -3,7 +3,7 @@ part of 'users.dart';
class ResetPassword extends StatelessWidget {
const ResetPassword({
required this.user,
final super.key,
super.key,
});
final User user;

View File

@ -3,7 +3,7 @@ part of 'users.dart';
class UserDetails extends StatelessWidget {
const UserDetails({
required this.login,
final super.key,
super.key,
});
final String login;
@ -249,7 +249,7 @@ class _SshKeysCard extends StatelessWidget {
}
class NewSshKey extends StatelessWidget {
const NewSshKey(this.user, {final super.key});
const NewSshKey(this.user, {super.key});
final User user;
@override

View File

@ -34,7 +34,7 @@ part 'add_user_fab.dart';
part 'reset_password.dart';
class UsersPage extends StatelessWidget {
const UsersPage({final super.key});
const UsersPage({super.key});
@override
Widget build(final BuildContext context) {