]> git.proxmox.com Git - flutter/pve_flutter_frontend.git/commitdiff
tree-wide: various smaller auto-lint fixes
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Wed, 10 Apr 2024 06:27:12 +0000 (08:27 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 11 Apr 2024 10:37:44 +0000 (12:37 +0200)
using `dart fix --apply` with the following codes:
- prefer_interpolation_to_compose_strings
- unnecessary_new
- use_super_parameters
- sort_child_properties_last
- unnecessary_string_interpolations
- use_key_in_widget_constructors
- curly_braces_in_flow_control_structures
- prefer_const_constructors_in_immutables
- invalid_null_aware_operator

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
61 files changed:
lib/bloc/pve_bridge_selector_bloc.dart
lib/bloc/pve_guest_id_selector_bloc.dart
lib/bloc/pve_guest_os_selector_bloc.dart
lib/bloc/pve_migrate_bloc.dart
lib/bloc/pve_node_selector_bloc.dart
lib/bloc/pve_vm_name_bloc.dart
lib/main.dart
lib/pages/404_page.dart
lib/pages/main_layout_slim.dart
lib/states/pve_migrate_state.dart
lib/utils/dot_indicator.dart
lib/utils/proxmox_layout_builder.dart
lib/utils/renderers.dart
lib/widgets/cluster_status_widget.dart
lib/widgets/firstWelcomeScreen/pve_welcome_common.dart
lib/widgets/firstWelcomeScreen/pve_welcome_faq.dart
lib/widgets/firstWelcomeScreen/pve_welcome_last.dart
lib/widgets/firstWelcomeScreen/pve_welcome_logo.dart
lib/widgets/firstWelcomeScreen/pve_welcome_ssl_hint.dart
lib/widgets/proxmox_capacity_indicator.dart
lib/widgets/proxmox_gauge_chart.dart
lib/widgets/proxmox_heartbeat_indicator.dart
lib/widgets/proxmox_stream_builder_widget.dart
lib/widgets/proxmox_stream_listener.dart
lib/widgets/proxmox_tree_widget.dart
lib/widgets/pve_action_card_widget.dart
lib/widgets/pve_bridge_selector_widget.dart
lib/widgets/pve_cd_selector_widget.dart
lib/widgets/pve_config_switch_list_tile.dart
lib/widgets/pve_console_menu_widget.dart
lib/widgets/pve_console_widget.dart
lib/widgets/pve_file_selector_widget.dart
lib/widgets/pve_first_welcome_screen.dart
lib/widgets/pve_guest_backup_widget.dart
lib/widgets/pve_guest_icon_widget.dart
lib/widgets/pve_guest_id_selector_widget.dart
lib/widgets/pve_guest_migrate_widget.dart
lib/widgets/pve_guest_migration_connector_widget.dart
lib/widgets/pve_guest_os_selector_widget.dart
lib/widgets/pve_guest_overview_header.dart
lib/widgets/pve_help_icon_button_widget.dart
lib/widgets/pve_lxc_options_widget.dart
lib/widgets/pve_lxc_overview.dart
lib/widgets/pve_lxc_power_settings_widget.dart
lib/widgets/pve_main_navigation_drawer.dart
lib/widgets/pve_network_model_selector.dart
lib/widgets/pve_node_overview.dart
lib/widgets/pve_node_selector_widget.dart
lib/widgets/pve_qemu_options_widget.dart
lib/widgets/pve_qemu_overview.dart
lib/widgets/pve_qemu_power_settings_widget.dart
lib/widgets/pve_resource_data_card_widget.dart
lib/widgets/pve_resource_overview_widget.dart
lib/widgets/pve_resource_status_chip_widget.dart
lib/widgets/pve_rrd_chart_widget.dart
lib/widgets/pve_splash_screen.dart
lib/widgets/pve_storage_selector_widget.dart
lib/widgets/pve_subscription_alert_dialog.dart
lib/widgets/pve_task_log_expansiontile_widget.dart
lib/widgets/pve_task_log_widget.dart
lib/widgets/pve_vm_name_widget.dart

index 728525bb23af0f0a3ccbe61a9db3f129fce9758e..00ddbcd8783813965afc71d839094d18b0f767fa 100644 (file)
@@ -33,7 +33,7 @@ class PveBridgeSelectorBloc
           await apiClient.getNodeNetwork(targetNode, type: bridgeType);
       yield PveBridgeSelectorState(
           bridges: bridges,
-          selectedBridge: bridges?.first,
+          selectedBridge: bridges.first,
           error: bridges.isEmpty ? "No bridges available" : null);
     }
 
index b93a80aa54434002c628cf4366254edfb2d75a63..ba726aeb7664e95f5d6c4b6b4fe672a14539f2e4 100644 (file)
@@ -68,6 +68,5 @@ class OnChanged extends PveGuestIdSelectorEvent {
 }
 
 class GuestIdSelectorState extends PveFormFieldState<String?> {
-  GuestIdSelectorState({String? value, String? errorText})
-      : super(value: value, errorText: errorText);
+  GuestIdSelectorState({super.value, super.errorText});
 }
index e222150898055cf53410725908cbc7f370fe567d..b0e42d92a762d0469f38e32799a77c86661a9576 100644 (file)
@@ -38,8 +38,7 @@ class PveGuestOsSelectorBloc
 }
 
 class PveGuestOsSelectorState extends PveFormFieldState<OSType?> {
-  PveGuestOsSelectorState({OSType? value, String? errorText})
-      : super(value: value, errorText: errorText);
+  PveGuestOsSelectorState({super.value, super.errorText});
 
   PveGuestOsSelectorState copyWith(
       {String? os, OSType? value, String? errorText}) {
index edf815b8be34feaab38ac6e8e4f689ef689f431a..9cab43489ec9ef7782d4cdc687f8bed35ba17960 100644 (file)
@@ -115,7 +115,7 @@ class PveMigrateBloc extends ProxmoxBaseBloc<PveMigrateEvent, PveMigrateState> {
     qPreconditions.localDisks!.forEach((d) {
       var disk = d.asMap;
       if (disk['cdrom'] == 1) {
-        if (disk['volid'].contains('vm-' + guestID + '-cloudinit')) {
+        if (disk['volid'].contains('vm-$guestID-cloudinit')) {
           if (qPreconditions.running!) {
             preconditions.add(PveMigrateCondition((b) => b
               ..severity = PveMigrateSeverity.error
@@ -132,8 +132,8 @@ class PveMigrateBloc extends ProxmoxBaseBloc<PveMigrateEvent, PveMigrateState> {
       } else {
         preconditions.add(PveMigrateCondition((b) => b
           ..severity = PveMigrateSeverity.warning
-          ..message = "Migration with local disk might take long: " +
-              Renderers.formatSize(disk['size'])));
+          ..message =
+              "Migration with local disk might take long: ${Renderers.formatSize(disk['size'])}"));
       }
     });
 
index 4e6d274f64ceee371dcb4ffe6c6376fae37db5f6..fdfa6ae9f7988c93a445240d66851535fccc5096 100644 (file)
@@ -51,8 +51,9 @@ class PveNodeSelectorBloc
 
   Future<List<PveNodesModel>> getNodes(bool onlyOnline) async {
     var nodes = await apiClient.getNodes();
-    if (onlyOnline)
+    if (onlyOnline) {
       nodes = nodes.where((node) => node.status == "online").toList();
+    }
     nodes.sort((a, b) => a.nodeName.compareTo(b.nodeName));
     return nodes;
   }
index d3deb86e3903cf36596cd016a3fc2da2df2a06de..3d09769107e37ba5012e9da85996df804f749b3f 100644 (file)
@@ -26,6 +26,5 @@ class OnChange extends PveVmNameEvent {
 }
 
 class PveVmNameState extends PveFormFieldState<String?> {
-  PveVmNameState({String? value, String? errorText})
-      : super(value: value, errorText: errorText);
+  PveVmNameState({super.value, super.errorText});
 }
index 46c1f417474fa6976b47ff498034e27063f35f11..9c700a14f741e020e15a3a9ccc7ac40336366561 100644 (file)
@@ -79,9 +79,8 @@ class MyApp extends StatelessWidget {
   final SharedPreferences sharedPreferences;
   final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
 
-  MyApp({Key? key, this.authbloc, required this.sharedPreferences})
-      : assert(sharedPreferences != null),
-        super(key: key);
+  MyApp({super.key, this.authbloc, required this.sharedPreferences})
+      : assert(sharedPreferences != null);
 
   @override
   Widget build(BuildContext context) {
index 7f539b14429197412a673de48bda0bbe5392035b..7ba065de8899242ad8f7997c9f79abb6e5542d04 100644 (file)
@@ -1,6 +1,8 @@
 import 'package:flutter/material.dart';
 
 class NotFoundPage extends StatelessWidget {
+  const NotFoundPage({super.key});
+
   @override
   Widget build(BuildContext context) {
     return Container(
index 2824018b81122c2b96b4e3ba16dc0f5d2edabaf9..7a6264ccdb3d1ebc9d5505c02b6f51c2e3ad988e 100644 (file)
@@ -32,6 +32,8 @@ import 'package:pve_flutter_frontend/utils/proxmox_colors.dart';
 import 'package:rxdart/rxdart.dart';
 
 class MainLayoutSlim extends StatefulWidget {
+  const MainLayoutSlim({super.key});
+
   @override
   _MainLayoutSlimState createState() => _MainLayoutSlimState();
 }
@@ -111,6 +113,8 @@ class _MainLayoutSlimState extends State<MainLayoutSlim> {
 }
 
 class PveMobileBottomNavigationbar extends StatelessWidget {
+  const PveMobileBottomNavigationbar({super.key});
+
   @override
   Widget build(BuildContext context) {
     final pageSelector = Provider.of<BehaviorSubject<int>>(context);
@@ -151,6 +155,8 @@ class PveMobileBottomNavigationbar extends StatelessWidget {
 }
 
 class MobileDashboard extends StatelessWidget {
+  const MobileDashboard({super.key});
+
   @override
   Widget build(BuildContext context) {
     final cBloc = Provider.of<PveClusterStatusBloc>(context);
@@ -185,7 +191,7 @@ class MobileDashboard extends StatelessWidget {
               baseUrl: (Provider.of<PveResourceBloc>(context)
                       .apiClient
                       ?.credentials
-                      ?.apiBaseUrl) ??
+                      .apiBaseUrl) ??
                   Uri.parse('https://pve.proxmox.com'),
               docPath: 'index.html'),
         ],
@@ -553,13 +559,12 @@ class PveNodeListTile extends StatelessWidget {
   final String? level;
   final String? ip;
   const PveNodeListTile(
-      {Key? key,
+      {super.key,
       required this.name,
       required this.online,
       required this.type,
       this.level,
-      this.ip = ''})
-      : super(key: key);
+      this.ip = ''});
   @override
   Widget build(BuildContext context) {
     return ListTile(
@@ -575,13 +580,15 @@ class PveNodeListTile extends StatelessWidget {
 
   String getNodeTileSubtitle(bool online, String? level, String? ip) {
     if (online) {
-      return '$ip - ' + Renderers.renderSupportLevel(level);
+      return '$ip - ${Renderers.renderSupportLevel(level)}';
     }
     return 'offline';
   }
 }
 
 class MobileResourceOverview extends StatelessWidget {
+  const MobileResourceOverview({super.key});
+
   @override
   Widget build(BuildContext context) {
     final rBloc = Provider.of<PveResourceBloc>(context);
@@ -676,9 +683,9 @@ class MobileResourceOverview extends StatelessWidget {
 
 class PveGuestListTile extends StatelessWidget {
   const PveGuestListTile({
-    Key? key,
+    super.key,
     required this.resource,
-  }) : super(key: key);
+  });
 
   final PveClusterResourcesModel resource;
 
@@ -715,9 +722,9 @@ class PveGuestListTile extends StatelessWidget {
 
 class PveStorageListeTile extends StatelessWidget {
   const PveStorageListeTile({
-    Key? key,
+    super.key,
     required this.resource,
-  }) : super(key: key);
+  });
 
   final PveClusterResourcesModel resource;
 
@@ -776,7 +783,7 @@ class PveStorageListeTile extends StatelessWidget {
 class AppbarSearchTextField extends StatefulWidget {
   final ValueChanged<String>? onChanged;
 
-  const AppbarSearchTextField({Key? key, this.onChanged}) : super(key: key);
+  const AppbarSearchTextField({super.key, this.onChanged});
   @override
   _AppbarSearchTextFieldState createState() => _AppbarSearchTextFieldState();
 }
@@ -1010,6 +1017,8 @@ class _MobileResourceFilterSheet extends StatelessWidget {
 }
 
 class AppBarFilterIconButton extends StatelessWidget {
+  const AppBarFilterIconButton({super.key});
+
   @override
   Widget build(BuildContext context) {
     final rBloc = Provider.of<PveResourceBloc>(context);
@@ -1034,6 +1043,8 @@ class AppBarFilterIconButton extends StatelessWidget {
 }
 
 class MobileAccessManagement extends StatelessWidget {
+  const MobileAccessManagement({super.key});
+
   @override
   Widget build(BuildContext context) {
     final aBloc = Provider.of<PveAccessManagementBloc>(context);
index f7d3c83d4a7ad2567ed12984f2725f088b7b6355..b3595ae05a1e4211997553b635b964faccd764e9 100644 (file)
@@ -71,7 +71,7 @@ class PveMigrationMode extends EnumClass {
   static const PveMigrationMode offline = _$offline;
   static const PveMigrationMode restart = _$restart;
 
-  const PveMigrationMode._(String name) : super(name);
+  const PveMigrationMode._(super.name);
 
   static BuiltSet<PveMigrationMode> get values => _$values;
   static PveMigrationMode valueOf(String name) => _$valueOf(name);
@@ -92,7 +92,7 @@ class PveMigrateSeverity extends EnumClass {
   static const PveMigrateSeverity warning = _$warning;
   static const PveMigrateSeverity error = _$error;
 
-  const PveMigrateSeverity._(String name) : super(name);
+  const PveMigrateSeverity._(super.name);
 
   static BuiltSet<PveMigrateSeverity> get values => _$sValues;
   static PveMigrateSeverity valueOf(String name) => _$sValueOf(name);
index 5a1fc511dac7eb4777e0db16acacef84f4fc7042..83e452bca77a771f10a1327c3d70a3df10289409 100644 (file)
@@ -13,7 +13,7 @@ class Dot extends StatelessWidget {
   final void Function(int? index)? onTap;
 
   const Dot({
-    Key? key,
+    super.key,
     this.dotSpacing,
     this.dotSize,
     this.zoom,
@@ -22,7 +22,7 @@ class Dot extends StatelessWidget {
     this.color,
     this.index,
     this.onTap,
-  }) : super(key: key);
+  });
 
   @override
   Widget build(BuildContext context) {
@@ -32,9 +32,6 @@ class Dot extends StatelessWidget {
         child: Container(
           width: dotSize! * zoom!,
           height: dotSize! * zoom!,
-          child: GestureDetector(
-            onTap: () => onTap!(index),
-          ),
           decoration: BoxDecoration(
             color: color,
             shape: BoxShape.circle,
@@ -46,6 +43,9 @@ class Dot extends StatelessWidget {
                   offset: const Offset(0.0, 0.0))
             ],
           ),
+          child: GestureDetector(
+            onTap: () => onTap!(index),
+          ),
         ),
       ),
     );
@@ -53,7 +53,8 @@ class Dot extends StatelessWidget {
 }
 
 class DotIndicator extends AnimatedWidget {
-  DotIndicator({
+  const DotIndicator({
+    super.key,
     required this.controller,
     this.itemCount,
     this.onPageSelected,
@@ -85,7 +86,7 @@ class DotIndicator extends AnimatedWidget {
     double zoom = 1.0 + (_maxZoom - 1.0) * selectedness;
     double shadowBlurRadius = 4.0 * selectedness;
     double shadowSpreadRadius = 1.0 * selectedness;
-    return new Dot(
+    return Dot(
       color: color,
       shadowBlurRadius: shadowBlurRadius,
       shadowSpreadRadius: shadowSpreadRadius,
index b4521ceea2d578c8e46f65a327659ff4d70e119d..c78d6ee8bbaf5674385c99564f81f8afbc319827 100644 (file)
@@ -14,9 +14,8 @@ const double wideLayoutThreshold = 1200;
 class ProxmoxLayoutBuilder extends StatelessWidget {
   const ProxmoxLayoutBuilder({
     required this.builder,
-    Key? key,
-  })  : assert(builder != null),
-        super(key: key);
+    super.key,
+  }) : assert(builder != null);
 
   /// Builds the widgets below this widget given this widget's layout width.
   final ProxmoxLayoutLayoutWidgetBuilder builder;
index 04c24c3bb61d724d4a1b930cd1cb2936bdd826a4..d1e087fa6eafe6bd2d3e123ba54ba47a2295811c 100644 (file)
@@ -22,10 +22,7 @@ class Renderers {
       converted = converted / 1024;
     }
 
-    return converted.toStringAsFixed((num > 0) ? 2 : 0) +
-        " " +
-        units[num] +
-        "B";
+    return "${converted.toStringAsFixed((num > 0) ? 2 : 0)} ${units[num]}B";
   }
 
   static String renderStorageContent(PveNodesStorageContentModel content) {
index f3e3fc1a8d8aacf9a05fecae58739cb2a56a7b55..e5fcb7dd2df54ade4d633a88895bc3670c90cc3a 100644 (file)
@@ -2,13 +2,12 @@ import 'package:flutter/material.dart';
 
 class ClusterStatus extends StatelessWidget {
   const ClusterStatus(
-      {Key? key,
+      {super.key,
       required this.isHealthy,
       this.healthyColor = Colors.greenAccent,
       this.warningColor = Colors.orangeAccent,
       this.backgroundColor = Colors.transparent,
-      this.version})
-      : super(key: key);
+      this.version});
 
   final bool isHealthy;
   final String? version;
@@ -21,7 +20,7 @@ class ClusterStatus extends StatelessWidget {
     return AnimatedContainer(
       width: 150.0,
       height: 150.0,
-      decoration: new BoxDecoration(
+      decoration: BoxDecoration(
         color: backgroundColor,
         shape: BoxShape.circle,
         border: Border.all(
index fa6db1cbaed5a1a9b7661143b47b9876ad82ba00..8cd6e3af7a45dfedf9105c22f33945f39f890e95 100644 (file)
@@ -4,9 +4,9 @@ class PveQuestion extends StatelessWidget {
   final String? text;
 
   const PveQuestion({
-    Key? key,
+    super.key,
     this.text,
-  }) : super(key: key);
+  });
 
   @override
   Widget build(BuildContext context) {
@@ -27,10 +27,10 @@ class PveAnswer extends StatelessWidget {
   final List<TextSpan>? spans;
 
   const PveAnswer({
-    Key? key,
+    super.key,
     required this.text,
     this.spans,
-  }) : super(key: key);
+  });
 
   @override
   Widget build(BuildContext context) {
@@ -50,9 +50,9 @@ class PveAnswer extends StatelessWidget {
 class PveWelcomePageContent extends StatelessWidget {
   final Widget? child;
   const PveWelcomePageContent({
-    Key? key,
+    super.key,
     this.child,
-  }) : super(key: key);
+  });
 
   @override
   Widget build(BuildContext context) {
index 9911b992f6c4e415c86a45ec1292972da91b12c9..71277d4edefcc1dad8ae16da97398589f0c2e112 100644 (file)
@@ -6,8 +6,8 @@ import 'package:pve_flutter_frontend/utils/proxmox_colors.dart';
 // FAQ
 class PveWelcomePageFAQ extends StatelessWidget {
   const PveWelcomePageFAQ({
-    Key? key,
-  }) : super(key: key);
+    super.key,
+  });
 
   @override
   Widget build(BuildContext context) {
@@ -47,11 +47,11 @@ class PveWelcomePageFAQ extends StatelessWidget {
                 launch(
                     'https://play.google.com/store/apps/details?id=com.undatech.opaque')
               },
-              child: const Text('Opaque'),
               style: OutlinedButton.styleFrom(
                 side: BorderSide(color: ProxmoxColors.supportGrey),
                 foregroundColor: Colors.white,
               ),
+              child: const Text('Opaque'),
             ),
           ),
         ],
index eaae56d6d4d3385baa623db74ef3fc443e353dec..5770818b2be42cb5312691fbed445abdb2b632a5 100644 (file)
@@ -4,7 +4,7 @@ import 'package:pve_flutter_frontend/utils/proxmox_colors.dart';
 
 // goodbye
 class PveWelcomePageLast extends StatelessWidget {
-  const PveWelcomePageLast({Key? key, this.onDone}) : super(key: key);
+  const PveWelcomePageLast({super.key, this.onDone});
 
   final VoidCallback? onDone;
 
@@ -62,24 +62,24 @@ class PveWelcomePageLast extends StatelessWidget {
                             OutlinedButton(
                               onPressed: () =>
                                   {launch('https://forum.proxmox.com')},
-                              child: const Text('Forum'),
                               style: OutlinedButton.styleFrom(
                                 side: BorderSide(
                                     color: ProxmoxColors.supportGrey),
                                 foregroundColor: Colors.white,
                               ),
+                              child: const Text('Forum'),
                             ),
                             OutlinedButton(
                               onPressed: () => {
                                 launch(
                                     'https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-user')
                               },
-                              child: const Text('User Mailing List'),
                               style: OutlinedButton.styleFrom(
                                 side: BorderSide(
                                     color: ProxmoxColors.supportGrey),
                                 foregroundColor: Colors.white,
                               ),
+                              child: const Text('User Mailing List'),
                             ),
                           ],
                         ),
index f6ec8b4c18e2aea52389aa027fd6711a76aa995a..d97697822d478154286b9f3671795d3468f3d839 100644 (file)
@@ -3,8 +3,8 @@ import 'package:flutter/material.dart';
 // Big Logo
 class PveWelcomePageLogo extends StatelessWidget {
   const PveWelcomePageLogo({
-    Key? key,
-  }) : super(key: key);
+    super.key,
+  });
 
   @override
   Widget build(BuildContext context) {
index 8537762d9a8ef8398e61232303f5ae4b7d235004..0713744531abf09625788858b312685a7128c604 100644 (file)
@@ -4,8 +4,8 @@ import 'package:pve_flutter_frontend/widgets/firstWelcomeScreen/pve_welcome_comm
 // disable ssl validation hint
 class PveWelcomePageSSLValidation extends StatelessWidget {
   const PveWelcomePageSSLValidation({
-    Key? key,
-  }) : super(key: key);
+    super.key,
+  });
 
   @override
   Widget build(BuildContext context) {
index 932a56e05084b25016808198f90a9f3067025ade..8e87ab08e9be7c0e5fed606d16478a9529acfe91 100644 (file)
@@ -11,7 +11,7 @@ class ProxmoxCapacityIndicator extends StatelessWidget {
   final bool selected;
 
   const ProxmoxCapacityIndicator(
-      {Key? key,
+      {super.key,
       this.icon,
       required this.totalValue,
       required this.usedValue,
@@ -19,8 +19,7 @@ class ProxmoxCapacityIndicator extends StatelessWidget {
       this.selected = false,
       this.indicatorBackgroundColor,
       this.textColor,
-      this.valueColor})
-      : super(key: key);
+      this.valueColor});
 
   @override
   Widget build(BuildContext context) {
index 8d374d5004e45f2611c0bf46dd1eb86e5c105586..1e23a883c121c593c4b4cae315e7c22198260a11 100644 (file)
@@ -59,7 +59,7 @@ class ProxmoxGaugeChart extends StatefulWidget {
   final Color backgroundGroundColor;
 
   const ProxmoxGaugeChart({
-    Key? key,
+    super.key,
     this.value,
     this.maxValue,
     this.padding = const EdgeInsets.all(6.0),
@@ -67,7 +67,7 @@ class ProxmoxGaugeChart extends StatefulWidget {
     this.strokeWidth = 6,
     this.foreGroundColor = Colors.blue,
     this.backgroundGroundColor = Colors.black12,
-  }) : super(key: key);
+  });
   @override
   _ProxmoxGaugeChartState createState() => _ProxmoxGaugeChartState();
 }
@@ -156,13 +156,13 @@ class ProxmoxGaugeChartListTile extends StatelessWidget {
   final num? maxValue;
 
   const ProxmoxGaugeChartListTile({
-    Key? key,
+    super.key,
     this.title,
     this.subtitle,
     this.legend,
     this.value,
     this.maxValue,
-  }) : super(key: key);
+  });
   @override
   Widget build(BuildContext context) {
     return Padding(
index fb28ff029ee1ae7671e65a10059961ab416febee..68854329ab389540b0db23f25425d690b81649c2 100644 (file)
@@ -9,11 +9,11 @@ class ProxmoxHeartbeatIndicator extends StatelessWidget {
   final Color? warningColor;
 
   const ProxmoxHeartbeatIndicator({
-    Key? key,
+    super.key,
     required this.isHealthy,
     this.healthyColor,
     this.warningColor,
-  }) : super(key: key);
+  });
   @override
   Widget build(BuildContext context) {
     return CustomPaint(
index fde1904b1caacd04ebddbb8435ba0f5404cada95..d3c03aa3ed00ff03868df1e6c90fd1129b95b518 100644 (file)
@@ -11,8 +11,7 @@ abstract class ProxmoxBaseStreamBuilder<B extends ProxmoxBaseBloc<dynamic, S>,
     S extends PveBaseState?> extends StatefulWidget {
   final B? bloc;
   final bool? errorHandler;
-  const ProxmoxBaseStreamBuilder({Key? key, this.bloc, this.errorHandler})
-      : super(key: key);
+  const ProxmoxBaseStreamBuilder({super.key, this.bloc, this.errorHandler});
 
   Widget build(BuildContext context, S state);
 
@@ -28,7 +27,7 @@ class _ProxmoxBaseStreamBuilderState<B extends ProxmoxBaseBloc<dynamic, S>,
     return StreamListener<S>(
       stream: widget.bloc!.state,
       onStateChange: (newState) {
-        if (newState.isFailure && widget.errorHandler!)
+        if (newState.isFailure && widget.errorHandler!) {
           ScaffoldMessenger.of(context).showSnackBar(
             SnackBar(
               content: Text(
@@ -38,6 +37,7 @@ class _ProxmoxBaseStreamBuilderState<B extends ProxmoxBaseBloc<dynamic, S>,
               backgroundColor: ThemeData.dark().colorScheme.error,
             ),
           );
+        }
       },
       child: StreamBuilder<S>(
           stream: widget.bloc!.state,
@@ -57,12 +57,11 @@ class ProxmoxStreamBuilder<B extends ProxmoxBaseBloc<dynamic, S>,
   final AsyncWidgetBuilder<S> builder;
 
   const ProxmoxStreamBuilder({
-    Key? key,
+    super.key,
     required this.builder,
-    B? bloc,
-    bool errorHandler = true,
-  })  : assert(builder != null),
-        super(key: key, bloc: bloc, errorHandler: errorHandler);
+    super.bloc,
+    bool super.errorHandler = true,
+  }) : assert(builder != null);
 
   @override
   Widget build(BuildContext context, S state) => builder(context, state);
index faf68e0d74ae5dc82b11e99bfd12079fc1cd4148..8a2579067948684a2a76606a69c306775ef23bc9 100644 (file)
@@ -9,7 +9,7 @@ class StreamListener<T> extends StatefulWidget {
   final Stream<T> stream;
 
   const StreamListener({
-    Key? key,
+    super.key,
     required this.stream,
     required this.child,
     required this.onStateChange,
index bcf7baa60f598d5c6061ceab3d8986b925202ea7..652913ae62b565d85e9e10148b7d37d81b21db9e 100644 (file)
@@ -28,9 +28,9 @@ class ProxmoxTreeItem {
 class ProxmoxTreeWidget extends StatefulWidget {
   final List<ProxmoxTreeItem>? data;
   const ProxmoxTreeWidget({
-    Key? key,
+    super.key,
     this.data,
-  }) : super(key: key);
+  });
 
   @override
   _ProxmoxTreeWidgetState createState() => _ProxmoxTreeWidgetState();
@@ -41,7 +41,7 @@ class _ProxmoxTreeWidgetState extends State<ProxmoxTreeWidget> {
 
   Widget _buildTiles(ProxmoxTreeItem root) {
     assert(root != null);
-    if (root.children.isEmpty)
+    if (root.children.isEmpty) {
       return Padding(
         padding: const EdgeInsets.only(left: 8),
         child: ListTile(
@@ -58,16 +58,17 @@ class _ProxmoxTreeWidgetState extends State<ProxmoxTreeWidget> {
             onTap:
                 root.callback != null ? () => root.callback!(root.id) : null),
       );
+    }
     return Padding(
       padding: const EdgeInsets.only(left: 8),
       child: ExpansionTile(
         key: PageStorageKey<String?>(root.id),
         title: Text(root.headerValue!),
         leading: root.icon,
-        children: root.children.map<Widget>(_buildTiles).toList(),
         onExpansionChanged: root.callback != null
             ? (isExpaned) => root.callback!(root.id)
             : null,
+        children: root.children.map<Widget>(_buildTiles).toList(),
       ),
     );
   }
index ed80a598d94d958733ed01530c93d785f1654ea8..2684fb054ef259e2cddd92d23411cb8c22cb3ec3 100644 (file)
@@ -7,12 +7,12 @@ class ActionCard extends StatelessWidget {
   final Color? color;
 
   const ActionCard({
-    Key? key,
+    super.key,
     this.onTap,
     this.title,
     this.icon,
     this.color,
-  }) : super(key: key);
+  });
 
   @override
   Widget build(BuildContext context) {
index f7e7e8b89c32955f80d59001c9540f9fbf95f604..f74ce5585ae91db47abfbab17423040622239650 100644 (file)
@@ -7,7 +7,7 @@ import 'package:pve_flutter_frontend/bloc/pve_bridge_selector_bloc.dart';
 class PveBridgeSelector extends StatelessWidget {
   final String? labelText;
 
-  const PveBridgeSelector({Key? key, this.labelText}) : super(key: key);
+  const PveBridgeSelector({super.key, this.labelText});
 
   @override
   Widget build(BuildContext context) {
@@ -26,8 +26,9 @@ class PveBridgeSelector extends StatelessWidget {
               helperText: ' ',
             ),
             items: <DropdownMenuItem<PveNodeNetworkModel>>[
-              for (var bridge in state?.bridges!)
+              for (var bridge in state.bridges!)
                 DropdownMenuItem(
+                  value: bridge,
                   child: Row(
                     children: <Widget>[
                       Text(bridge.iface ?? ''),
@@ -37,7 +38,6 @@ class PveBridgeSelector extends StatelessWidget {
                       Text(bridge.comment ?? '')
                     ],
                   ),
-                  value: bridge,
                 )
             ],
             onChanged: (PveNodeNetworkModel? selection) =>
@@ -45,7 +45,7 @@ class PveBridgeSelector extends StatelessWidget {
             value: state.value,
             autovalidateMode: AutovalidateMode.onUserInteraction,
             validator: (dynamic _) {
-              return state?.errorText;
+              return state.errorText;
             },
           );
         }
index 0d5c75bf4f1eb30d3950368335a6dd89e4b84887..212c95d49e1d325397feb78c17a6fffa263dc697 100644 (file)
@@ -10,6 +10,8 @@ import 'package:pve_flutter_frontend/widgets/pve_file_selector_widget.dart';
 import 'package:proxmox_dart_api_client/proxmox_dart_api_client.dart';
 
 class PveCdSelector extends StatelessWidget {
+  const PveCdSelector({super.key});
+
   @override
   Widget build(BuildContext context) {
     final client = Provider.of<ProxmoxApiClient>(context);
index 621a43fb0add07a62cb5dc547752c9bd112e0a27..ca5eb4f011a9b49f9a37d58c80d8b492f229bb3c 100644 (file)
@@ -9,14 +9,14 @@ class PveConfigSwitchListTile extends StatelessWidget {
   final VoidCallback? onDeleted;
 
   const PveConfigSwitchListTile({
-    Key? key,
+    super.key,
     this.value,
     this.pending,
     this.defaultValue,
     this.title,
     this.onChanged,
     this.onDeleted,
-  }) : super(key: key);
+  });
   @override
   Widget build(BuildContext context) {
     var pBool;
index aad623c5472eff482792c1ae8e005fa1fc1a9b9b..861ec76ef2978e7918d66c7c7346b4416b612d3e 100644 (file)
@@ -19,13 +19,13 @@ class PveConsoleMenu extends StatelessWidget {
   final String type;
 
   const PveConsoleMenu({
-    Key? key,
+    super.key,
     required this.apiClient,
     this.guestID,
     required this.node,
     required this.type,
     this.allowSpice = true,
-  }) : super(key: key);
+  });
 
   @override
   Widget build(BuildContext context) {
@@ -199,12 +199,12 @@ class PVEWebConsole extends StatefulWidget {
   final String? type;
 
   const PVEWebConsole({
-    Key? key,
+    super.key,
     required this.apiClient,
     required this.node,
     this.guestID,
     this.type,
-  }) : super(key: key);
+  });
 
   @override
   PVEWebConsoleState createState() => PVEWebConsoleState();
index 5c2086b5bf5dd05ff1331dda13fe99a6c320fd21..2d178366b1c87b14a1be9aee8d0e4db266f35f25 100644 (file)
@@ -7,8 +7,7 @@ class PveConsoleWidget extends StatelessWidget {
   static const routeName = '/console';
   final String? vmid;
   final String nodeid;
-  const PveConsoleWidget({Key? key, this.vmid, required this.nodeid})
-      : super(key: key);
+  const PveConsoleWidget({super.key, this.vmid, required this.nodeid});
 
   @override
   Widget build(BuildContext context) {
index 28d90cfcad27aa4cbb587ce2a4d2cfc0879ae1aa..2f080b1b4291a6fccf8deaf4e7c2e999aa9ca3d4 100644 (file)
@@ -18,11 +18,11 @@ class PveFileSelector extends StatefulWidget {
   final bool isSelector;
 
   const PveFileSelector({
-    Key? key,
+    super.key,
     this.fBloc,
     this.sBloc,
     this.isSelector = false,
-  }) : super(key: key);
+  });
   @override
   _PveFileSelectorState createState() => _PveFileSelectorState();
 }
@@ -59,11 +59,11 @@ class PveFileSelectorWidget extends StatelessWidget {
   final bool isSelector;
 
   const PveFileSelectorWidget({
-    Key? key,
+    super.key,
     required this.fBloc,
     required this.sBloc,
     this.isSelector = false,
-  }) : super(key: key);
+  });
 
   @override
   Widget build(BuildContext context) {
@@ -207,8 +207,7 @@ class PveStorageCardIcon extends StatelessWidget {
   final bool selected;
   final IconData? icon;
 
-  const PveStorageCardIcon({Key? key, this.selected = false, this.icon})
-      : super(key: key);
+  const PveStorageCardIcon({super.key, this.selected = false, this.icon});
 
   @override
   Widget build(BuildContext context) {
@@ -226,13 +225,13 @@ class PveStorageCardIcon extends StatelessWidget {
 
 class PveStorageCard extends StatelessWidget {
   const PveStorageCard({
-    Key? key,
+    super.key,
     required this.isSelected,
     required this.sBloc,
     required this.storage,
     required this.storageIcon,
     this.width = 300,
-  }) : super(key: key);
+  });
 
   final bool isSelected;
   final PveStorageSelectorBloc? sBloc;
@@ -330,12 +329,12 @@ class FileSelectorContentView extends StatelessWidget {
   final bool storageSelected;
 
   const FileSelectorContentView({
-    Key? key,
+    super.key,
     this.gridView,
     this.content,
     this.isSelector = false,
     this.storageSelected = false,
-  }) : super(key: key);
+  });
   @override
   Widget build(BuildContext context) {
     if (content == null) {
index 5378d84050421b2c14fe99249d2a1fda2d3d29aa..8e75ee662363a9cd920f98e5abe8c5ef4fb88c84 100644 (file)
@@ -11,6 +11,8 @@ import 'package:pve_flutter_frontend/widgets/firstWelcomeScreen/pve_welcome_ssl_
 import 'package:pve_flutter_frontend/widgets/firstWelcomeScreen/pve_welcome_last.dart';
 
 class PveWelcome extends StatefulWidget {
+  const PveWelcome({super.key});
+
   @override
   _PveWelcomeState createState() => _PveWelcomeState();
 }
@@ -81,7 +83,6 @@ class _PveWelcomeState extends State<PveWelcome> with TickerProviderStateMixin {
       );
     } else {
       return TextButton(
-        child: const Text("Next"),
         style: TextButton.styleFrom(
           foregroundColor: _buttonTextColor,
           disabledForegroundColor: _buttonDisabledTextColor,
@@ -90,6 +91,7 @@ class _PveWelcomeState extends State<PveWelcome> with TickerProviderStateMixin {
           _controller!
               .nextPage(duration: _pageChangeDuration, curve: _pageChangeCurve);
         },
+        child: const Text("Next"),
       );
     }
   }
index ea4af200b2a6ac849905d56e85f7477b4cda94b6..a7c01abe1420ec60a39a6d976a16c7022dccb784 100644 (file)
@@ -18,8 +18,7 @@ import 'package:pve_flutter_frontend/widgets/pve_storage_selector_widget.dart';
 class PveGuestBackupWidget extends StatelessWidget {
   final String guestID;
 
-  const PveGuestBackupWidget({Key? key, required this.guestID})
-      : super(key: key);
+  const PveGuestBackupWidget({super.key, required this.guestID});
 
   @override
   Widget build(BuildContext context) {
@@ -176,10 +175,10 @@ class PveGuestBackupContent extends StatelessWidget {
   final bool? storageSelected;
 
   const PveGuestBackupContent({
-    Key? key,
+    super.key,
     this.content,
     this.storageSelected,
-  }) : super(key: key);
+  });
   @override
   Widget build(BuildContext context) {
     final fBloc = Provider.of<PveFileSelectorBloc>(context);
@@ -339,11 +338,11 @@ class PveConfigurationDialog extends StatefulWidget {
   final String? volume;
 
   const PveConfigurationDialog({
-    Key? key,
+    super.key,
     required this.apiClient,
     required this.targetNode,
     required this.volume,
-  }) : super(key: key);
+  });
   @override
   _PveConfigurationDialogState createState() => _PveConfigurationDialogState();
 }
@@ -387,8 +386,7 @@ class PveBackupForm extends StatefulWidget {
   final PveStorageSelectorBloc sBloc;
   final String guestID;
 
-  const PveBackupForm({Key? key, required this.sBloc, required this.guestID})
-      : super(key: key);
+  const PveBackupForm({super.key, required this.sBloc, required this.guestID});
 
   @override
   _PveBackupFormState createState() => _PveBackupFormState();
@@ -539,8 +537,8 @@ class _PveBackupFormState extends State<PveBackupForm> {
       items: <DropdownMenuItem<PveVZDumpModeType>>[
         for (var mode in PveVZDumpModeType.values)
           DropdownMenuItem(
-            child: Text(mode.name.toUpperCase()),
             value: mode,
+            child: Text(mode.name.toUpperCase()),
           )
       ],
       onChanged: (PveVZDumpModeType? selection) => setState(() {
@@ -560,8 +558,8 @@ class _PveBackupFormState extends State<PveBackupForm> {
       items: <DropdownMenuItem<PveVZDumpCompressionType>>[
         for (var comp in compTypes)
           DropdownMenuItem(
-            child: Text(comp['name'] as String),
             value: comp['type'] as PveVZDumpCompressionType?,
+            child: Text(comp['name'] as String),
           )
       ],
       onChanged: (PveVZDumpCompressionType? selection) => setState(() {
index cf5b01ee8232c5f68a37bd45bf8f701a02838a4a..dfdc86c927f64d9bf3f8ea09629d4be42ea2bc02 100644 (file)
@@ -10,13 +10,13 @@ class PveGuestIcon extends StatelessWidget {
   final Color templateColor;
 
   const PveGuestIcon({
-    Key? key,
+    super.key,
     required this.type,
     this.template = false,
     required this.status,
     this.color = Colors.grey,
     this.templateColor = Colors.black,
-  }) : super(key: key);
+  });
 
   @override
   Widget build(BuildContext context) {
index 1d670b1e1602c572ac4b0d69043e730d6f5fbf81..604b60cff5e80a9a518a89ff8dfbc81af3959edf 100644 (file)
@@ -8,10 +8,10 @@ import 'package:pve_flutter_frontend/states/proxmox_form_field_state.dart';
 class PveGuestIdSelector extends StatelessWidget {
   final String? labelText;
 
-  PveGuestIdSelector({
-    Key? key,
+  const PveGuestIdSelector({
+    super.key,
     this.labelText,
-  }) : super(key: key);
+  });
 
   @override
   Widget build(BuildContext context) {
@@ -28,7 +28,7 @@ class PveGuestIdSelector extends StatelessWidget {
             // first build has no data
             key: state.value != null ? null : const ValueKey(1),
             decoration: InputDecoration(labelText: labelText, helperText: ' '),
-            initialValue: state?.value,
+            initialValue: state.value,
             keyboardType: TextInputType.number,
             inputFormatters: [FilteringTextInputFormatter.digitsOnly],
             autovalidateMode: AutovalidateMode.onUserInteraction,
@@ -36,7 +36,7 @@ class PveGuestIdSelector extends StatelessWidget {
               _pveGuestIdSelectorBloc.events.add(OnChanged(text));
             },
             validator: (_) {
-              return state?.errorText;
+              return state.errorText;
             },
           );
         });
index 4b99f5444d47cb88562aeeff164f1f3182263e71..ff3ea3c4783730d046da95d89fe37ae84749aa12 100644 (file)
@@ -12,7 +12,7 @@ import 'package:pve_flutter_frontend/widgets/pve_guest_migration_connector_widge
 import 'package:pve_flutter_frontend/widgets/pve_help_icon_button_widget.dart';
 
 class PveGuestMigrate extends StatelessWidget {
-  PveGuestMigrate({Key? key}) : super(key: key);
+  const PveGuestMigrate({super.key});
   @override
   Widget build(BuildContext context) {
     final migrateBloc = Provider.of<PveMigrateBloc>(context);
@@ -142,13 +142,13 @@ class PveGuestMigrate extends StatelessWidget {
 
 class _MigrateTargetSelector extends StatelessWidget {
   const _MigrateTargetSelector({
-    Key? key,
+    super.key,
     required this.nodeSelectorbloc,
     required this.migrateBloc,
     required this.disabled,
     required this.titleColor,
     required this.iconEnabledColor,
-  }) : super(key: key);
+  });
 
   final PveNodeSelectorBloc nodeSelectorbloc;
   final PveMigrateBloc migrateBloc;
@@ -175,6 +175,7 @@ class _MigrateTargetSelector extends StatelessWidget {
             iconEnabledColor: iconEnabledColor,
             items: state.availableNodes
                 .map((item) => DropdownMenuItem(
+                      value: item.nodeName,
                       child: ListTile(
                         leading: const Icon(
                           Icons.storage,
@@ -185,7 +186,6 @@ class _MigrateTargetSelector extends StatelessWidget {
                         subtitle: Text(
                             'CPU: ${item.renderCpuUsage()}\nMemory: ${item.renderMemoryUsagePercent()}'),
                       ),
-                      value: item.nodeName,
                     ))
                 .toList(),
             selectedItemBuilder: (context) =>
@@ -209,7 +209,7 @@ class _MigrateTargetSelector extends StatelessWidget {
 
   // you ask why? if not, the height of the dropdown isn't constant
   List<Widget> getSelectedItem(List<PveNodesModel> nodes) {
-    if (nodes.isNotEmpty)
+    if (nodes.isNotEmpty) {
       return nodes
           .map((item) => Row(children: [
                 Text(
@@ -221,6 +221,7 @@ class _MigrateTargetSelector extends StatelessWidget {
                 )
               ]))
           .toList();
+    }
     return [const Text('')];
   }
 }
index 8e1519d96b8a8c7a04d7a5938b236e629b119037..2895c5b95668937c06bb2b670e998c8c60949fe7 100644 (file)
@@ -14,7 +14,7 @@ import 'package:pve_flutter_frontend/widgets/proxmox_stream_listener.dart';
 class PveMigrateStreamConnector extends StatelessWidget {
   final Widget? child;
 
-  const PveMigrateStreamConnector({Key? key, this.child}) : super(key: key);
+  const PveMigrateStreamConnector({super.key, this.child});
   @override
   Widget build(BuildContext context) {
     final mBloc = Provider.of<PveMigrateBloc>(context);
index 55b1a2b4fb09cd29b04be2694f0cd7a97f91c6d2..12ae94476a280df6ad6d7d34af29669056d768a2 100644 (file)
@@ -6,6 +6,8 @@ import 'package:pve_flutter_frontend/bloc/pve_guest_os_selector_bloc.dart';
 import 'package:proxmox_dart_api_client/proxmox_dart_api_client.dart';
 
 class PveGuestOsSelector extends StatelessWidget {
+  const PveGuestOsSelector({super.key});
+
   @override
   Widget build(BuildContext context) {
     final gBloc = Provider.of<PveGuestOsSelectorBloc>(context);
index 83d42345d1e55674346ef50922249d9e18f1f3e5..50ac65523cbe44dbed24e4f2c5e1dd8efb1d5346 100644 (file)
@@ -14,7 +14,7 @@ import 'package:pve_flutter_frontend/utils/utils.dart';
 
 class PveGuestOverviewHeader extends StatelessWidget {
   const PveGuestOverviewHeader({
-    Key? key,
+    super.key,
     required this.width,
     required this.guestID,
     required this.guestStatus,
@@ -24,8 +24,7 @@ class PveGuestOverviewHeader extends StatelessWidget {
     required this.template,
     required this.ha,
     this.background,
-  })  : assert(guestName != null),
-        super(key: key);
+  }) : assert(guestName != null);
 
   final double width;
   final String guestID;
@@ -150,7 +149,7 @@ class PveGuestOverviewHeader extends StatelessWidget {
 class PveGuestHeaderRRDPageView extends StatefulWidget {
   final BuiltList<PveGuestRRDdataModel>? rrdData;
 
-  PveGuestHeaderRRDPageView({Key? key, this.rrdData}) : super(key: key);
+  const PveGuestHeaderRRDPageView({super.key, this.rrdData});
 
   @override
   _PveGuestHeaderRRDPageViewState createState() =>
@@ -201,7 +200,7 @@ class _PveGuestHeaderRRDPageViewState extends State<PveGuestHeaderRRDPageView> {
                     titleWidth: 150,
                     titleAlginment: CrossAxisAlignment.end,
                     title: 'CPU (${rrdData.last.maxcpu ?? '-'})',
-                    subtitle: (rrdData.last.cpu ?? 0).toStringAsFixed(2) + "%",
+                    subtitle: "${(rrdData.last.cpu ?? 0).toStringAsFixed(2)}%",
                     data: rrdData.where((e) => e.cpu != null).map(
                         (e) => Point(e.time!.millisecondsSinceEpoch, e.cpu!)),
                     icon: Icon(Icons.memory, color: fgColor),
index 7dbc1cb8966dcd9b7f8e97c59766b9722e4a3ff9..758defbd97cbf7a4d2dc2b0dc7f3bca7a786b6f6 100644 (file)
@@ -7,10 +7,10 @@ class PveHelpIconButton extends StatelessWidget {
   final Uri baseUrl;
 
   const PveHelpIconButton({
-    Key? key,
+    super.key,
     required this.baseUrl,
     this.docPath,
-  }) : super(key: key);
+  });
 
   @override
   Widget build(BuildContext context) {
index 350b63bb2b613ac4f0989e6cfaacac884c1e1e37..cf5d7e2bbf9a77936eac18450e95145df8411b6b 100644 (file)
@@ -7,7 +7,7 @@ import 'package:pve_flutter_frontend/widgets/pve_config_switch_list_tile.dart';
 class PveLxcOptions extends StatelessWidget {
   final PveLxcOverviewBloc? lxcBloc;
 
-  const PveLxcOptions({Key? key, this.lxcBloc}) : super(key: key);
+  const PveLxcOptions({super.key, this.lxcBloc});
   @override
   Widget build(BuildContext context) {
     return ProxmoxStreamBuilder<PveLxcOverviewBloc, PveLxcOverviewState>(
index df73e855150de77121e85e79981b9320ad5bf526..b5b7c4a080ea1f14101a83e95e61e5277fd2ec0b 100644 (file)
@@ -47,7 +47,7 @@ class PveLxcOverview extends StatelessWidget {
     );
   }
 
-  const PveLxcOverview({Key? key, required this.guestID}) : super(key: key);
+  const PveLxcOverview({super.key, required this.guestID});
   @override
   Widget build(BuildContext context) {
     final lxcBloc = Provider.of<PveLxcOverviewBloc>(context);
@@ -229,7 +229,7 @@ class PveLxcOverview extends StatelessWidget {
                                   leading:
                                       const Icon(FontAwesomeIcons.ethernet),
                                   dense: true,
-                                  title: Text('$net'),
+                                  title: Text(net),
                                 ),
                             ]),
                         PveResourceDataCardWidget(
index 6a099a7bc2d753b2f07387061119d65ecdcb9989..69938ea74f1d40d2992ac223062926d61c6bdf4e 100644 (file)
@@ -7,7 +7,7 @@ import 'package:pve_flutter_frontend/widgets/proxmox_stream_builder_widget.dart'
 class PveLxcPowerSettings extends StatelessWidget {
   final PveLxcOverviewBloc? lxcBloc;
 
-  const PveLxcPowerSettings({Key? key, this.lxcBloc}) : super(key: key);
+  const PveLxcPowerSettings({super.key, this.lxcBloc});
   @override
   Widget build(BuildContext context) {
     return ProxmoxStreamBuilder<PveLxcOverviewBloc, PveLxcOverviewState>(
index 172f61cd8afa754aff5d37733485c9dfaeda46d2..8d5dbfd22e189f0d2d131a68beae440bd40512fd 100644 (file)
@@ -11,8 +11,8 @@ import 'package:pve_flutter_frontend/widgets/proxmox_tree_widget.dart';
 
 class PveMainNavigationDrawer extends StatelessWidget {
   const PveMainNavigationDrawer({
-    Key? key,
-  }) : super(key: key);
+    super.key,
+  });
 
   @override
   Widget build(BuildContext context) {
@@ -138,8 +138,8 @@ class PveMainNavigationDrawer extends StatelessWidget {
                           ),
                           // TODO General new button or distinct ones??
                           const OutlinedButton(
-                            child: Text("new CT"),
                             onPressed: null,
+                            child: Text("new CT"),
                           )
                         ],
                       ),
index 2cf62df9287ef8111f62275c55d3fb2886c37dc1..31c8d34c07fb68402b37f8bde269588c2683c0dc 100644 (file)
@@ -6,8 +6,7 @@ class PveNetworkInterfaceModelSelector extends StatefulWidget {
   final String? initialSelection;
 
   const PveNetworkInterfaceModelSelector(
-      {Key? key, this.labelText, this.onChange, this.initialSelection})
-      : super(key: key);
+      {super.key, this.labelText, this.onChange, this.initialSelection});
   @override
   _PveNetworkInterfaceModelSelectorState createState() =>
       _PveNetworkInterfaceModelSelectorState();
@@ -31,14 +30,14 @@ class _PveNetworkInterfaceModelSelectorState
       ),
       items: models.keys
           .map((f) => DropdownMenuItem(
-                child: Text(models[f]!),
                 value: f,
+                child: Text(models[f]!),
               ))
           .toList(),
       selectedItemBuilder: (context) => models.keys
           .map((f) => DropdownMenuItem(
-                child: Text(models[f]!),
                 value: f,
+                child: Text(models[f]!),
               ))
           .toList(),
       onChanged: (String? selection) {
index f804ae42364e5395c71126ac035f4b9706d47092..3440fab2b3137d583cacde8888ba2c00477f049e 100644 (file)
@@ -24,9 +24,9 @@ class PveNodeOverview extends StatelessWidget {
   final String nodeID;
 
   Icon getServiceStateIcon(BuildContext context, PveNodeServicesModel s) {
-    if (s.state == 'running')
+    if (s.state == 'running') {
       return Icon(Icons.play_arrow, color: Colors.green[400]);
-    else if (s.unitState == 'masked' || s.unitState == 'not-found')
+    else if (s.unitState == 'masked' || s.unitState == 'not-found')
       return Icon(
         Icons.play_disabled,
         color: IconTheme.of(context).color!.withOpacity(0.75),
@@ -35,7 +35,7 @@ class PveNodeOverview extends StatelessWidget {
       return Icon(Icons.stop, color: Theme.of(context).colorScheme.error);
   }
 
-  const PveNodeOverview({Key? key, required this.nodeID}) : super(key: key);
+  const PveNodeOverview({super.key, required this.nodeID});
   @override
   Widget build(BuildContext context) {
     final nBloc = Provider.of<PveNodeOverviewBloc>(context);
@@ -52,7 +52,7 @@ class PveNodeOverview extends StatelessWidget {
               //backgroundColor: Colors.transparent,
               elevation: 0,
               title: Text(
-                "Node ${nodeID}",
+                "Node $nodeID",
                 style:
                     const TextStyle(fontWeight: FontWeight.bold, fontSize: 25),
                 maxLines: 2,
@@ -284,8 +284,8 @@ class PveNodeOverview extends StatelessWidget {
                         .map(
                           (s) => ListTile(
                             dense: true,
-                            title: Text('${s.name}'),
-                            subtitle: Text('${s.desc}'),
+                            title: Text(s.name),
+                            subtitle: Text(s.desc),
                             trailing: getServiceStateIcon(context, s),
                           ),
                         )
@@ -320,7 +320,7 @@ class PveNodeOverview extends StatelessWidget {
                         .map(
                           (s) => ListTile(
                             dense: true,
-                            title: Text('${s.title}'),
+                            title: Text(s.title),
                             subtitle: Text(
                                 '${s.package}: ${s.oldVersion ?? ''} -> ${s.version}'),
                             trailing: IconButton(
index 49ca3d20a2fadc52ff144ae1a96946c8990ee0aa..1748a308a27b5c01d96056d8e1a3585fd02ee848 100644 (file)
@@ -7,7 +7,7 @@ import 'package:pve_flutter_frontend/states/pve_node_selector_state.dart';
 class PveNodeSelector extends StatelessWidget {
   final String? labelText;
 
-  const PveNodeSelector({Key? key, this.labelText}) : super(key: key);
+  const PveNodeSelector({super.key, this.labelText});
 
   @override
   Widget build(BuildContext context) {
@@ -23,6 +23,7 @@ class PveNodeSelector extends StatelessWidget {
           return DropdownButton(
             items: state.availableNodes
                 .map((item) => DropdownMenuItem(
+                      value: item.nodeName,
                       child: Row(
                         children: <Widget>[
                           Text(item.nodeName),
@@ -32,7 +33,6 @@ class PveNodeSelector extends StatelessWidget {
                           Text(item.renderCpuUsage())
                         ],
                       ),
-                      value: item.nodeName,
                     ))
                 .toList(),
             selectedItemBuilder: (context) => state.availableNodes
index 8a6d6d4473ef8e0a52d608075921a5748e3681b7..664d6d606a681a711b8a235fd0a19c8b9e9ae964 100644 (file)
@@ -8,7 +8,7 @@ import 'package:pve_flutter_frontend/widgets/pve_config_switch_list_tile.dart';
 class PveQemuOptions extends StatelessWidget {
   final String guestID;
   final _formKey = GlobalKey<FormState>();
-  PveQemuOptions({Key? key, required this.guestID}) : super(key: key);
+  PveQemuOptions({super.key, required this.guestID});
 
   @override
   Widget build(BuildContext context) {
index 43fc40b1bd1574c2ed81488671131a2463edad18..cb9dc450c3cce628634ac4a39f79150cf8e7eac0 100644 (file)
@@ -35,7 +35,7 @@ class PveQemuOverview extends StatelessWidget {
   static final routeName = RegExp(r"\/nodes\/(\S+)\/qemu\/(\d+)");
   final String guestID;
 
-  const PveQemuOverview({Key? key, required this.guestID}) : super(key: key);
+  const PveQemuOverview({super.key, required this.guestID});
 
   ActionCard createActionCard(String title, IconData icon, Function onTap) {
     return ActionCard(
index da51071fa2663c593b0a7d0b939c80ae1d55c614..e402b83d0bf70ddab46037ed95ed414e35dc8263 100644 (file)
@@ -8,8 +8,8 @@ import 'package:pve_flutter_frontend/widgets/proxmox_stream_builder_widget.dart'
 
 class PveQemuPowerSettings extends StatelessWidget {
   const PveQemuPowerSettings({
-    Key? key,
-  }) : super(key: key);
+    super.key,
+  });
   @override
   Widget build(BuildContext context) {
     final bloc = Provider.of<PveQemuOverviewBloc>(context);
index 545a869fd0ab0bb63b71442aaa4c495fe2977e4c..f9acea6d85d1285c0792320f23670646e216d547 100644 (file)
@@ -11,7 +11,7 @@ class PveResourceDataCardWidget extends StatelessWidget {
   final List<Widget> children;
 
   const PveResourceDataCardWidget({
-    Key? key,
+    super.key,
     this.showTitleTrailing = false,
     required this.title,
     this.titleTrailing,
@@ -19,7 +19,7 @@ class PveResourceDataCardWidget extends StatelessWidget {
     required this.children,
     this.padding = const EdgeInsets.all(8.0),
     this.expandable = false,
-  }) : super(key: key);
+  });
   @override
   Widget build(BuildContext context) {
     final ThemeData theme = Theme.of(context);
index 0a10ba55f4655fa4d4e4229936167da2ed183166..0f095213e093751772dd94f7abdecfc7fed8a95c 100644 (file)
@@ -7,6 +7,8 @@ import 'package:pve_flutter_frontend/states/pve_resource_state.dart';
 import 'package:pve_flutter_frontend/utils/renderers.dart';
 
 class PveResourceOverview extends StatelessWidget {
+  const PveResourceOverview({super.key});
+
   @override
   Widget build(BuildContext context) {
     final rbloc = Provider.of<PveResourceBloc>(context);
index 53429c07d8a83561068a222478e095afc0c01aa8..3a6df896477a566041a7320a42eb108b197c7593 100644 (file)
@@ -10,14 +10,14 @@ class StatusChip extends StatelessWidget {
 
   final Color onlineColor;
   const StatusChip({
-    Key? key,
+    super.key,
     this.status,
     this.fontzsize = 12,
     this.fontWeight = FontWeight.normal,
     this.offlineColor = Colors.grey,
     this.onlineColor = const Color(0xFF21bf4b),
     this.intermediateColor = Colors.orange,
-  }) : super(key: key);
+  });
 
   @override
   Widget build(BuildContext context) {
index 2f01e91117e4d31f2f6c38985159528af7900417..b25a54b49d792af2cf4e4b3389689ef6976ca13f 100644 (file)
@@ -22,7 +22,7 @@ class PveRRDChart extends StatefulWidget {
   final DataRenderer? dataRenderer;
 
   const PveRRDChart({
-    Key? key,
+    super.key,
     this.title,
     this.subtitle,
     this.data,
@@ -38,7 +38,7 @@ class PveRRDChart extends StatefulWidget {
     this.showDuration = true,
     this.bottomRight,
     this.dataRenderer,
-  }) : super(key: key);
+  });
 
   @override
   _PveRRDChartState createState() => _PveRRDChartState();
@@ -81,7 +81,7 @@ class _PveRRDChartState extends State<PveRRDChart> {
             children: [
               Text(
                 widget.dataRenderer != null
-                    ? 'max ' + widget.dataRenderer!(globalMaxima)
+                    ? 'max ${widget.dataRenderer!(globalMaxima)}'
                     : 'max $globalMaximaLabel',
                 style: TextStyle(color: fgColor, fontSize: 11),
               ),
@@ -120,7 +120,7 @@ class _PveRRDChartState extends State<PveRRDChart> {
         Row(
           mainAxisAlignment: MainAxisAlignment.spaceBetween,
           children: [
-            Text('past ' + Renderers.renderDuration(timeWindow),
+            Text('past ${Renderers.renderDuration(timeWindow)}',
                 style: TextStyle(color: fgColor, fontSize: 11)),
             if (widget.bottomRight != null) widget.bottomRight!,
           ],
index 9829c9d90c02f7e8144de815b418a61ab0c79813..2c2bb58418ff4bfb25d29b8661550a0e0f2fc3fa 100644 (file)
@@ -1,6 +1,8 @@
 import 'package:flutter/material.dart';
 
 class PveSplashScreen extends StatelessWidget {
+  const PveSplashScreen({super.key});
+
   @override
   Widget build(BuildContext context) {
     return Container(
index 8dc67a4c271399456b1548e50e7a077046a7edbf..110e2cebd2b5f04005c74ac4d43fe6b860cbed8d 100644 (file)
@@ -12,11 +12,11 @@ class PveStorageSelectorDropdown extends StatelessWidget {
   final PveStorageSelectorBloc? sBloc;
   final bool allowBlank;
   const PveStorageSelectorDropdown({
-    Key? key,
+    super.key,
     this.labelText,
     this.sBloc,
     this.allowBlank = true,
-  }) : super(key: key);
+  });
 
   @override
   Widget build(BuildContext context) {
@@ -34,6 +34,7 @@ class PveStorageSelectorDropdown extends StatelessWidget {
           items: <DropdownMenuItem<PveNodesStorageModel>>[
             for (var storage in state.storages)
               DropdownMenuItem(
+                value: storage,
                 child: ListTile(
                   title: Text(storage.id),
                   leading: Container(
@@ -58,7 +59,6 @@ class PveStorageSelectorDropdown extends StatelessWidget {
                     selected: false,
                   ),
                 ),
-                value: storage,
               )
           ],
           onChanged: (PveNodesStorageModel? selectedStorage) =>
index 747714ae512fa6af1384e2b82d68e1425dc70cff..da8d15ed5161ba5570b84ca7fe0eb7b8f7d617b6 100644 (file)
@@ -2,6 +2,8 @@ import 'package:flutter/material.dart';
 import 'package:url_launcher/url_launcher.dart';
 
 class PveSubscriptionAlertDialog extends StatelessWidget {
+  const PveSubscriptionAlertDialog({super.key});
+
   @override
   Widget build(BuildContext context) {
     return AlertDialog(
index 084fc4489c66e4db9deac47ac661fae569fa167f..95995f4147947abe2fee6fcab21db4ffc208a25e 100644 (file)
@@ -12,13 +12,13 @@ class PveTaskExpansionTile extends StatefulWidget {
   final Color? headerColorExpanded;
   final Widget? showMorePage;
   const PveTaskExpansionTile({
-    Key? key,
+    super.key,
     required this.task,
     this.showMorePage,
     this.errorColor,
     this.headerColor,
     this.headerColorExpanded,
-  }) : super(key: key);
+  });
 
   final PveClusterTasksModel task;
 
@@ -101,7 +101,7 @@ class _PveTaskExpansionTileState extends State<PveTaskExpansionTile> {
           ),
         ListTile(
           leading: const Icon(Icons.description),
-          title: Text("${widget.task.status}"),
+          title: Text(widget.task.status),
           dense: true,
           subtitle: const Text('Shortlog'),
         ),
index bcf0a242bf2d39f816c1a03e0adfca629480eb1a..cfcba98ee001bb8415bdc09cffd94cac550e1862 100644 (file)
@@ -9,7 +9,7 @@ import 'package:pve_flutter_frontend/widgets/proxmox_stream_listener.dart';
 import 'package:pve_flutter_frontend/widgets/pve_task_log_expansiontile_widget.dart';
 
 class PveTaskLog extends StatefulWidget {
-  PveTaskLog({Key? key}) : super(key: key);
+  const PveTaskLog({super.key});
 
   @override
   _PveTaskLogState createState() => _PveTaskLogState();
@@ -174,16 +174,16 @@ class PveTaskLogScrollView extends StatefulWidget {
   final Widget jobTitle;
 
   const PveTaskLogScrollView({
-    Key? key,
+    super.key,
     required this.icon,
     required this.jobTitle,
-  }) : super(key: key);
+  });
   @override
   _PveTaskLogScrollViewState createState() => _PveTaskLogScrollViewState();
 }
 
 class _PveTaskLogScrollViewState extends State<PveTaskLogScrollView> {
-  ScrollController _scrollController = new ScrollController();
+  ScrollController _scrollController = ScrollController();
   @override
   void initState() {
     super.initState();
index c44b68e6eeaca0f4f120029962b141b96758fc96..bc2c28db14ed5764d248ab6060b3b9880a9cda11 100644 (file)
@@ -6,7 +6,7 @@ import 'package:pve_flutter_frontend/bloc/pve_vm_name_bloc.dart';
 class PveVmNameWidget extends StatelessWidget {
   final String labelText;
 
-  const PveVmNameWidget({Key? key, this.labelText = 'Name'}) : super(key: key);
+  const PveVmNameWidget({super.key, this.labelText = 'Name'});
   @override
   Widget build(BuildContext context) {
     final vBloc = Provider.of<PveVmNameBloc>(context);