From: Thomas Lamprecht Date: Wed, 10 Apr 2024 06:27:12 +0000 (+0200) Subject: tree-wide: various smaller auto-lint fixes X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=59df1bb35b70c8ef96853435422e4b30a3fb4187;p=flutter%2Fpve_flutter_frontend.git tree-wide: various smaller auto-lint fixes 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 --- diff --git a/lib/bloc/pve_bridge_selector_bloc.dart b/lib/bloc/pve_bridge_selector_bloc.dart index 728525b..00ddbcd 100644 --- a/lib/bloc/pve_bridge_selector_bloc.dart +++ b/lib/bloc/pve_bridge_selector_bloc.dart @@ -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); } diff --git a/lib/bloc/pve_guest_id_selector_bloc.dart b/lib/bloc/pve_guest_id_selector_bloc.dart index b93a80a..ba726ae 100644 --- a/lib/bloc/pve_guest_id_selector_bloc.dart +++ b/lib/bloc/pve_guest_id_selector_bloc.dart @@ -68,6 +68,5 @@ class OnChanged extends PveGuestIdSelectorEvent { } class GuestIdSelectorState extends PveFormFieldState { - GuestIdSelectorState({String? value, String? errorText}) - : super(value: value, errorText: errorText); + GuestIdSelectorState({super.value, super.errorText}); } diff --git a/lib/bloc/pve_guest_os_selector_bloc.dart b/lib/bloc/pve_guest_os_selector_bloc.dart index e222150..b0e42d9 100644 --- a/lib/bloc/pve_guest_os_selector_bloc.dart +++ b/lib/bloc/pve_guest_os_selector_bloc.dart @@ -38,8 +38,7 @@ class PveGuestOsSelectorBloc } class PveGuestOsSelectorState extends PveFormFieldState { - PveGuestOsSelectorState({OSType? value, String? errorText}) - : super(value: value, errorText: errorText); + PveGuestOsSelectorState({super.value, super.errorText}); PveGuestOsSelectorState copyWith( {String? os, OSType? value, String? errorText}) { diff --git a/lib/bloc/pve_migrate_bloc.dart b/lib/bloc/pve_migrate_bloc.dart index edf815b..9cab434 100644 --- a/lib/bloc/pve_migrate_bloc.dart +++ b/lib/bloc/pve_migrate_bloc.dart @@ -115,7 +115,7 @@ class PveMigrateBloc extends ProxmoxBaseBloc { 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 { } 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'])}")); } }); diff --git a/lib/bloc/pve_node_selector_bloc.dart b/lib/bloc/pve_node_selector_bloc.dart index 4e6d274..fdfa6ae 100644 --- a/lib/bloc/pve_node_selector_bloc.dart +++ b/lib/bloc/pve_node_selector_bloc.dart @@ -51,8 +51,9 @@ class PveNodeSelectorBloc Future> 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; } diff --git a/lib/bloc/pve_vm_name_bloc.dart b/lib/bloc/pve_vm_name_bloc.dart index d3deb86..3d09769 100644 --- a/lib/bloc/pve_vm_name_bloc.dart +++ b/lib/bloc/pve_vm_name_bloc.dart @@ -26,6 +26,5 @@ class OnChange extends PveVmNameEvent { } class PveVmNameState extends PveFormFieldState { - PveVmNameState({String? value, String? errorText}) - : super(value: value, errorText: errorText); + PveVmNameState({super.value, super.errorText}); } diff --git a/lib/main.dart b/lib/main.dart index 46c1f41..9c700a1 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -79,9 +79,8 @@ class MyApp extends StatelessWidget { final SharedPreferences sharedPreferences; final GlobalKey navigatorKey = GlobalKey(); - 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) { diff --git a/lib/pages/404_page.dart b/lib/pages/404_page.dart index 7f539b1..7ba065d 100644 --- a/lib/pages/404_page.dart +++ b/lib/pages/404_page.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; class NotFoundPage extends StatelessWidget { + const NotFoundPage({super.key}); + @override Widget build(BuildContext context) { return Container( diff --git a/lib/pages/main_layout_slim.dart b/lib/pages/main_layout_slim.dart index 2824018..7a6264c 100644 --- a/lib/pages/main_layout_slim.dart +++ b/lib/pages/main_layout_slim.dart @@ -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 { } class PveMobileBottomNavigationbar extends StatelessWidget { + const PveMobileBottomNavigationbar({super.key}); + @override Widget build(BuildContext context) { final pageSelector = Provider.of>(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(context); @@ -185,7 +191,7 @@ class MobileDashboard extends StatelessWidget { baseUrl: (Provider.of(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(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? 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(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(context); diff --git a/lib/states/pve_migrate_state.dart b/lib/states/pve_migrate_state.dart index f7d3c83..b3595ae 100644 --- a/lib/states/pve_migrate_state.dart +++ b/lib/states/pve_migrate_state.dart @@ -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 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 get values => _$sValues; static PveMigrateSeverity valueOf(String name) => _$sValueOf(name); diff --git a/lib/utils/dot_indicator.dart b/lib/utils/dot_indicator.dart index 5a1fc51..83e452b 100644 --- a/lib/utils/dot_indicator.dart +++ b/lib/utils/dot_indicator.dart @@ -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, diff --git a/lib/utils/proxmox_layout_builder.dart b/lib/utils/proxmox_layout_builder.dart index b4521ce..c78d6ee 100644 --- a/lib/utils/proxmox_layout_builder.dart +++ b/lib/utils/proxmox_layout_builder.dart @@ -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; diff --git a/lib/utils/renderers.dart b/lib/utils/renderers.dart index 04c24c3..d1e087f 100644 --- a/lib/utils/renderers.dart +++ b/lib/utils/renderers.dart @@ -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) { diff --git a/lib/widgets/cluster_status_widget.dart b/lib/widgets/cluster_status_widget.dart index f3e3fc1..e5fcb7d 100644 --- a/lib/widgets/cluster_status_widget.dart +++ b/lib/widgets/cluster_status_widget.dart @@ -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( diff --git a/lib/widgets/firstWelcomeScreen/pve_welcome_common.dart b/lib/widgets/firstWelcomeScreen/pve_welcome_common.dart index fa6db1c..8cd6e3a 100644 --- a/lib/widgets/firstWelcomeScreen/pve_welcome_common.dart +++ b/lib/widgets/firstWelcomeScreen/pve_welcome_common.dart @@ -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? 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) { diff --git a/lib/widgets/firstWelcomeScreen/pve_welcome_faq.dart b/lib/widgets/firstWelcomeScreen/pve_welcome_faq.dart index 9911b99..71277d4 100644 --- a/lib/widgets/firstWelcomeScreen/pve_welcome_faq.dart +++ b/lib/widgets/firstWelcomeScreen/pve_welcome_faq.dart @@ -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'), ), ), ], diff --git a/lib/widgets/firstWelcomeScreen/pve_welcome_last.dart b/lib/widgets/firstWelcomeScreen/pve_welcome_last.dart index eaae56d..5770818 100644 --- a/lib/widgets/firstWelcomeScreen/pve_welcome_last.dart +++ b/lib/widgets/firstWelcomeScreen/pve_welcome_last.dart @@ -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'), ), ], ), diff --git a/lib/widgets/firstWelcomeScreen/pve_welcome_logo.dart b/lib/widgets/firstWelcomeScreen/pve_welcome_logo.dart index f6ec8b4..d976978 100644 --- a/lib/widgets/firstWelcomeScreen/pve_welcome_logo.dart +++ b/lib/widgets/firstWelcomeScreen/pve_welcome_logo.dart @@ -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) { diff --git a/lib/widgets/firstWelcomeScreen/pve_welcome_ssl_hint.dart b/lib/widgets/firstWelcomeScreen/pve_welcome_ssl_hint.dart index 8537762..0713744 100644 --- a/lib/widgets/firstWelcomeScreen/pve_welcome_ssl_hint.dart +++ b/lib/widgets/firstWelcomeScreen/pve_welcome_ssl_hint.dart @@ -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) { diff --git a/lib/widgets/proxmox_capacity_indicator.dart b/lib/widgets/proxmox_capacity_indicator.dart index 932a56e..8e87ab0 100644 --- a/lib/widgets/proxmox_capacity_indicator.dart +++ b/lib/widgets/proxmox_capacity_indicator.dart @@ -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) { diff --git a/lib/widgets/proxmox_gauge_chart.dart b/lib/widgets/proxmox_gauge_chart.dart index 8d374d5..1e23a88 100644 --- a/lib/widgets/proxmox_gauge_chart.dart +++ b/lib/widgets/proxmox_gauge_chart.dart @@ -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( diff --git a/lib/widgets/proxmox_heartbeat_indicator.dart b/lib/widgets/proxmox_heartbeat_indicator.dart index fb28ff0..6885432 100644 --- a/lib/widgets/proxmox_heartbeat_indicator.dart +++ b/lib/widgets/proxmox_heartbeat_indicator.dart @@ -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( diff --git a/lib/widgets/proxmox_stream_builder_widget.dart b/lib/widgets/proxmox_stream_builder_widget.dart index fde1904..d3c03aa 100644 --- a/lib/widgets/proxmox_stream_builder_widget.dart +++ b/lib/widgets/proxmox_stream_builder_widget.dart @@ -11,8 +11,7 @@ abstract class ProxmoxBaseStreamBuilder, 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, return StreamListener( 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, backgroundColor: ThemeData.dark().colorScheme.error, ), ); + } }, child: StreamBuilder( stream: widget.bloc!.state, @@ -57,12 +57,11 @@ class ProxmoxStreamBuilder, final AsyncWidgetBuilder 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); diff --git a/lib/widgets/proxmox_stream_listener.dart b/lib/widgets/proxmox_stream_listener.dart index faf68e0..8a25790 100644 --- a/lib/widgets/proxmox_stream_listener.dart +++ b/lib/widgets/proxmox_stream_listener.dart @@ -9,7 +9,7 @@ class StreamListener extends StatefulWidget { final Stream stream; const StreamListener({ - Key? key, + super.key, required this.stream, required this.child, required this.onStateChange, diff --git a/lib/widgets/proxmox_tree_widget.dart b/lib/widgets/proxmox_tree_widget.dart index bcf7baa..652913a 100644 --- a/lib/widgets/proxmox_tree_widget.dart +++ b/lib/widgets/proxmox_tree_widget.dart @@ -28,9 +28,9 @@ class ProxmoxTreeItem { class ProxmoxTreeWidget extends StatefulWidget { final List? data; const ProxmoxTreeWidget({ - Key? key, + super.key, this.data, - }) : super(key: key); + }); @override _ProxmoxTreeWidgetState createState() => _ProxmoxTreeWidgetState(); @@ -41,7 +41,7 @@ class _ProxmoxTreeWidgetState extends State { 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 { onTap: root.callback != null ? () => root.callback!(root.id) : null), ); + } return Padding( padding: const EdgeInsets.only(left: 8), child: ExpansionTile( key: PageStorageKey(root.id), title: Text(root.headerValue!), leading: root.icon, - children: root.children.map(_buildTiles).toList(), onExpansionChanged: root.callback != null ? (isExpaned) => root.callback!(root.id) : null, + children: root.children.map(_buildTiles).toList(), ), ); } diff --git a/lib/widgets/pve_action_card_widget.dart b/lib/widgets/pve_action_card_widget.dart index ed80a59..2684fb0 100644 --- a/lib/widgets/pve_action_card_widget.dart +++ b/lib/widgets/pve_action_card_widget.dart @@ -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) { diff --git a/lib/widgets/pve_bridge_selector_widget.dart b/lib/widgets/pve_bridge_selector_widget.dart index f7e7e8b..f74ce55 100644 --- a/lib/widgets/pve_bridge_selector_widget.dart +++ b/lib/widgets/pve_bridge_selector_widget.dart @@ -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: >[ - for (var bridge in state?.bridges!) + for (var bridge in state.bridges!) DropdownMenuItem( + value: bridge, child: Row( children: [ 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; }, ); } diff --git a/lib/widgets/pve_cd_selector_widget.dart b/lib/widgets/pve_cd_selector_widget.dart index 0d5c75b..212c95d 100644 --- a/lib/widgets/pve_cd_selector_widget.dart +++ b/lib/widgets/pve_cd_selector_widget.dart @@ -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(context); diff --git a/lib/widgets/pve_config_switch_list_tile.dart b/lib/widgets/pve_config_switch_list_tile.dart index 621a43f..ca5eb4f 100644 --- a/lib/widgets/pve_config_switch_list_tile.dart +++ b/lib/widgets/pve_config_switch_list_tile.dart @@ -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; diff --git a/lib/widgets/pve_console_menu_widget.dart b/lib/widgets/pve_console_menu_widget.dart index aad623c..861ec76 100644 --- a/lib/widgets/pve_console_menu_widget.dart +++ b/lib/widgets/pve_console_menu_widget.dart @@ -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(); diff --git a/lib/widgets/pve_console_widget.dart b/lib/widgets/pve_console_widget.dart index 5c2086b..2d17836 100644 --- a/lib/widgets/pve_console_widget.dart +++ b/lib/widgets/pve_console_widget.dart @@ -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) { diff --git a/lib/widgets/pve_file_selector_widget.dart b/lib/widgets/pve_file_selector_widget.dart index 28d90cf..2f080b1 100644 --- a/lib/widgets/pve_file_selector_widget.dart +++ b/lib/widgets/pve_file_selector_widget.dart @@ -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) { diff --git a/lib/widgets/pve_first_welcome_screen.dart b/lib/widgets/pve_first_welcome_screen.dart index 5378d84..8e75ee6 100644 --- a/lib/widgets/pve_first_welcome_screen.dart +++ b/lib/widgets/pve_first_welcome_screen.dart @@ -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 with TickerProviderStateMixin { ); } else { return TextButton( - child: const Text("Next"), style: TextButton.styleFrom( foregroundColor: _buttonTextColor, disabledForegroundColor: _buttonDisabledTextColor, @@ -90,6 +91,7 @@ class _PveWelcomeState extends State with TickerProviderStateMixin { _controller! .nextPage(duration: _pageChangeDuration, curve: _pageChangeCurve); }, + child: const Text("Next"), ); } } diff --git a/lib/widgets/pve_guest_backup_widget.dart b/lib/widgets/pve_guest_backup_widget.dart index ea4af20..a7c01ab 100644 --- a/lib/widgets/pve_guest_backup_widget.dart +++ b/lib/widgets/pve_guest_backup_widget.dart @@ -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(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 { items: >[ 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 { items: >[ 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(() { diff --git a/lib/widgets/pve_guest_icon_widget.dart b/lib/widgets/pve_guest_icon_widget.dart index cf5b01e..dfdc86c 100644 --- a/lib/widgets/pve_guest_icon_widget.dart +++ b/lib/widgets/pve_guest_icon_widget.dart @@ -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) { diff --git a/lib/widgets/pve_guest_id_selector_widget.dart b/lib/widgets/pve_guest_id_selector_widget.dart index 1d670b1..604b60c 100644 --- a/lib/widgets/pve_guest_id_selector_widget.dart +++ b/lib/widgets/pve_guest_id_selector_widget.dart @@ -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; }, ); }); diff --git a/lib/widgets/pve_guest_migrate_widget.dart b/lib/widgets/pve_guest_migrate_widget.dart index 4b99f54..ff3ea3c 100644 --- a/lib/widgets/pve_guest_migrate_widget.dart +++ b/lib/widgets/pve_guest_migrate_widget.dart @@ -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(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 getSelectedItem(List 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('')]; } } diff --git a/lib/widgets/pve_guest_migration_connector_widget.dart b/lib/widgets/pve_guest_migration_connector_widget.dart index 8e1519d..2895c5b 100644 --- a/lib/widgets/pve_guest_migration_connector_widget.dart +++ b/lib/widgets/pve_guest_migration_connector_widget.dart @@ -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(context); diff --git a/lib/widgets/pve_guest_os_selector_widget.dart b/lib/widgets/pve_guest_os_selector_widget.dart index 55b1a2b..12ae944 100644 --- a/lib/widgets/pve_guest_os_selector_widget.dart +++ b/lib/widgets/pve_guest_os_selector_widget.dart @@ -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(context); diff --git a/lib/widgets/pve_guest_overview_header.dart b/lib/widgets/pve_guest_overview_header.dart index 83d4234..50ac655 100644 --- a/lib/widgets/pve_guest_overview_header.dart +++ b/lib/widgets/pve_guest_overview_header.dart @@ -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? 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 { 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), diff --git a/lib/widgets/pve_help_icon_button_widget.dart b/lib/widgets/pve_help_icon_button_widget.dart index 7dbc1cb..758defb 100644 --- a/lib/widgets/pve_help_icon_button_widget.dart +++ b/lib/widgets/pve_help_icon_button_widget.dart @@ -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) { diff --git a/lib/widgets/pve_lxc_options_widget.dart b/lib/widgets/pve_lxc_options_widget.dart index 350b63b..cf5d7e2 100644 --- a/lib/widgets/pve_lxc_options_widget.dart +++ b/lib/widgets/pve_lxc_options_widget.dart @@ -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( diff --git a/lib/widgets/pve_lxc_overview.dart b/lib/widgets/pve_lxc_overview.dart index df73e85..b5b7c4a 100644 --- a/lib/widgets/pve_lxc_overview.dart +++ b/lib/widgets/pve_lxc_overview.dart @@ -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(context); @@ -229,7 +229,7 @@ class PveLxcOverview extends StatelessWidget { leading: const Icon(FontAwesomeIcons.ethernet), dense: true, - title: Text('$net'), + title: Text(net), ), ]), PveResourceDataCardWidget( diff --git a/lib/widgets/pve_lxc_power_settings_widget.dart b/lib/widgets/pve_lxc_power_settings_widget.dart index 6a099a7..69938ea 100644 --- a/lib/widgets/pve_lxc_power_settings_widget.dart +++ b/lib/widgets/pve_lxc_power_settings_widget.dart @@ -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( diff --git a/lib/widgets/pve_main_navigation_drawer.dart b/lib/widgets/pve_main_navigation_drawer.dart index 172f61c..8d5dbfd 100644 --- a/lib/widgets/pve_main_navigation_drawer.dart +++ b/lib/widgets/pve_main_navigation_drawer.dart @@ -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"), ) ], ), diff --git a/lib/widgets/pve_network_model_selector.dart b/lib/widgets/pve_network_model_selector.dart index 2cf62df..31c8d34 100644 --- a/lib/widgets/pve_network_model_selector.dart +++ b/lib/widgets/pve_network_model_selector.dart @@ -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) { diff --git a/lib/widgets/pve_node_overview.dart b/lib/widgets/pve_node_overview.dart index f804ae4..3440fab 100644 --- a/lib/widgets/pve_node_overview.dart +++ b/lib/widgets/pve_node_overview.dart @@ -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(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( diff --git a/lib/widgets/pve_node_selector_widget.dart b/lib/widgets/pve_node_selector_widget.dart index 49ca3d2..1748a30 100644 --- a/lib/widgets/pve_node_selector_widget.dart +++ b/lib/widgets/pve_node_selector_widget.dart @@ -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: [ Text(item.nodeName), @@ -32,7 +33,6 @@ class PveNodeSelector extends StatelessWidget { Text(item.renderCpuUsage()) ], ), - value: item.nodeName, )) .toList(), selectedItemBuilder: (context) => state.availableNodes diff --git a/lib/widgets/pve_qemu_options_widget.dart b/lib/widgets/pve_qemu_options_widget.dart index 8a6d6d4..664d6d6 100644 --- a/lib/widgets/pve_qemu_options_widget.dart +++ b/lib/widgets/pve_qemu_options_widget.dart @@ -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(); - PveQemuOptions({Key? key, required this.guestID}) : super(key: key); + PveQemuOptions({super.key, required this.guestID}); @override Widget build(BuildContext context) { diff --git a/lib/widgets/pve_qemu_overview.dart b/lib/widgets/pve_qemu_overview.dart index 43fc40b..cb9dc45 100644 --- a/lib/widgets/pve_qemu_overview.dart +++ b/lib/widgets/pve_qemu_overview.dart @@ -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( diff --git a/lib/widgets/pve_qemu_power_settings_widget.dart b/lib/widgets/pve_qemu_power_settings_widget.dart index da51071..e402b83 100644 --- a/lib/widgets/pve_qemu_power_settings_widget.dart +++ b/lib/widgets/pve_qemu_power_settings_widget.dart @@ -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(context); diff --git a/lib/widgets/pve_resource_data_card_widget.dart b/lib/widgets/pve_resource_data_card_widget.dart index 545a869..f9acea6 100644 --- a/lib/widgets/pve_resource_data_card_widget.dart +++ b/lib/widgets/pve_resource_data_card_widget.dart @@ -11,7 +11,7 @@ class PveResourceDataCardWidget extends StatelessWidget { final List 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); diff --git a/lib/widgets/pve_resource_overview_widget.dart b/lib/widgets/pve_resource_overview_widget.dart index 0a10ba5..0f09521 100644 --- a/lib/widgets/pve_resource_overview_widget.dart +++ b/lib/widgets/pve_resource_overview_widget.dart @@ -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(context); diff --git a/lib/widgets/pve_resource_status_chip_widget.dart b/lib/widgets/pve_resource_status_chip_widget.dart index 53429c0..3a6df89 100644 --- a/lib/widgets/pve_resource_status_chip_widget.dart +++ b/lib/widgets/pve_resource_status_chip_widget.dart @@ -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) { diff --git a/lib/widgets/pve_rrd_chart_widget.dart b/lib/widgets/pve_rrd_chart_widget.dart index 2f01e91..b25a54b 100644 --- a/lib/widgets/pve_rrd_chart_widget.dart +++ b/lib/widgets/pve_rrd_chart_widget.dart @@ -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 { 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 { 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!, ], diff --git a/lib/widgets/pve_splash_screen.dart b/lib/widgets/pve_splash_screen.dart index 9829c9d..2c2bb58 100644 --- a/lib/widgets/pve_splash_screen.dart +++ b/lib/widgets/pve_splash_screen.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; class PveSplashScreen extends StatelessWidget { + const PveSplashScreen({super.key}); + @override Widget build(BuildContext context) { return Container( diff --git a/lib/widgets/pve_storage_selector_widget.dart b/lib/widgets/pve_storage_selector_widget.dart index 8dc67a4..110e2ce 100644 --- a/lib/widgets/pve_storage_selector_widget.dart +++ b/lib/widgets/pve_storage_selector_widget.dart @@ -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: >[ 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) => diff --git a/lib/widgets/pve_subscription_alert_dialog.dart b/lib/widgets/pve_subscription_alert_dialog.dart index 747714a..da8d15e 100644 --- a/lib/widgets/pve_subscription_alert_dialog.dart +++ b/lib/widgets/pve_subscription_alert_dialog.dart @@ -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( diff --git a/lib/widgets/pve_task_log_expansiontile_widget.dart b/lib/widgets/pve_task_log_expansiontile_widget.dart index 084fc44..95995f4 100644 --- a/lib/widgets/pve_task_log_expansiontile_widget.dart +++ b/lib/widgets/pve_task_log_expansiontile_widget.dart @@ -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 { ), ListTile( leading: const Icon(Icons.description), - title: Text("${widget.task.status}"), + title: Text(widget.task.status), dense: true, subtitle: const Text('Shortlog'), ), diff --git a/lib/widgets/pve_task_log_widget.dart b/lib/widgets/pve_task_log_widget.dart index bcf0a24..cfcba98 100644 --- a/lib/widgets/pve_task_log_widget.dart +++ b/lib/widgets/pve_task_log_widget.dart @@ -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 { - ScrollController _scrollController = new ScrollController(); + ScrollController _scrollController = ScrollController(); @override void initState() { super.initState(); diff --git a/lib/widgets/pve_vm_name_widget.dart b/lib/widgets/pve_vm_name_widget.dart index c44b68e..bc2c28d 100644 --- a/lib/widgets/pve_vm_name_widget.dart +++ b/lib/widgets/pve_vm_name_widget.dart @@ -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(context);