From a48937795e34823c83b89ee2cbbeb788311cf460 Mon Sep 17 00:00:00 2001 From: Thibault Deckers Date: Sun, 26 Jul 2020 02:21:51 +0900 Subject: [PATCH] fixed some lint issues (effective dart style) --- lib/model/filters/mime.dart | 2 +- lib/model/filters/query.dart | 4 ++-- lib/model/image_entry.dart | 8 +++---- lib/model/mime_types.dart | 24 +++++++++---------- lib/model/source/collection_lens.dart | 4 ++-- lib/model/source/location.dart | 2 +- lib/services/image_file_service.dart | 4 ++-- lib/services/metadata_service.dart | 2 +- lib/utils/durations.dart | 2 +- lib/widgets/album/app_bar.dart | 2 +- lib/widgets/album/grid/scaling.dart | 2 +- lib/widgets/album/search/search_delegate.dart | 8 +++---- lib/widgets/album/thumbnail_collection.dart | 2 +- lib/widgets/app_drawer.dart | 2 +- .../entry_action_delegate.dart | 2 +- .../action_delegates/permission_aware.dart | 2 +- .../selection_action_delegate.dart | 14 +++++------ .../media_store_collection_provider.dart | 2 +- .../image_providers/thumbnail_provider.dart | 2 +- lib/widgets/common/scroll_thumb.dart | 8 +------ lib/widgets/common/transition_image.dart | 2 +- lib/widgets/debug_page.dart | 2 +- lib/widgets/fullscreen/image_view.dart | 2 +- .../fullscreen/info/basic_section.dart | 2 +- lib/widgets/fullscreen/info/info_page.dart | 2 +- lib/widgets/fullscreen/overlay/top.dart | 2 +- lib/widgets/fullscreen/overlay/video.dart | 10 ++++---- lib/widgets/home_page.dart | 2 +- lib/widgets/stats/filter_table.dart | 2 +- lib/widgets/stats/stats.dart | 2 +- lib/widgets/welcome_page.dart | 2 +- 31 files changed, 61 insertions(+), 67 deletions(-) diff --git a/lib/model/filters/mime.dart b/lib/model/filters/mime.dart index 1c2004eca..55db249a1 100644 --- a/lib/model/filters/mime.dart +++ b/lib/model/filters/mime.dart @@ -34,7 +34,7 @@ class MimeFilter extends CollectionFilter { _label ??= lowMime.split('/')[0].toUpperCase(); } else { _filter = (entry) => entry.mimeType == lowMime; - if (lowMime == MimeTypes.SVG) { + if (lowMime == MimeTypes.svg) { _label = 'SVG'; } _label ??= lowMime.split('/')[1].toUpperCase(); diff --git a/lib/model/filters/query.dart b/lib/model/filters/query.dart index 90d35a1ea..1cd687e9d 100644 --- a/lib/model/filters/query.dart +++ b/lib/model/filters/query.dart @@ -8,7 +8,7 @@ import 'package:flutter/widgets.dart'; class QueryFilter extends CollectionFilter { static const type = 'query'; - static final exactRegex = RegExp('^"(.*)"\$'); + static final RegExp exactRegex = RegExp('^"(.*)"\$'); final String query; final bool colorful; @@ -39,7 +39,7 @@ class QueryFilter extends CollectionFilter { bool get isUnique => false; @override - String get label => '${query}'; + String get label => '$query'; @override Widget iconBuilder(BuildContext context, double size, {bool showGenericIcon = true}) => Icon(AIcons.text, size: size); diff --git a/lib/model/image_entry.dart b/lib/model/image_entry.dart index 8c62c9d2d..76c1fa58a 100644 --- a/lib/model/image_entry.dart +++ b/lib/model/image_entry.dart @@ -152,10 +152,10 @@ class ImageEntry { bool get isFavourite => favourites.isFavourite(this); - bool get isSvg => mimeType == MimeTypes.SVG; + bool get isSvg => mimeType == MimeTypes.svg; // guess whether this is a photo, according to file type (used as a hint to e.g. display megapixels) - bool get isPhoto => [MimeTypes.HEIC, MimeTypes.HEIF, MimeTypes.JPEG].contains(mimeType); + bool get isPhoto => [MimeTypes.heic, MimeTypes.heif, MimeTypes.jpeg].contains(mimeType); bool get isVideo => mimeType.startsWith('video'); @@ -167,7 +167,7 @@ class ImageEntry { bool get canPrint => !isVideo; - bool get canRotate => canEdit && (mimeType == MimeTypes.JPEG || mimeType == MimeTypes.PNG); + bool get canRotate => canEdit && (mimeType == MimeTypes.jpeg || mimeType == MimeTypes.png); bool get rotated => ((isVideo && isCatalogued) ? _catalogMetadata.videoRotation : orientationDegrees) % 180 == 90; @@ -270,7 +270,7 @@ class ImageEntry { final coordinates = Coordinates(latitude, longitude); try { - final call = () => Geocoder.local.findAddressesFromCoordinates(coordinates); + Future> call() => Geocoder.local.findAddressesFromCoordinates(coordinates); final addresses = await (background ? servicePolicy.call( call, diff --git a/lib/model/mime_types.dart b/lib/model/mime_types.dart index f84af8658..f11273d0e 100644 --- a/lib/model/mime_types.dart +++ b/lib/model/mime_types.dart @@ -1,15 +1,15 @@ class MimeTypes { - static const String ANY_IMAGE = 'image/*'; - static const String GIF = 'image/gif'; - static const String HEIC = 'image/heic'; - static const String HEIF = 'image/heif'; - static const String JPEG = 'image/jpeg'; - static const String PNG = 'image/png'; - static const String SVG = 'image/svg+xml'; - static const String WEBP = 'image/webp'; + static const String anyImage = 'image/*'; + static const String gif = 'image/gif'; + static const String heic = 'image/heic'; + static const String heif = 'image/heif'; + static const String jpeg = 'image/jpeg'; + static const String png = 'image/png'; + static const String svg = 'image/svg+xml'; + static const String webp = 'image/webp'; - static const String ANY_VIDEO = 'video/*'; - static const String AVI = 'video/avi'; - static const String MP2T = 'video/mp2t'; // .m2ts - static const String MP4 = 'video/mp4'; + static const String anyVideo = 'video/*'; + static const String avi = 'video/avi'; + static const String mp2t = 'video/mp2t'; // .m2ts + static const String mp4 = 'video/mp4'; } diff --git a/lib/model/source/collection_lens.dart b/lib/model/source/collection_lens.dart index 9fe1b0e55..565847ee5 100644 --- a/lib/model/source/collection_lens.dart +++ b/lib/model/source/collection_lens.dart @@ -168,8 +168,8 @@ class CollectionLens with ChangeNotifier, CollectionActivityMixin, CollectionSel ]); break; case SortFactor.name: - final byAlbum = groupBy(_filteredEntries, (ImageEntry entry) => entry.directory); - final compare = (a, b) { + final byAlbum = groupBy(_filteredEntries, (entry) => entry.directory); + int compare(a, b) { final ua = source.getUniqueAlbumName(a); final ub = source.getUniqueAlbumName(b); final c = compareAsciiUpperCase(ua, ub); diff --git a/lib/model/source/location.dart b/lib/model/source/location.dart index 678351b75..0d60fa61d 100644 --- a/lib/model/source/location.dart +++ b/lib/model/source/location.dart @@ -75,7 +75,7 @@ mixin LocationMixin on SourceBase { void updateLocations() { final locations = rawEntries.where((entry) => entry.isLocated).map((entry) => entry.addressDetails).toList(); - final lister = (String Function(AddressDetails a) f) => List.unmodifiable(locations.map(f).where((s) => s != null && s.isNotEmpty).toSet().toList()..sort(compareAsciiUpperCase)); + List lister(String Function(AddressDetails a) f) => List.unmodifiable(locations.map(f).where((s) => s != null && s.isNotEmpty).toSet().toList()..sort(compareAsciiUpperCase)); sortedCountries = lister((address) => '${address.countryName};${address.countryCode}'); sortedPlaces = lister((address) => address.place); diff --git a/lib/services/image_file_service.dart b/lib/services/image_file_service.dart index a2ffda260..94412adf3 100644 --- a/lib/services/image_file_service.dart +++ b/lib/services/image_file_service.dart @@ -140,7 +140,7 @@ class ImageFileService { try { return opChannel.receiveBroadcastStream({ 'op': 'delete', - 'entries': entries.map((entry) => _toPlatformEntryMap(entry)).toList(), + 'entries': entries.map(_toPlatformEntryMap).toList(), }).map((event) => ImageOpEvent.fromMap(event)); } on PlatformException catch (e) { debugPrint('delete failed with code=${e.code}, exception=${e.message}, details=${e.details}'); @@ -153,7 +153,7 @@ class ImageFileService { try { return opChannel.receiveBroadcastStream({ 'op': 'move', - 'entries': entries.map((entry) => _toPlatformEntryMap(entry)).toList(), + 'entries': entries.map(_toPlatformEntryMap).toList(), 'copy': copy, 'destinationPath': destinationAlbum, }).map((event) => MoveOpEvent.fromMap(event)); diff --git a/lib/services/metadata_service.dart b/lib/services/metadata_service.dart index eb571e857..f17c184de 100644 --- a/lib/services/metadata_service.dart +++ b/lib/services/metadata_service.dart @@ -26,7 +26,7 @@ class MetadataService { static Future getCatalogMetadata(ImageEntry entry, {bool background = false}) async { if (entry.isSvg) return null; - final call = () async { + Future call() async { try { // return map with: // 'mimeType': MIME type as reported by metadata extractors, not Media Store (string) diff --git a/lib/utils/durations.dart b/lib/utils/durations.dart index 9848ebf12..b397a0c2d 100644 --- a/lib/utils/durations.dart +++ b/lib/utils/durations.dart @@ -30,5 +30,5 @@ class Durations { static const collectionScrollMonitoringTimerDelay = Duration(milliseconds: 100); static const collectionScalingCompleteNotificationDelay = Duration(milliseconds: 300); static const videoProgressTimerInterval = Duration(milliseconds: 300); - static var staggeredAnimationDelay = Durations.staggeredAnimation ~/ 6 * timeDilation; + static Duration staggeredAnimationDelay = Durations.staggeredAnimation ~/ 6 * timeDilation; } diff --git a/lib/widgets/album/app_bar.dart b/lib/widgets/album/app_bar.dart index 41464149d..949947297 100644 --- a/lib/widgets/album/app_bar.dart +++ b/lib/widgets/album/app_bar.dart @@ -155,7 +155,7 @@ class _CollectionAppBarState extends State with SingleTickerPr animation: collection.selectionChangeNotifier, builder: (context, child) { final count = collection.selection.length; - return Text(Intl.plural(count, zero: 'Select items', one: '${count} item', other: '${count} items')); + return Text(Intl.plural(count, zero: 'Select items', one: '$count item', other: '$count items')); }, ); } diff --git a/lib/widgets/album/grid/scaling.dart b/lib/widgets/album/grid/scaling.dart index cf73d55e8..17869db62 100644 --- a/lib/widgets/album/grid/scaling.dart +++ b/lib/widgets/album/grid/scaling.dart @@ -62,7 +62,7 @@ class _GridScaleGestureDetectorState extends State { scrollableBox.hitTest(result, position: details.localFocalPoint); // find `RenderObject`s at the gesture focal point - final firstOf = (BoxHitTestResult result) => result.path.firstWhere((el) => el.target is T, orElse: () => null)?.target as T; + T firstOf(BoxHitTestResult result) => result.path.firstWhere((el) => el.target is T, orElse: () => null)?.target as T; final renderMetaData = firstOf(result); // abort if we cannot find an image to show on overlay if (renderMetaData == null) return; diff --git a/lib/widgets/album/search/search_delegate.dart b/lib/widgets/album/search/search_delegate.dart index d770779cc..7adb9bb2e 100644 --- a/lib/widgets/album/search/search_delegate.dart +++ b/lib/widgets/album/search/search_delegate.dart @@ -57,7 +57,7 @@ class ImageSearchDelegate extends SearchDelegate { @override Widget buildSuggestions(BuildContext context) { final upQuery = query.trim().toUpperCase(); - final containQuery = (String s) => s.toUpperCase().contains(upQuery); + bool containQuery(String s) => s.toUpperCase().contains(upQuery); return SafeArea( child: ValueListenableBuilder( valueListenable: expandedSectionNotifier, @@ -70,10 +70,10 @@ class ImageSearchDelegate extends SearchDelegate { filters: [ _buildQueryFilter(false), FavouriteFilter(), - MimeFilter(MimeTypes.ANY_IMAGE), - MimeFilter(MimeTypes.ANY_VIDEO), + MimeFilter(MimeTypes.anyImage), + MimeFilter(MimeTypes.anyVideo), MimeFilter(MimeFilter.animated), - MimeFilter(MimeTypes.SVG), + MimeFilter(MimeTypes.svg), ].where((f) => f != null && containQuery(f.label)), ), StreamBuilder( diff --git a/lib/widgets/album/thumbnail_collection.dart b/lib/widgets/album/thumbnail_collection.dart index 8d0a417e7..a6883a415 100644 --- a/lib/widgets/album/thumbnail_collection.dart +++ b/lib/widgets/album/thumbnail_collection.dart @@ -220,7 +220,7 @@ class _CollectionScrollViewState extends State { ); } debugPrint('collection.filters=${collection.filters}'); - if (collection.filters.any((filter) => filter is MimeFilter && filter.mime == MimeTypes.ANY_VIDEO)) { + if (collection.filters.any((filter) => filter is MimeFilter && filter.mime == MimeTypes.anyVideo)) { return const EmptyContent( icon: AIcons.video, text: 'No videos', diff --git a/lib/widgets/app_drawer.dart b/lib/widgets/app_drawer.dart index ecd07614a..0f5da71f0 100644 --- a/lib/widgets/app_drawer.dart +++ b/lib/widgets/app_drawer.dart @@ -85,7 +85,7 @@ class _AppDrawerState extends State { source: source, leading: const Icon(AIcons.video), title: 'Videos', - filter: MimeFilter(MimeTypes.ANY_VIDEO), + filter: MimeFilter(MimeTypes.anyVideo), ); final favouriteEntry = _FilteredCollectionNavTile( source: source, diff --git a/lib/widgets/common/action_delegates/entry_action_delegate.dart b/lib/widgets/common/action_delegates/entry_action_delegate.dart index 56fc62b2a..29eb3a72e 100644 --- a/lib/widgets/common/action_delegates/entry_action_delegate.dart +++ b/lib/widgets/common/action_delegates/entry_action_delegate.dart @@ -118,7 +118,7 @@ class EntryActionDelegate with FeedbackMixin, PermissionAwareMixin { Future _showDeleteDialog(BuildContext context, ImageEntry entry) async { final confirmed = await showDialog( context: context, - builder: (BuildContext context) { + builder: (context) { return AlertDialog( content: const Text('Are you sure?'), actions: [ diff --git a/lib/widgets/common/action_delegates/permission_aware.dart b/lib/widgets/common/action_delegates/permission_aware.dart index 9b1f6f886..62d4d0ca0 100644 --- a/lib/widgets/common/action_delegates/permission_aware.dart +++ b/lib/widgets/common/action_delegates/permission_aware.dart @@ -21,7 +21,7 @@ mixin PermissionAwareMixin { final confirmed = await showDialog( context: context, - builder: (BuildContext context) { + builder: (context) { return AlertDialog( title: const Text('Storage Volume Access'), content: Text('Please select the $dirDisplayName directory of “$volumeDescription” in the next screen, so that this app can access it and complete your request.'), diff --git a/lib/widgets/common/action_delegates/selection_action_delegate.dart b/lib/widgets/common/action_delegates/selection_action_delegate.dart index e4f51b21e..0637168c5 100644 --- a/lib/widgets/common/action_delegates/selection_action_delegate.dart +++ b/lib/widgets/common/action_delegates/selection_action_delegate.dart @@ -116,10 +116,10 @@ class SelectionActionDelegate with FeedbackMixin, PermissionAwareMixin { final selectionCount = selection.length; if (movedCount < selectionCount) { final count = selectionCount - movedCount; - showFeedback(context, 'Failed to move ${Intl.plural(count, one: '${count} item', other: '${count} items')}'); + showFeedback(context, 'Failed to move ${Intl.plural(count, one: '$count item', other: '$count items')}'); } else { final count = movedCount; - showFeedback(context, '${copy ? 'Copied' : 'Moved'} ${Intl.plural(count, one: '${count} item', other: '${count} items')}'); + showFeedback(context, '${copy ? 'Copied' : 'Moved'} ${Intl.plural(count, one: '$count item', other: '$count items')}'); } if (movedCount > 0) { final fromAlbums = {}; @@ -187,9 +187,9 @@ class SelectionActionDelegate with FeedbackMixin, PermissionAwareMixin { final confirmed = await showDialog( context: context, - builder: (BuildContext context) { + builder: (context) { return AlertDialog( - content: Text('Are you sure you want to delete ${Intl.plural(count, one: 'this item', other: 'these ${count} items')}?'), + content: Text('Are you sure you want to delete ${Intl.plural(count, one: 'this item', other: 'these $count items')}?'), actions: [ FlatButton( onPressed: () => Navigator.pop(context), @@ -217,7 +217,7 @@ class SelectionActionDelegate with FeedbackMixin, PermissionAwareMixin { final selectionCount = selection.length; if (deletedCount < selectionCount) { final count = selectionCount - deletedCount; - showFeedback(context, 'Failed to delete ${Intl.plural(count, one: '${count} item', other: '${count} items')}'); + showFeedback(context, 'Failed to delete ${Intl.plural(count, one: '$count item', other: '$count items')}'); } if (deletedCount > 0) { collection.source.removeEntries(selection.where((e) => deletedUris.contains(e.uri))); @@ -242,9 +242,9 @@ class SelectionActionDelegate with FeedbackMixin, PermissionAwareMixin { // do not handle completion inside `StreamBuilder` // as it could be called multiple times - final onComplete = () => _hideOpReportOverlay().then((_) => onDone(processed)); + Future onComplete() => _hideOpReportOverlay().then((_) => onDone(processed)); opStream.listen( - (event) => processed.add(event), + processed.add, onError: (error) { debugPrint('_showOpReport error=$error'); onComplete(); diff --git a/lib/widgets/common/data_providers/media_store_collection_provider.dart b/lib/widgets/common/data_providers/media_store_collection_provider.dart index 7ce1a5520..2585181c4 100644 --- a/lib/widgets/common/data_providers/media_store_collection_provider.dart +++ b/lib/widgets/common/data_providers/media_store_collection_provider.dart @@ -51,7 +51,7 @@ class MediaStoreSource extends CollectionSource { var refreshCount = 10; const refreshCountMax = 1000; final allNewEntries = [], pendingNewEntries = []; - final addPendingEntries = () { + void addPendingEntries() { allNewEntries.addAll(pendingNewEntries); addAll(pendingNewEntries); pendingNewEntries.clear(); diff --git a/lib/widgets/common/image_providers/thumbnail_provider.dart b/lib/widgets/common/image_providers/thumbnail_provider.dart index 5b3164df6..53b718075 100644 --- a/lib/widgets/common/image_providers/thumbnail_provider.dart +++ b/lib/widgets/common/image_providers/thumbnail_provider.dart @@ -54,7 +54,7 @@ class ThumbnailProvider extends ImageProvider { } @override - void resolveStreamForKey(ImageConfiguration configuration, ImageStream stream, ThumbnailProviderKey key, handleError) { + void resolveStreamForKey(ImageConfiguration configuration, ImageStream stream, ThumbnailProviderKey key, ImageErrorListener handleError) { ImageFileService.resumeThumbnail(_cancellationKey); super.resolveStreamForKey(configuration, stream, key, handleError); } diff --git a/lib/widgets/common/scroll_thumb.dart b/lib/widgets/common/scroll_thumb.dart index 0c21bb256..cc2b9bcec 100644 --- a/lib/widgets/common/scroll_thumb.dart +++ b/lib/widgets/common/scroll_thumb.dart @@ -32,13 +32,7 @@ ScrollThumbBuilder avesScrollThumbBuilder({ clipper: ArrowClipper(), ), ); - return ( - Color backgroundColor, - Animation thumbAnimation, - Animation labelAnimation, - double height, { - Widget labelText, - }) { + return (backgroundColor, thumbAnimation, labelAnimation, height, {labelText}) { return DraggableScrollbar.buildScrollThumbAndLabel( scrollThumb: scrollThumb, backgroundColor: backgroundColor, diff --git a/lib/widgets/common/transition_image.dart b/lib/widgets/common/transition_image.dart index 3eb9ad165..1f1117206 100644 --- a/lib/widgets/common/transition_image.dart +++ b/lib/widgets/common/transition_image.dart @@ -12,7 +12,7 @@ class TransitionImage extends StatefulWidget { final ImageProvider image; final double width, height; final ValueListenable animation; - final gaplessPlayback = false; + final bool gaplessPlayback = false; const TransitionImage({ @required this.image, diff --git a/lib/widgets/debug_page.dart b/lib/widgets/debug_page.dart index dee6a0873..a05ead50b 100644 --- a/lib/widgets/debug_page.dart +++ b/lib/widgets/debug_page.dart @@ -135,7 +135,7 @@ class DebugPageState extends State { ), const SizedBox(width: 8), RaisedButton( - onPressed: () => ImageFileService.clearSizedThumbnailDiskCache(), + onPressed: ImageFileService.clearSizedThumbnailDiskCache, child: const Text('Clear'), ), ], diff --git a/lib/widgets/fullscreen/image_view.dart b/lib/widgets/fullscreen/image_view.dart index 86febbb54..25812a156 100644 --- a/lib/widgets/fullscreen/image_view.dart +++ b/lib/widgets/fullscreen/image_view.dart @@ -61,7 +61,7 @@ class ImageView extends StatelessWidget { // if the image is already in the cache it will show the final image, otherwise the thumbnail // in any case, we should use `Center` + `AspectRatio` + `Fill` so that the transition image // appears as the final image with `PhotoViewComputedScale.contained` for `initialScale` - final loadingBuilder = (BuildContext context, ImageProvider imageProvider) { + Widget loadingBuilder(BuildContext context, ImageProvider imageProvider) { return Center( child: AspectRatio( // enforce original aspect ratio, as some thumbnails aspect ratios slightly differ diff --git a/lib/widgets/fullscreen/info/basic_section.dart b/lib/widgets/fullscreen/info/basic_section.dart index ffb00956d..24888eeb8 100644 --- a/lib/widgets/fullscreen/info/basic_section.dart +++ b/lib/widgets/fullscreen/info/basic_section.dart @@ -53,7 +53,7 @@ class BasicSection extends StatelessWidget { final tags = entry.xmpSubjects..sort(compareAsciiUpperCase); final album = entry.directory; final filters = [ - if (entry.isVideo) MimeFilter(MimeTypes.ANY_VIDEO), + if (entry.isVideo) MimeFilter(MimeTypes.anyVideo), if (entry.isAnimated) MimeFilter(MimeFilter.animated), if (album != null) AlbumFilter(album, collection?.source?.getUniqueAlbumName(album)), ...tags.map((tag) => TagFilter(tag)), diff --git a/lib/widgets/fullscreen/info/info_page.dart b/lib/widgets/fullscreen/info/info_page.dart index 478c0703f..dcc7b2229 100644 --- a/lib/widgets/fullscreen/info/info_page.dart +++ b/lib/widgets/fullscreen/info/info_page.dart @@ -165,7 +165,7 @@ class SectionRow extends StatelessWidget { @override Widget build(BuildContext context) { const dim = 32.0; - final buildDivider = () => const SizedBox( + Widget buildDivider() => const SizedBox( width: dim, child: Divider( thickness: AvesFilterChip.outlineWidth, diff --git a/lib/widgets/fullscreen/overlay/top.dart b/lib/widgets/fullscreen/overlay/top.dart index 9183c7d1a..662fd9606 100644 --- a/lib/widgets/fullscreen/overlay/top.dart +++ b/lib/widgets/fullscreen/overlay/top.dart @@ -151,7 +151,7 @@ class _TopOverlayRow extends StatelessWidget { Widget _buildOverlayButton(EntryAction action) { Widget child; - final onPressed = () => onActionSelected?.call(action); + void onPressed() => onActionSelected?.call(action); switch (action) { case EntryAction.toggleFavourite: child = _FavouriteToggler( diff --git a/lib/widgets/fullscreen/overlay/video.dart b/lib/widgets/fullscreen/overlay/video.dart index 2dbe893da..5cfaba055 100644 --- a/lib/widgets/fullscreen/overlay/video.dart +++ b/lib/widgets/fullscreen/overlay/video.dart @@ -98,7 +98,7 @@ class VideoControlOverlayState extends State with SingleTic @override Widget build(BuildContext context) { - final mq = context.select((MediaQueryData mq) => Tuple3(mq.size.width, mq.viewInsets, mq.viewPadding)); + final mq = context.select((mq) => Tuple3(mq.size.width, mq.viewInsets, mq.viewPadding)); final mqWidth = mq.item1; final mqViewInsets = mq.item2; final mqViewPadding = mq.item3; @@ -164,17 +164,17 @@ class VideoControlOverlayState extends State with SingleTic child: BlurredRRect( borderRadius: progressBarBorderRadius, child: GestureDetector( - onTapDown: (TapDownDetails details) { + onTapDown: (details) { _seekFromTap(details.globalPosition); }, - onHorizontalDragStart: (DragStartDetails details) { + onHorizontalDragStart: (details) { _playingOnDragStart = isPlaying; if (_playingOnDragStart) controller.pause(); }, - onHorizontalDragUpdate: (DragUpdateDetails details) { + onHorizontalDragUpdate: (details) { _seekFromTap(details.globalPosition); }, - onHorizontalDragEnd: (DragEndDetails details) { + onHorizontalDragEnd: (details) { if (_playingOnDragStart) controller.play(); }, child: Container( diff --git a/lib/widgets/home_page.dart b/lib/widgets/home_page.dart index c57e6dbf6..33f715f1b 100644 --- a/lib/widgets/home_page.dart +++ b/lib/widgets/home_page.dart @@ -68,7 +68,7 @@ class _HomePageState extends State { // TODO TLAD apply pick mimetype(s) // some apps define multiple types, separated by a space (maybe other signs too, like `,` `;`?) String pickMimeTypes = intentData['mimeType']; - debugPrint('pick mimeType=' + pickMimeTypes); + debugPrint('pick mimeType=$pickMimeTypes'); break; } } diff --git a/lib/widgets/stats/filter_table.dart b/lib/widgets/stats/filter_table.dart index 6234c72c7..f3b306413 100644 --- a/lib/widgets/stats/filter_table.dart +++ b/lib/widgets/stats/filter_table.dart @@ -67,7 +67,7 @@ class FilterTable extends StatelessWidget { center: Text(NumberFormat.percentPattern().format(percent)), ), Text( - '${count}', + '$count', style: const TextStyle(color: Colors.white70), textAlign: TextAlign.end, ), diff --git a/lib/widgets/stats/stats.dart b/lib/widgets/stats/stats.dart index e7ae91d4a..b5e2d687f 100644 --- a/lib/widgets/stats/stats.dart +++ b/lib/widgets/stats/stats.dart @@ -158,7 +158,7 @@ class StatsPage extends StatelessWidget { ), Center( child: Text( - '${sum}\n${label(sum)}', + '$sum\n${label(sum)}', textAlign: TextAlign.center, ), ), diff --git a/lib/widgets/welcome_page.dart b/lib/widgets/welcome_page.dart index 5d6f8e34e..31ce653f6 100644 --- a/lib/widgets/welcome_page.dart +++ b/lib/widgets/welcome_page.dart @@ -35,7 +35,7 @@ class _WelcomePageState extends State { padding: const EdgeInsets.all(16.0), child: FutureBuilder( future: _termsLoader, - builder: (BuildContext context, AsyncSnapshot snapshot) { + builder: (context, AsyncSnapshot snapshot) { if (snapshot.hasError || snapshot.connectionState != ConnectionState.done) return const SizedBox.shrink(); final terms = snapshot.data; return Column(