Browse Source

perf(neon_files): do not use the spread operator for building lists

Signed-off-by: Nikolas Rimikis <leptopoda@users.noreply.github.com>
pull/1094/head
Nikolas Rimikis 1 year ago
parent
commit
84cc5744d1
No known key found for this signature in database
GPG Key ID: 85ED1DE9786A4FF2
  1. 3
      packages/neon/neon_files/lib/dialogs/choose_create.dart
  2. 11
      packages/neon/neon_files/lib/options.dart
  3. 58
      packages/neon/neon_files/lib/pages/details.dart
  4. 9
      packages/neon/neon_files/lib/widgets/actions.dart
  5. 11
      packages/neon/neon_files/lib/widgets/file_list_tile.dart

3
packages/neon/neon_files/lib/dialogs/choose_create.dart

@ -77,7 +77,7 @@ class _FilesChooseCreateDialogState extends State<FilesChooseCreateDialog> {
} }
}, },
), ),
if (NeonPlatform.instance.canUseCamera) ...[ if (NeonPlatform.instance.canUseCamera)
ListTile( ListTile(
leading: Icon( leading: Icon(
MdiIcons.cameraPlus, MdiIcons.cameraPlus,
@ -94,7 +94,6 @@ class _FilesChooseCreateDialogState extends State<FilesChooseCreateDialog> {
} }
}, },
), ),
],
ListTile( ListTile(
leading: Icon( leading: Icon(
MdiIcons.folderPlus, MdiIcons.folderPlus,

11
packages/neon/neon_files/lib/options.dart

@ -67,9 +67,7 @@ class FilesAppSpecificOptions extends NextcloudAppOptions {
label: (final context) => FilesLocalizations.of(context).optionsUploadQueueParallelism, label: (final context) => FilesLocalizations.of(context).optionsUploadQueueParallelism,
defaultValue: 4, defaultValue: 4,
values: { values: {
for (var i = 1; i <= 16; i = i * 2) ...{ for (var i = 1; i <= 16; i = i * 2) i: (final _) => i.toString(),
i: (final _) => i.toString(),
},
}, },
); );
@ -80,9 +78,7 @@ class FilesAppSpecificOptions extends NextcloudAppOptions {
label: (final context) => FilesLocalizations.of(context).optionsDownloadQueueParallelism, label: (final context) => FilesLocalizations.of(context).optionsDownloadQueueParallelism,
defaultValue: 4, defaultValue: 4,
values: { values: {
for (var i = 1; i <= 16; i = i * 2) ...{ for (var i = 1; i <= 16; i = i * 2) i: (final _) => i.toString(),
i: (final _) => i.toString(),
},
}, },
); );
@ -96,9 +92,8 @@ class FilesAppSpecificOptions extends NextcloudAppOptions {
2 * 2024, 2 * 2024,
6 * 1024, 6 * 1024,
10 * 1024, 10 * 1024,
]) ...{ ])
_mb(i): (final _) => filesize(_mb(i)), _mb(i): (final _) => filesize(_mb(i)),
},
}; };
int _mb(final int i) => i * 1024 * 1024; int _mb(final int i) => i * 1024 * 1024;

58
packages/neon/neon_files/lib/pages/details.dart

@ -11,7 +11,10 @@ class FilesDetailsPage extends StatelessWidget {
final FileDetails details; final FileDetails details;
@override @override
Widget build(final BuildContext context) => Scaffold( Widget build(final BuildContext context) {
final l10n = FilesLocalizations.of(context);
return Scaffold(
resizeToAvoidBottomInset: false, resizeToAvoidBottomInset: false,
appBar: AppBar( appBar: AppBar(
title: Text(details.name), title: Text(details.name),
@ -39,38 +42,41 @@ class FilesDetailsPage extends StatelessWidget {
DataColumn(label: SizedBox()), DataColumn(label: SizedBox()),
], ],
rows: [ rows: [
for (final entry in { _buildDataRow(
details.isDirectory details.isDirectory ? l10n.detailsFolderName : l10n.detailsFileName,
? FilesLocalizations.of(context).detailsFolderName details.name,
: FilesLocalizations.of(context).detailsFileName: details.name, ),
FilesLocalizations.of(context).detailsParentFolder: _buildDataRow(
l10n.detailsParentFolder,
details.path.length == 1 ? '/' : details.path.sublist(0, details.path.length - 1).join('/'), details.path.length == 1 ? '/' : details.path.sublist(0, details.path.length - 1).join('/'),
if (details.size != null) ...{ ),
details.isDirectory if (details.size != null)
? FilesLocalizations.of(context).detailsFolderSize _buildDataRow(
: FilesLocalizations.of(context).detailsFileSize: filesize(details.size, 1), details.isDirectory ? l10n.detailsFolderSize : l10n.detailsFileSize,
}, filesize(details.size, 1),
if (details.lastModified != null) ...{ ),
FilesLocalizations.of(context).detailsLastModified: if (details.lastModified != null)
_buildDataRow(
l10n.detailsLastModified,
details.lastModified!.toLocal().toIso8601String(), details.lastModified!.toLocal().toIso8601String(),
},
if (details.isFavorite != null) ...{
FilesLocalizations.of(context).detailsIsFavorite: details.isFavorite!
? FilesLocalizations.of(context).actionYes
: FilesLocalizations.of(context).actionNo,
},
}.entries) ...[
DataRow(
cells: [
DataCell(Text(entry.key)),
DataCell(Text(entry.value)),
],
), ),
], if (details.isFavorite != null)
_buildDataRow(
l10n.detailsIsFavorite,
details.isFavorite! ? l10n.actionYes : l10n.actionNo,
),
], ],
), ),
], ],
), ),
), ),
); );
}
DataRow _buildDataRow(final String key, final String value) => DataRow(
cells: [
DataCell(Text(key)),
DataCell(Text(value)),
],
);
} }

9
packages/neon/neon_files/lib/widgets/actions.dart

@ -119,13 +119,12 @@ class FileActions extends StatelessWidget {
@override @override
Widget build(final BuildContext context) => PopupMenuButton<FilesFileAction>( Widget build(final BuildContext context) => PopupMenuButton<FilesFileAction>(
itemBuilder: (final context) => [ itemBuilder: (final context) => [
if (!details.isDirectory && NeonPlatform.instance.canUseSharing) ...[ if (!details.isDirectory && NeonPlatform.instance.canUseSharing)
PopupMenuItem( PopupMenuItem(
value: FilesFileAction.share, value: FilesFileAction.share,
child: Text(FilesLocalizations.of(context).actionShare), child: Text(FilesLocalizations.of(context).actionShare),
), ),
], if (details.isFavorite != null)
if (details.isFavorite != null) ...[
PopupMenuItem( PopupMenuItem(
value: FilesFileAction.toggleFavorite, value: FilesFileAction.toggleFavorite,
child: Text( child: Text(
@ -134,7 +133,6 @@ class FileActions extends StatelessWidget {
: FilesLocalizations.of(context).addToFavorites, : FilesLocalizations.of(context).addToFavorites,
), ),
), ),
],
PopupMenuItem( PopupMenuItem(
value: FilesFileAction.details, value: FilesFileAction.details,
child: Text(FilesLocalizations.of(context).details), child: Text(FilesLocalizations.of(context).details),
@ -152,12 +150,11 @@ class FileActions extends StatelessWidget {
child: Text(FilesLocalizations.of(context).actionCopy), child: Text(FilesLocalizations.of(context).actionCopy),
), ),
// TODO: https://github.com/provokateurin/nextcloud-neon/issues/4 // TODO: https://github.com/provokateurin/nextcloud-neon/issues/4
if (!details.isDirectory) ...[ if (!details.isDirectory)
PopupMenuItem( PopupMenuItem(
value: FilesFileAction.sync, value: FilesFileAction.sync,
child: Text(FilesLocalizations.of(context).actionSync), child: Text(FilesLocalizations.of(context).actionSync),
), ),
],
PopupMenuItem( PopupMenuItem(
value: FilesFileAction.delete, value: FilesFileAction.delete,
child: Text(FilesLocalizations.of(context).actionDelete), child: Text(FilesLocalizations.of(context).actionDelete),

11
packages/neon/neon_files/lib/widgets/file_list_tile.dart

@ -56,17 +56,16 @@ class FileListTile extends StatelessWidget {
RelativeTime( RelativeTime(
date: details.lastModified!, date: details.lastModified!,
), ),
if (details.size != null && details.size! > 0) ...[ if (details.size != null && details.size! > 0)
const SizedBox( Padding(
width: 10, padding: const EdgeInsets.only(left: 10),
), child: Text(
Text(
filesize(details.size, 1), filesize(details.size, 1),
style: DefaultTextStyle.of(context).style.copyWith( style: DefaultTextStyle.of(context).style.copyWith(
color: Colors.grey, color: Colors.grey,
), ),
), ),
], ),
], ],
), ),
leading: _FileIcon( leading: _FileIcon(

Loading…
Cancel
Save