@@ -51,23 +51,23 @@ class UserSongsPage extends StatefulWidget {
5151
5252class _UserSongsPageState extends State <UserSongsPage > {
5353 bool _isEditEnabled = false ;
54- List <dynamic > _originalOfflineSongsList = [];
5554 final ValueNotifier <String > _searchQueryNotifier = ValueNotifier ('' );
5655 late final TextEditingController _searchController;
5756 late final FocusNode _searchFocusNode;
5857
59- List _getFilteredList (List songsList) {
60- return filterSongsByQuery (songsList, _searchQueryNotifier.value);
58+ List _getDisplayList (List songsList) {
59+ var list = filterSongsByQuery (songsList, _searchQueryNotifier.value);
60+ if (widget.page == 'offline' ) {
61+ list = _sortOfflineSongsLocal (list, _getCurrentOfflineSortType ());
62+ }
63+ return list;
6164 }
6265
6366 @override
6467 void initState () {
6568 super .initState ();
6669 _searchController = TextEditingController ();
6770 _searchFocusNode = FocusNode ();
68- if (widget.page == 'offline' ) {
69- _originalOfflineSongsList = List <dynamic >.from (userOfflineSongs);
70- }
7171 }
7272
7373 @override
@@ -262,7 +262,6 @@ class _UserSongsPageState extends State<UserSongsPage> {
262262 addOrUpdateData ('settings' , 'offlineSortType' , type.name);
263263 offlineSortSetting = type.name;
264264 });
265- _sortOfflineSongs (type);
266265 },
267266 ),
268267 ],
@@ -333,7 +332,7 @@ class _UserSongsPageState extends State<UserSongsPage> {
333332 valueListenable: _searchQueryNotifier,
334333 builder: (_, searchQuery, __) {
335334 final isSearching = searchQuery.isNotEmpty;
336- final displayList = _getFilteredList (songsList);
335+ final displayList = _getDisplayList (songsList);
337336 final playlist = {
338337 'ytid' : '' ,
339338 'title' : title,
@@ -451,34 +450,33 @@ class _UserSongsPageState extends State<UserSongsPage> {
451450 };
452451 }
453452
454- void _sortOfflineSongs (OfflineSortType type) {
453+ List _sortOfflineSongsLocal (List list, OfflineSortType type) {
454+ final sortedList = List <dynamic >.from (list);
455455 switch (type) {
456456 case OfflineSortType .default_:
457- userOfflineSongs
458- ..clear ()
459- ..addAll (_originalOfflineSongsList);
460- return ;
457+ return sortedList;
461458 case OfflineSortType .title:
462- userOfflineSongs .sort ((a, b) {
459+ sortedList .sort ((a, b) {
463460 final titleA = (a['title' ] ?? '' ).toString ().toLowerCase ();
464461 final titleB = (b['title' ] ?? '' ).toString ().toLowerCase ();
465462 return titleA.compareTo (titleB);
466463 });
467464 break ;
468465 case OfflineSortType .artist:
469- userOfflineSongs .sort ((a, b) {
466+ sortedList .sort ((a, b) {
470467 final artistA = (a['artist' ] ?? '' ).toString ().toLowerCase ();
471468 final artistB = (b['artist' ] ?? '' ).toString ().toLowerCase ();
472469 return artistA.compareTo (artistB);
473470 });
474471 break ;
475472 case OfflineSortType .dateAdded:
476- userOfflineSongs .sort ((a, b) {
473+ sortedList .sort ((a, b) {
477474 final dateA = a['dateAdded' ] as int ? ?? 0 ;
478475 final dateB = b['dateAdded' ] as int ? ?? 0 ;
479476 return dateB.compareTo (dateA);
480477 });
481478 break ;
482479 }
480+ return sortedList;
483481 }
484482}
0 commit comments