From a443e6289509e93ff3383e466d872787ddf6e718 Mon Sep 17 00:00:00 2001 From: jld3103 Date: Fri, 8 Sep 2023 13:58:43 +0200 Subject: [PATCH] perf: Stop using unnecessary spread operators Signed-off-by: jld3103 --- .../dynamite/lib/src/builder/client.dart | 3 +-- .../dynamite/lib/src/builder/ofs_builder.dart | 24 +++++++------------ packages/file_icons/bin/file_icons.dart | 7 ++---- packages/neon/neon/lib/src/app.dart | 3 +-- .../lib/src/pages/login_check_account.dart | 3 +-- .../src/pages/login_check_server_status.dart | 3 +-- .../lib/src/pages/nextcloud_app_settings.dart | 16 +++++-------- .../neon/neon/lib/src/pages/settings.dart | 21 ++++++---------- .../settings/widgets/settings_category.dart | 4 +--- .../neon/lib/src/utils/account_options.dart | 4 +--- .../neon/lib/src/utils/global_options.dart | 7 ++---- .../neon/lib/src/widgets/account_tile.dart | 3 +-- .../neon/neon/lib/src/widgets/app_bar.dart | 16 +++++-------- .../src/widgets/app_implementation_icon.dart | 3 +-- .../neon/neon/lib/src/widgets/list_view.dart | 7 ++---- .../src/widgets/unified_search_results.dart | 6 ++--- .../neon/lib/src/widgets/user_avatar.dart | 3 +-- .../neon_files/lib/dialogs/choose_create.dart | 3 +-- packages/neon/neon_files/lib/options.dart | 11 +++------ .../neon/neon_files/lib/pages/details.dart | 12 ++++------ .../neon/neon_files/lib/widgets/actions.dart | 6 ++--- .../neon_files/lib/widgets/browser_view.dart | 12 ++++------ .../neon/neon_news/lib/dialogs/add_feed.dart | 3 +-- .../neon_news/lib/widgets/articles_view.dart | 7 ++---- .../neon_news/lib/widgets/feeds_view.dart | 6 ++--- .../neon_notes/lib/dialogs/create_note.dart | 3 +-- .../lib/dialogs/select_category.dart | 3 +-- packages/nextcloud/lib/src/client.dart | 6 ++--- 28 files changed, 67 insertions(+), 138 deletions(-) diff --git a/packages/dynamite/dynamite/lib/src/builder/client.dart b/packages/dynamite/dynamite/lib/src/builder/client.dart index 636fc18e..8fa86baf 100644 --- a/packages/dynamite/dynamite/lib/src/builder/client.dart +++ b/packages/dynamite/dynamite/lib/src/builder/client.dart @@ -169,14 +169,13 @@ Class buildRootClient( ..toSuper = true ..named = true, ), - if (spec.hasAnySecurity) ...[ + if (spec.hasAnySecurity) Parameter( (final b) => b ..name = 'authentications' ..toSuper = true ..named = true, ), - ], ]), ), Constructor( diff --git a/packages/dynamite/dynamite/lib/src/builder/ofs_builder.dart b/packages/dynamite/dynamite/lib/src/builder/ofs_builder.dart index 04583373..70c9454c 100644 --- a/packages/dynamite/dynamite/lib/src/builder/ofs_builder.dart +++ b/packages/dynamite/dynamite/lib/src/builder/ofs_builder.dart @@ -239,33 +239,25 @@ TypeResult resolveOfs( (final entry) => entry.value.endsWith('/${result.name.replaceFirst(state.classPrefix, '')}'), ) - .map((final entry) => entry.key)) ...[ + .map((final entry) => entry.key)) " || discriminator == '$key'", - ], ') {', ], ], 'try {', - if (result is TypeResultBase || result is TypeResultEnum) ...[ - 'result._${fields[result.name]!} = ${result.deserialize('data')};', - ] else ...[ + if (result is TypeResultBase || result is TypeResultEnum) + 'result._${fields[result.name]!} = ${result.deserialize('data')};' + else 'result._${fields[result.name]!} = ${result.deserialize('data')}.toBuilder();', - ], '} catch (_) {', - if (schema.discriminator != null) ...[ - 'rethrow;', - ], + if (schema.discriminator != null) 'rethrow;', '}', - if (schema.discriminator != null) ...[ - '}', - ], + if (schema.discriminator != null) '}', ], - if (schema.oneOf != null) ...[ + if (schema.oneOf != null) "assert([${fields.values.map((final e) => 'result._$e').join(',')}].where((final x) => x != null).length >= 1, 'Need oneOf for \${result._data}');", - ], - if (schema.anyOf != null) ...[ + if (schema.anyOf != null) "assert([${fields.values.map((final e) => 'result._$e').join(',')}].where((final x) => x != null).length >= 1, 'Need anyOf for \${result._data}');", - ], 'return result.build();', ].join(), ); diff --git a/packages/file_icons/bin/file_icons.dart b/packages/file_icons/bin/file_icons.dart index 8a980a0e..2257ea6e 100644 --- a/packages/file_icons/bin/file_icons.dart +++ b/packages/file_icons/bin/file_icons.dart @@ -100,14 +100,11 @@ void generateData() { '// Code points', // This filters unused codepoints. for (final type in codePoints.keys - .where((final type) => iconSet.keys.map((final pattern) => iconSet[pattern]![0] == type).contains(true))) ...[ + .where((final type) => iconSet.keys.map((final pattern) => iconSet[pattern]![0] == type).contains(true))) 'const ${_toVariableName(type)} = ${codePoints[type]};', - ], '', '// Colors', - for (final colorName in colors.keys) ...[ - 'const ${_toVariableName(colorName)} = ${colors[colorName]};', - ], + for (final colorName in colors.keys) 'const ${_toVariableName(colorName)} = ${colors[colorName]};', '', "const _fontFamily = 'Seti';", "const _fontPackage = 'file_icons';", diff --git a/packages/neon/neon/lib/src/app.dart b/packages/neon/neon/lib/src/app.dart index 29e8a5f7..5689c6a0 100644 --- a/packages/neon/neon/lib/src/app.dart +++ b/packages/neon/neon/lib/src/app.dart @@ -108,13 +108,12 @@ class _NeonAppState extends State with WidgetsBindingObserver, tray.Tra await tray.trayManager.setContextMenu( tray.Menu( items: [ - for (final app in _appImplementations) ...[ + for (final app in _appImplementations) tray.MenuItem( key: 'app_${app.id}', label: app.nameFromLocalization(localizations), // TODO: Add icons which should work on macOS and Windows ), - ], tray.MenuItem.separator(), tray.MenuItem( key: 'show_hide', diff --git a/packages/neon/neon/lib/src/pages/login_check_account.dart b/packages/neon/neon/lib/src/pages/login_check_account.dart index b117aa6e..37c5ac63 100644 --- a/packages/neon/neon/lib/src/pages/login_check_account.dart +++ b/packages/neon/neon/lib/src/pages/login_check_account.dart @@ -63,7 +63,7 @@ class _LoginCheckAccountPageState extends State { builder: (final context, final state) => Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - if (state.hasError) ...[ + if (state.hasError) Builder( builder: (final context) { final details = NeonException.getDetails(context, state.error); @@ -75,7 +75,6 @@ class _LoginCheckAccountPageState extends State { ); }, ), - ], _buildAccountTile(state), Align( alignment: Alignment.bottomRight, diff --git a/packages/neon/neon/lib/src/pages/login_check_server_status.dart b/packages/neon/neon/lib/src/pages/login_check_server_status.dart index 7c777669..5e02bf98 100644 --- a/packages/neon/neon/lib/src/pages/login_check_server_status.dart +++ b/packages/neon/neon/lib/src/pages/login_check_server_status.dart @@ -63,12 +63,11 @@ class _LoginCheckServerStatusPageState extends State return Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - if (state.hasError) ...[ + if (state.hasError) NeonValidationTile( title: NeonException.getDetails(context, state.error).text, state: ValidationState.failure, ), - ], _buildServerVersionTile(state), _buildMaintenanceModeTile(state), Align( diff --git a/packages/neon/neon/lib/src/pages/nextcloud_app_settings.dart b/packages/neon/neon/lib/src/pages/nextcloud_app_settings.dart index 391b5a94..d3bad3ea 100644 --- a/packages/neon/neon/lib/src/pages/nextcloud_app_settings.dart +++ b/packages/neon/neon/lib/src/pages/nextcloud_app_settings.dart @@ -41,29 +41,25 @@ class NextcloudAppSettingsPage extends StatelessWidget { final body = SettingsList( categories: [ - for (final category in [...appImplementation.options.categories, null]) ...[ - if (appImplementation.options.options.where((final option) => option.category == category).isNotEmpty) ...[ + for (final category in [...appImplementation.options.categories, null]) + if (appImplementation.options.options.where((final option) => option.category == category).isNotEmpty) SettingsCategory( title: Text( category != null ? category.name(context) : AppLocalizations.of(context).optionsCategoryOther, ), tiles: [ for (final option - in appImplementation.options.options.where((final option) => option.category == category)) ...[ - if (option is ToggleOption) ...[ + in appImplementation.options.options.where((final option) => option.category == category)) + if (option is ToggleOption) CheckBoxSettingsTile( option: option, - ), - ] else if (option is SelectOption) ...[ + ) + else if (option is SelectOption) DropdownButtonSettingsTile( option: option, ), - ], - ], ], ), - ], - ], ], ); diff --git a/packages/neon/neon/lib/src/pages/settings.dart b/packages/neon/neon/lib/src/pages/settings.dart index 8923f7d4..a7a08740 100644 --- a/packages/neon/neon/lib/src/pages/settings.dart +++ b/packages/neon/neon/lib/src/pages/settings.dart @@ -98,8 +98,8 @@ class _SettingsPageState extends State { title: Text(AppLocalizations.of(context).settingsApps), key: ValueKey(SettingsCategories.apps.name), tiles: [ - for (final appImplementation in appImplementations) ...[ - if (appImplementation.options.options.isNotEmpty) ...[ + for (final appImplementation in appImplementations) + if (appImplementation.options.options.isNotEmpty) CustomSettingsTile( leading: appImplementation.buildIcon(), title: Text(appImplementation.name(context)), @@ -107,8 +107,6 @@ class _SettingsPageState extends State { NextcloudAppSettingsRoute(appid: appImplementation.id).go(context); }, ), - ], - ], ], ), SettingsCategory( @@ -135,12 +133,12 @@ class _SettingsPageState extends State { ), ], ), - if (NeonPlatform.instance.canUsePushNotifications) ...[ + if (NeonPlatform.instance.canUsePushNotifications) SettingsCategory( title: Text(AppLocalizations.of(context).optionsCategoryPushNotifications), key: ValueKey(SettingsCategories.pushNotifications.name), tiles: [ - if (!globalOptions.pushNotificationsEnabled.enabled) ...[ + if (!globalOptions.pushNotificationsEnabled.enabled) TextSettingsTile( text: AppLocalizations.of(context).globalOptionsPushNotificationsEnabledDisabledNotice, style: TextStyle( @@ -149,7 +147,6 @@ class _SettingsPageState extends State { color: Theme.of(context).colorScheme.error, ), ), - ], CheckBoxSettingsTile( option: globalOptions.pushNotificationsEnabled, ), @@ -158,8 +155,7 @@ class _SettingsPageState extends State { ), ], ), - ], - if (NeonPlatform.instance.canUseWindowManager) ...[ + if (NeonPlatform.instance.canUseWindowManager) SettingsCategory( title: Text(AppLocalizations.of(context).optionsCategoryStartup), key: ValueKey(SettingsCategories.startup.name), @@ -172,8 +168,7 @@ class _SettingsPageState extends State { ), ], ), - ], - if (NeonPlatform.instance.canUseWindowManager && NeonPlatform.instance.canUseSystemTray) ...[ + if (NeonPlatform.instance.canUseWindowManager && NeonPlatform.instance.canUseSystemTray) SettingsCategory( title: Text(AppLocalizations.of(context).optionsCategorySystemTray), key: ValueKey(SettingsCategories.systemTray.name), @@ -186,7 +181,6 @@ class _SettingsPageState extends State { ), ], ), - ], SettingsCategory( title: Text(AppLocalizations.of(context).optionsCategoryAccounts), key: ValueKey(SettingsCategories.accounts.name), @@ -199,14 +193,13 @@ class _SettingsPageState extends State { option: globalOptions.initialAccount, ), ], - for (final account in accountsSnapshot.requireData) ...[ + for (final account in accountsSnapshot.requireData) AccountSettingsTile( account: account, onTap: () { AccountSettingsRoute(accountid: account.id).go(context); }, ), - ], CustomSettingsTile( title: ElevatedButton.icon( onPressed: () async => const LoginRoute().push(context), diff --git a/packages/neon/neon/lib/src/settings/widgets/settings_category.dart b/packages/neon/neon/lib/src/settings/widgets/settings_category.dart index 674d3432..74032141 100644 --- a/packages/neon/neon/lib/src/settings/widgets/settings_category.dart +++ b/packages/neon/neon/lib/src/settings/widgets/settings_category.dart @@ -18,9 +18,7 @@ class SettingsCategory extends StatelessWidget { Widget build(final BuildContext context) => Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (title != null) ...[ - title!, - ], + if (title != null) title!, ...tiles, ] .intersperse( diff --git a/packages/neon/neon/lib/src/utils/account_options.dart b/packages/neon/neon/lib/src/utils/account_options.dart index 2fa7f62c..fdf8b711 100644 --- a/packages/neon/neon/lib/src/utils/account_options.dart +++ b/packages/neon/neon/lib/src/utils/account_options.dart @@ -20,9 +20,7 @@ class AccountSpecificOptions extends OptionsCollection { initialApp.values = { null: (final context) => AppLocalizations.of(context).accountOptionsAutomatic, - for (final app in result.requireData) ...{ - app.id: app.name, - }, + for (final app in result.requireData) app.id: app.name, }; }); } diff --git a/packages/neon/neon/lib/src/utils/global_options.dart b/packages/neon/neon/lib/src/utils/global_options.dart index f4821c06..ac39f9c9 100644 --- a/packages/neon/neon/lib/src/utils/global_options.dart +++ b/packages/neon/neon/lib/src/utils/global_options.dart @@ -103,9 +103,7 @@ class GlobalOptions extends OptionsCollection { Future updateDistributors(final List distributors) async { pushNotificationsDistributor.values = { - for (final distributor in distributors) ...{ - distributor: _distributorsMap[distributor] ?? (final _) => distributor, - }, + for (final distributor in distributors) distributor: _distributorsMap[distributor] ?? (final _) => distributor, }; final allowed = distributors.isNotEmpty; @@ -210,10 +208,9 @@ class GlobalOptions extends OptionsCollection { defaultValue: Platform.isAndroid || Platform.isIOS ? NavigationMode.drawer : NavigationMode.drawerAlwaysVisible, values: { NavigationMode.drawer: (final context) => AppLocalizations.of(context).globalOptionsNavigationModeDrawer, - if (!Platform.isAndroid && !Platform.isIOS) ...{ + if (!Platform.isAndroid && !Platform.isIOS) NavigationMode.drawerAlwaysVisible: (final context) => AppLocalizations.of(context).globalOptionsNavigationModeDrawerAlwaysVisible, - }, // ignore: deprecated_member_use_from_same_package NavigationMode.quickBar: (final context) => AppLocalizations.of(context).globalOptionsNavigationModeQuickBar, }, diff --git a/packages/neon/neon/lib/src/widgets/account_tile.dart b/packages/neon/neon/lib/src/widgets/account_tile.dart index bffa171f..09e0d907 100644 --- a/packages/neon/neon/lib/src/widgets/account_tile.dart +++ b/packages/neon/neon/lib/src/widgets/account_tile.dart @@ -54,7 +54,7 @@ class NeonAccountTile extends StatelessWidget { stream: userDetailsBloc.userDetails, builder: (final context, final userDetails) => Row( children: [ - if (userDetails.hasData) ...[ + if (userDetails.hasData) Flexible( child: Text( userDetails.requireData.displayname, @@ -64,7 +64,6 @@ class NeonAccountTile extends StatelessWidget { overflow: TextOverflow.ellipsis, ), ), - ], if (userDetails.isLoading) ...[ const SizedBox( width: 5, diff --git a/packages/neon/neon/lib/src/widgets/app_bar.dart b/packages/neon/neon/lib/src/widgets/app_bar.dart index 66782d4a..f142a0d5 100644 --- a/packages/neon/neon/lib/src/widgets/app_bar.dart +++ b/packages/neon/neon/lib/src/widgets/app_bar.dart @@ -78,13 +78,12 @@ class _NeonAppBarState extends State { children: [ Row( children: [ - if (activeAppSnapshot.hasData) ...[ + if (activeAppSnapshot.hasData) Flexible( child: Text( activeAppSnapshot.requireData.name(context), ), ), - ], if (appImplementations.hasError) ...[ const SizedBox( width: 8, @@ -107,16 +106,15 @@ class _NeonAppBarState extends State { ], ], ), - if (accounts.length > 1) ...[ + if (accounts.length > 1) Text( account.humanReadableID, style: Theme.of(context).textTheme.bodySmall, ), - ], ], ), actions: [ - if (unifiedSearchEnabled) ...[ + if (unifiedSearchEnabled) Flexible( child: SearchBar( focusNode: _searchBarFocusNode, @@ -136,10 +134,9 @@ class _NeonAppBarState extends State { ), ], ), - ), - ] else ...[ + ) + else const SearchIconButton(), - ], const NotificationIconButton(), const AccountSwitcherButton(), ], @@ -220,12 +217,11 @@ class _NotificationIconButtonState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(app.name(context)), - if (_accounts.length > 1) ...[ + if (_accounts.length > 1) Text( _account.humanReadableID, style: Theme.of(context).textTheme.bodySmall, ), - ], ], ), ), diff --git a/packages/neon/neon/lib/src/widgets/app_implementation_icon.dart b/packages/neon/neon/lib/src/widgets/app_implementation_icon.dart index 457f35b2..0861e181 100644 --- a/packages/neon/neon/lib/src/widgets/app_implementation_icon.dart +++ b/packages/neon/neon/lib/src/widgets/app_implementation_icon.dart @@ -32,7 +32,7 @@ class NeonAppImplementationIcon extends StatelessWidget { color: color, ), ), - if (unreadCount > 0) ...[ + if (unreadCount > 0) Text( unreadCount.toString(), style: TextStyle( @@ -40,7 +40,6 @@ class NeonAppImplementationIcon extends StatelessWidget { fontWeight: FontWeight.bold, ), ), - ], ], ); } diff --git a/packages/neon/neon/lib/src/widgets/list_view.dart b/packages/neon/neon/lib/src/widgets/list_view.dart index 110c3ccb..e5ae380a 100644 --- a/packages/neon/neon/lib/src/widgets/list_view.dart +++ b/packages/neon/neon/lib/src/widgets/list_view.dart @@ -51,11 +51,8 @@ class NeonListView extends StatelessWidget { error, onRetry: onRefresh, ), - if (items != null) ...[ - for (final item in items!) ...[ - builder(context, item), - ], - ], + if (items != null) + for (final item in items!) builder(context, item), ], ), ), diff --git a/packages/neon/neon/lib/src/widgets/unified_search_results.dart b/packages/neon/neon/lib/src/widgets/unified_search_results.dart index a496380d..b5d84a68 100644 --- a/packages/neon/neon/lib/src/widgets/unified_search_results.dart +++ b/packages/neon/neon/lib/src/widgets/unified_search_results.dart @@ -73,7 +73,7 @@ class NeonUnifiedSearchResults extends StatelessWidget { NeonLinearProgressIndicator( visible: result.isLoading, ), - if (entries.isEmpty) ...[ + if (entries.isEmpty) ListTile( leading: const Icon( Icons.close, @@ -81,8 +81,7 @@ class NeonUnifiedSearchResults extends StatelessWidget { ), title: Text(AppLocalizations.of(context).searchNoResults), ), - ], - for (final entry in entries) ...[ + for (final entry in entries) ListTile( leading: NeonImageWrapper( size: const Size.square(kAvatarSize), @@ -95,7 +94,6 @@ class NeonUnifiedSearchResults extends StatelessWidget { context.go(entry.resourceUrl); }, ), - ], ], ), ), diff --git a/packages/neon/neon/lib/src/widgets/user_avatar.dart b/packages/neon/neon/lib/src/widgets/user_avatar.dart index 65949cd5..19e0fdfe 100644 --- a/packages/neon/neon/lib/src/widgets/user_avatar.dart +++ b/packages/neon/neon/lib/src/widgets/user_avatar.dart @@ -84,12 +84,11 @@ class _UserAvatarState extends State { ), ), ), - if (widget.showStatus) ...[ + if (widget.showStatus) ResultBuilder( stream: _userStatusBloc.statuses.mapNotNull((final statuses) => statuses[widget.username]), builder: _userStatusIconBuilder, ), - ], ], ); }, diff --git a/packages/neon/neon_files/lib/dialogs/choose_create.dart b/packages/neon/neon_files/lib/dialogs/choose_create.dart index c86b3f3e..3b3ad84b 100644 --- a/packages/neon/neon_files/lib/dialogs/choose_create.dart +++ b/packages/neon/neon_files/lib/dialogs/choose_create.dart @@ -77,7 +77,7 @@ class _FilesChooseCreateDialogState extends State { } }, ), - if (NeonPlatform.instance.canUseCamera) ...[ + if (NeonPlatform.instance.canUseCamera) ListTile( leading: Icon( MdiIcons.cameraPlus, @@ -94,7 +94,6 @@ class _FilesChooseCreateDialogState extends State { } }, ), - ], ListTile( leading: Icon( MdiIcons.folderPlus, diff --git a/packages/neon/neon_files/lib/options.dart b/packages/neon/neon_files/lib/options.dart index 620b3857..2200ad29 100644 --- a/packages/neon/neon_files/lib/options.dart +++ b/packages/neon/neon_files/lib/options.dart @@ -67,9 +67,7 @@ class FilesAppSpecificOptions extends NextcloudAppOptions { label: (final context) => AppLocalizations.of(context).optionsUploadQueueParallelism, defaultValue: 4, values: { - for (var i = 1; i <= 16; i = i * 2) ...{ - i: (final _) => i.toString(), - }, + for (var i = 1; i <= 16; i = i * 2) i: (final _) => i.toString(), }, ); @@ -80,9 +78,7 @@ class FilesAppSpecificOptions extends NextcloudAppOptions { label: (final context) => AppLocalizations.of(context).optionsDownloadQueueParallelism, defaultValue: 4, values: { - for (var i = 1; i <= 16; i = i * 2) ...{ - i: (final _) => i.toString(), - }, + for (var i = 1; i <= 16; i = i * 2) i: (final _) => i.toString(), }, ); @@ -96,9 +92,8 @@ class FilesAppSpecificOptions extends NextcloudAppOptions { 2 * 2024, 6 * 1024, 10 * 1024, - ]) ...{ + ]) _mb(i): (final _) => filesize(_mb(i)), - }, }; int _mb(final int i) => i * 1024 * 1024; diff --git a/packages/neon/neon_files/lib/pages/details.dart b/packages/neon/neon_files/lib/pages/details.dart index f51f87b6..c2f15992 100644 --- a/packages/neon/neon_files/lib/pages/details.dart +++ b/packages/neon/neon_files/lib/pages/details.dart @@ -45,28 +45,24 @@ class FilesDetailsPage extends StatelessWidget { : AppLocalizations.of(context).detailsFileName: details.name, AppLocalizations.of(context).detailsParentFolder: details.path.length == 1 ? '/' : details.path.sublist(0, details.path.length - 1).join('/'), - if (details.size != null) ...{ + if (details.size != null) details.isDirectory ? AppLocalizations.of(context).detailsFolderSize : AppLocalizations.of(context).detailsFileSize: filesize(details.size, 1), - }, - if (details.lastModified != null) ...{ + if (details.lastModified != null) AppLocalizations.of(context).detailsLastModified: details.lastModified!.toLocal().toIso8601String(), - }, - if (details.isFavorite != null) ...{ + if (details.isFavorite != null) AppLocalizations.of(context).detailsIsFavorite: details.isFavorite! ? AppLocalizations.of(context).actionYes : AppLocalizations.of(context).actionNo, - }, - }.entries) ...[ + }.entries) DataRow( cells: [ DataCell(Text(entry.key)), DataCell(Text(entry.value)), ], ), - ], ], ), ], diff --git a/packages/neon/neon_files/lib/widgets/actions.dart b/packages/neon/neon_files/lib/widgets/actions.dart index 1e39ea41..ff360575 100644 --- a/packages/neon/neon_files/lib/widgets/actions.dart +++ b/packages/neon/neon_files/lib/widgets/actions.dart @@ -118,7 +118,7 @@ class FileActions extends StatelessWidget { @override Widget build(final BuildContext context) => PopupMenuButton( itemBuilder: (final context) => [ - if (details.isFavorite != null) ...[ + if (details.isFavorite != null) PopupMenuItem( value: FilesFileAction.toggleFavorite, child: Text( @@ -127,7 +127,6 @@ class FileActions extends StatelessWidget { : AppLocalizations.of(context).addToFavorites, ), ), - ], PopupMenuItem( value: FilesFileAction.details, child: Text(AppLocalizations.of(context).details), @@ -145,12 +144,11 @@ class FileActions extends StatelessWidget { child: Text(AppLocalizations.of(context).actionCopy), ), // TODO: https://github.com/provokateurin/nextcloud-neon/issues/4 - if (!details.isDirectory) ...[ + if (!details.isDirectory) PopupMenuItem( value: FilesFileAction.sync, child: Text(AppLocalizations.of(context).actionSync), ), - ], PopupMenuItem( value: FilesFileAction.delete, child: Text(AppLocalizations.of(context).actionDelete), diff --git a/packages/neon/neon_files/lib/widgets/browser_view.dart b/packages/neon/neon_files/lib/widgets/browser_view.dart index fe2ef75e..7c5ecefe 100644 --- a/packages/neon/neon_files/lib/widgets/browser_view.dart +++ b/packages/neon/neon_files/lib/widgets/browser_view.dart @@ -75,7 +75,7 @@ class _FilesBrowserViewState extends State { for (final uploadTask in tasksSnapshot.requireData.whereType().where( (final task) => sorted.where((final file) => _pathMatchesFile(task.path, file.name)).isEmpty, - )) ...[ + )) FileListTile( bloc: widget.filesBloc, browserBloc: widget.bloc, @@ -84,10 +84,9 @@ class _FilesBrowserViewState extends State { ), mode: widget.mode, ), - ], - for (final file in sorted) ...[ + for (final file in sorted) if ((widget.mode != FilesBrowserMode.selectDirectory || file.isDirectory) && - (!file.isHidden || showHiddenFiles)) ...[ + (!file.isHidden || showHiddenFiles)) Builder( builder: (final context) { final matchingTask = tasksSnapshot.requireData @@ -111,8 +110,6 @@ class _FilesBrowserViewState extends State { ); }, ), - ], - ], ], isLoading: files.isLoading, error: files.error, @@ -143,7 +140,7 @@ class _FilesBrowserViewState extends State { widget.bloc.setPath([]); }, ), - for (var i = 0; i < pathSnapshot.requireData.length; i++) ...[ + for (var i = 0; i < pathSnapshot.requireData.length; i++) Builder( builder: (final context) { final path = pathSnapshot.requireData.sublist(0, i + 1); @@ -162,7 +159,6 @@ class _FilesBrowserViewState extends State { ); }, ), - ], ] .intersperse( const Icon( diff --git a/packages/neon/neon_news/lib/dialogs/add_feed.dart b/packages/neon/neon_news/lib/dialogs/add_feed.dart index 4c640a29..f63c0669 100644 --- a/packages/neon/neon_news/lib/dialogs/add_feed.dart +++ b/packages/neon/neon_news/lib/dialogs/add_feed.dart @@ -83,7 +83,7 @@ class _NewsAddFeedDialogState extends State { visible: folders.isLoading, ), ), - if (folders.hasData) ...[ + if (folders.hasData) NewsFolderSelect( folders: folders.requireData, value: folder, @@ -93,7 +93,6 @@ class _NewsAddFeedDialogState extends State { }); }, ), - ], ], ElevatedButton( onPressed: folders.hasData ? submit : null, diff --git a/packages/neon/neon_news/lib/widgets/articles_view.dart b/packages/neon/neon_news/lib/widgets/articles_view.dart index e9d9abb9..02bd0ad8 100644 --- a/packages/neon/neon_news/lib/widgets/articles_view.dart +++ b/packages/neon/neon_news/lib/widgets/articles_view.dart @@ -61,9 +61,7 @@ class _NewsArticlesViewState extends State { items: [ FilterType.all, FilterType.unread, - if (widget.bloc.listType == null) ...[ - FilterType.starred, - ], + if (widget.bloc.listType == null) FilterType.starred, ].map>( (final a) { late final String label; @@ -112,13 +110,12 @@ class _NewsArticlesViewState extends State { : Theme.of(context).textTheme.titleMedium!.copyWith(color: Theme.of(context).disabledColor), ), ), - if (article.mediaThumbnail != null) ...[ + if (article.mediaThumbnail != null) NeonCachedImage.url( url: article.mediaThumbnail!, size: const Size(100, 50), fit: BoxFit.cover, ), - ], ], ), subtitle: Row( diff --git a/packages/neon/neon_news/lib/widgets/feeds_view.dart b/packages/neon/neon_news/lib/widgets/feeds_view.dart index 107c3ffe..e823eacd 100644 --- a/packages/neon/neon_news/lib/widgets/feeds_view.dart +++ b/packages/neon/neon_news/lib/widgets/feeds_view.dart @@ -61,7 +61,7 @@ class NewsFeedsView extends StatelessWidget { trailing: Row( mainAxisSize: MainAxisSize.min, children: [ - if (feed.updateErrorCount > 0) ...[ + if (feed.updateErrorCount > 0) IconButton( onPressed: () async { await showDialog( @@ -80,7 +80,6 @@ class NewsFeedsView extends StatelessWidget { ), ), ), - ], PopupMenuButton( itemBuilder: (final context) => [ PopupMenuItem( @@ -95,12 +94,11 @@ class NewsFeedsView extends StatelessWidget { value: NewsFeedAction.rename, child: Text(AppLocalizations.of(context).actionRename), ), - if (folders.isNotEmpty) ...[ + if (folders.isNotEmpty) PopupMenuItem( value: NewsFeedAction.move, child: Text(AppLocalizations.of(context).actionMove), ), - ], ], onSelected: (final action) async { switch (action) { diff --git a/packages/neon/neon_notes/lib/dialogs/create_note.dart b/packages/neon/neon_notes/lib/dialogs/create_note.dart index fd3d8598..1092b0f8 100644 --- a/packages/neon/neon_notes/lib/dialogs/create_note.dart +++ b/packages/neon/neon_notes/lib/dialogs/create_note.dart @@ -65,7 +65,7 @@ class _NotesCreateNoteDialogState extends State { visible: notes.isLoading, ), ), - if (notes.hasData) ...[ + if (notes.hasData) NotesCategorySelect( categories: notes.requireData.map((final note) => note.category).toSet().toList(), onChanged: (final category) { @@ -73,7 +73,6 @@ class _NotesCreateNoteDialogState extends State { }, onSubmitted: submit, ), - ], ], ElevatedButton( onPressed: submit, diff --git a/packages/neon/neon_notes/lib/dialogs/select_category.dart b/packages/neon/neon_notes/lib/dialogs/select_category.dart index 2cec920e..deb9fe6d 100644 --- a/packages/neon/neon_notes/lib/dialogs/select_category.dart +++ b/packages/neon/neon_notes/lib/dialogs/select_category.dart @@ -47,7 +47,7 @@ class _NotesSelectCategoryDialogState extends State { visible: notes.isLoading, ), ), - if (notes.hasData) ...[ + if (notes.hasData) NotesCategorySelect( categories: notes.requireData.map((final note) => note.category).toSet().toList(), initialValue: widget.initialCategory, @@ -56,7 +56,6 @@ class _NotesSelectCategoryDialogState extends State { }, onSubmitted: submit, ), - ], ElevatedButton( onPressed: submit, child: Text(AppLocalizations.of(context).noteSetCategory), diff --git a/packages/nextcloud/lib/src/client.dart b/packages/nextcloud/lib/src/client.dart index be794ace..f8402b8f 100644 --- a/packages/nextcloud/lib/src/client.dart +++ b/packages/nextcloud/lib/src/client.dart @@ -19,17 +19,15 @@ class NextcloudClient extends DynamiteClient { baseHeaders: language != null ? {'Accept-Language': language} : null, userAgent: userAgentOverride ?? appType.userAgent, authentications: [ - if (appPassword != null) ...[ + if (appPassword != null) DynamiteHttpBearerAuthentication( token: appPassword, ), - ], - if (loginName != null && (password ?? appPassword) != null) ...[ + if (loginName != null && (password ?? appPassword) != null) DynamiteHttpBasicAuthentication( username: loginName, password: (password ?? appPassword)!, ), - ], ], );