spotube
spotube copied to clipboard
[Bug] Local file breakes playlists
Is there an existing issue for this?
- [X] I have searched the existing issues
Current Behavior
Playlist stops rendering after a local file was added. Also affects public playlists from other users.
Expected Behavior
The playlist shows as usual but without local files
Steps To Reproduce
- First open Spotify
- Create playlist
- Add some songs for comparison
- Enable show local files in settings
- Select a song from the local playlist
- Click add to playlist and select the playlist from above
- Add one or more songs from spotify servers
- Go back to Spotube and open the playlist
-> The local file in the playlist will stop the rest of the playlist from rendering correctly (shows white space) -> Public Playlist are also affected if they contain local files
Spotube Version
2.7.0
Operating System
Android
Linux Distribution (if applicable)
No response
Operating System Version
Android 13
Installation Source
Official Website (spotube.netlify.app)
Additional information
Simply removing listed local files from the playlist would fix the issue
How are u adding local tracks to the playlist? Spotube doesn't allow that Can u share a screenshot?
You can add local tracks in Spotify as mentioned above.
These playlists with local tracks can also be played on Spotube.
ListView stops rendering after local track
This is probably related to something else. Your local tracks stays on your device and Spotify doesn't keep any track of that in server so it shouldn't show up in Spotube or in Spotify running in different devices
The tracks are listed on the servers but they can not be played on other devices!
I was gonna report this same issue until I saw it had already been reported. It could be because of the local file track in the playlist not having an album cover (if I'm reading the logs correctly). Alternatively it could be because the local file for the song has been deleted on the host device, because that's at least the case for me. I no longer have the file on my computer, but only have the song in the playlist still to remember the name.
Here are some logs
============================== CATCHER 2 LOG ==============================
------- DEVICE INFO -------
computerName: DESKTOP
numberOfCores: 8
systemMemoryInMegabytes: 65536
------- APP INFO -------
environment: release
version: 3.5.0
appName: spotube
buildNumber:
packageName: spotube
---------- ERROR ----------
PathNotFoundException: Cannot retrieve length of file, path = 'imageUrl' (OS Error: The system cannot find the file specified.
, errno
------------ STACK TRACE ---#0 #0 _checkForErrorResponse (dart:io/common.dart:55)
#1 _File.length.<anonymous closure> (dart:io/file_impl.dart:389)
<asynchronous suspension>
#2 FileImage._loadAsync (package:flutter/src/painting/image_provider.dart:1484)
<asynchronous suspension>
#3 MultiFrameImageStreamCompleter._handleCodecReady (package:flutter/src/painting/image_stream.dart:985)
<asynchronous suspensi------------ CUSTOM INFO ---
=====
============================== CATCHER 2 LOG ==============================
------- DEVICE INFO -------
computerName: DESKTOP
numberOfCores: 8
systemMemoryInMegabytes: 65536
------- APP INFO -------
environment: release
version: 3.5.0
appName: spotube
buildNumber:
packageName: spotube
---------- ERROR ----------
No track currently
------- STACK TRACE -------
#0 LyricsQueries.spotifySynced.<anonymous closure> (package:spotube/services/queries/lyrics.dart:71)
#1 useSpotifyQuery.<anonymous closure> (package:spotube/hooks/spotify/use_spotify_query.dart:30)
#2 new Future.delayed.<anonymous closure> (dart:async/future.dart:422)
#3 TickerFuture.whenCompleteOrCancel.thunk (package:flutter/src/scheduler/ticker.dart:435)
#4 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:398)
#5 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:429)
#6 _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:184)
------- CUSTOM INFO -------
============================== CATCHER 2 LOG ==============================
------- DEVICE INFO -------
computerName: DESKTOP
numberOfCores: 8
systemMemoryInMegabytes: 65536
------- APP INFO -------
environment: release
version: 3.5.0
appName: spotube
buildNumber:
packageName: spotube
---------- ERROR ----------
Null check operator used on a null value
------- STACK TRACE -------
#0 TrackViewBodySection.build.<anonymous closure> (package:spotube/components/shared/tracks_view/sections/body/track_view_body.dart:110)
#1 _SliverInfiniteListState.build.<anonymous closure> (package:very_good_infinite_list/src/sliver_infinite_list.dart:174)
#2 SliverChildBuilderDelegate.build (package:flutter/src/widgets/scroll_delegate.dart:490)
#3 SliverMultiBoxAdaptorElement._build (package:flutter/src/widgets/sliver.dart:829)
#4 SliverMultiBoxAdaptorElement.createChild.<anonymous closure> (package:flutter/src/widgets/sliver.dart:843)
#5 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2844)
#6 SliverMultiBoxAdaptorElement.createChild (package:flutter/src/widgets/sliver.dart:835)
#7 RenderSliverMultiBoxAdaptor._createOrObtainChild.<anonymous closure> (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:349)
#8 RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:2686)
#9 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:1097)
#10 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:2686)
#11 RenderSliverMultiBoxAdaptor._createOrObtainChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:338)
#12 RenderSliverMultiBoxAdaptor.insertAndLayoutChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:486)
#13 RenderSliverList.performLayout.advance (package:flutter/src/rendering/sliver_list.dart:239)
#14 RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:281)
#15 RenderObject.layout (package:flutter/src/rendering/object.dart:2575)
#16 RenderSliverEdgeInsetsPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:139)
#17 RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:361)
#18 RenderObject.layout (package:flutter/src/rendering/object.dart:2575)
#19 RenderSliverMainAxisGroup.performLayout (package:flutter/src/rendering/sliver_group.dart:238)
#20 RenderObject.layout (package:flutter/src/rendering/object.dart:2575)
#21 RenderProxySliver.performLayout (package:flutter/src/rendering/proxy_sliver.dart:54)
#22 RenderObject.layout (package:flutter/src/rendering/object.dart:2575)
#23 RenderSliverStack.performLayout (package:sliver_tools/src/rendering/sliver_stack.dart:189)
#24 RenderObject.layout (package:flutter/src/rendering/object.dart:2575)
#25 RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:601)
#26 RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1555)
#27 RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1464)
#28 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:2414)
#29 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1051)
#30 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:1064)
#31 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:582)
#32 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:991)
#33 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:448)
#34 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1386)
#35 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1311)
#36 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1169)
#37 _invoke (dart:ui/hooks.dart:312)
#38 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:399)
#39 _drawFrame (dart:ui/hooks.dart:283)
------- CUSTOM INFO -------
============================== CATCHER 2 LOG ==============================
------- DEVICE INFO -------
computerName: DESKTOP
numberOfCores: 8
systemMemoryInMegabytes: 65536
------- APP INFO -------
environment: release
version: 3.5.0
appName: spotube
buildNumber:
packageName: spotube
---------- ERROR ----------
Null check operator used on a null value
------- STACK TRACE -------
#0 BlackListNotifier.contains (package:spotube/provider/blacklist_provider.dart:61)
#1 IterableExtension.whereNot.<anonymous closure> (package:collection/src/iterable_extensions.dart:54)
#2 WhereIterator.moveNext (dart:_internal/iterable.dart:451)
#3 new _GrowableList._ofOther (dart:core-patch/growable_array.dart:202)
#4 new _GrowableList.of (dart:core-patch/growable_array.dart:152)
#5 new List.of (dart:core-patch/array_patch.dart:39)
#6 Iterable.toList (dart:core/iterable.dart:497)
#7 BlackListNotifier.filter (package:spotube/provider/blacklist_provider.dart:75)
#8 ProxyPlaylistNotifier.load (package:spotube/provider/proxy_playlist/proxy_playlist_provider.dart:318)
#9 TrackViewBodySection.build.<anonymous closure>.<anonymous closure> (package:spotube/components/shared/tracks_view/sections/body/track_view_body.dart:132)
<asynchronous suspension>
#10 TrackTile.build.<anonymous closure>.<anonymous closure>.<anonymous closure> (package:spotube/components/shared/track_tile/track_tile.dart:93)
<asynchronous suspension>
------- CUSTOM INFO -------