@@ -23,8 +23,6 @@ class BooksScreen extends StatefulWidget {
2323
2424class _BooksScreenState extends State <BooksScreen >
2525 with AutomaticKeepAliveClientMixin , TickerProviderStateMixin {
26- int _booksTabIndex = 0 ;
27-
2826 late TabController _tabController;
2927 late ScrollController _chipScrollController;
3028
@@ -114,6 +112,15 @@ class _BooksScreenState extends State<BooksScreen>
114112 case SortType .byStartDate:
115113 list = _sortByStartDate (list: list, isAsc: state.isAsc);
116114 break ;
115+ case SortType .byPublicationYear:
116+ list = _sortByPublicationYear (list: list, isAsc: state.isAsc);
117+ break ;
118+ case SortType .byDateAdded:
119+ list = _sortByDateAdded (list: list, isAsc: state.isAsc);
120+ break ;
121+ case SortType .byDateModified:
122+ list = _sortByDateModified (list: list, isAsc: state.isAsc);
123+ break ;
117124 default :
118125 list = _sortByTitle (list: list, isAsc: state.isAsc);
119126 }
@@ -142,10 +149,62 @@ class _BooksScreenState extends State<BooksScreen>
142149 case SortType .byAuthor:
143150 list = _sortByAuthor (list: list, isAsc: state.isAsc);
144151 break ;
152+ case SortType .byPages:
153+ list = _sortByPages (list: list, isAsc: state.isAsc);
154+ break ;
155+ case SortType .byPublicationYear:
156+ list = _sortByPublicationYear (list: list, isAsc: state.isAsc);
157+ break ;
158+ case SortType .byDateAdded:
159+ list = _sortByDateAdded (list: list, isAsc: state.isAsc);
160+ break ;
161+ case SortType .byDateModified:
162+ list = _sortByDateModified (list: list, isAsc: state.isAsc);
163+ break ;
164+
165+ default :
166+ list = _sortByTitle (list: list, isAsc: state.isAsc);
167+ }
168+
169+ return list;
170+ }
145171
172+ List <Book > _sortUnfinishedList ({
173+ required SetSortState state,
174+ required List <Book > list,
175+ }) {
176+ if (state.tags != null ) {
177+ list = _filterTags (
178+ list: list,
179+ tags: state.tags! ,
180+ filterTagsAsAnd: state.filterTagsAsAnd,
181+ filterOutSelectedTags: state.filterOutTags,
182+ );
183+ }
184+
185+ if (state.bookType != null ) {
186+ list = _filterOutBookTypes (list, state.bookType! );
187+ }
188+
189+ switch (state.sortType) {
190+ case SortType .byAuthor:
191+ list = _sortByAuthor (list: list, isAsc: state.isAsc);
192+ break ;
146193 case SortType .byPages:
147194 list = _sortByPages (list: list, isAsc: state.isAsc);
148195 break ;
196+ case SortType .byStartDate:
197+ list = _sortByStartDate (list: list, isAsc: state.isAsc);
198+ break ;
199+ case SortType .byPublicationYear:
200+ list = _sortByPublicationYear (list: list, isAsc: state.isAsc);
201+ break ;
202+ case SortType .byDateAdded:
203+ list = _sortByDateAdded (list: list, isAsc: state.isAsc);
204+ break ;
205+ case SortType .byDateModified:
206+ list = _sortByDateModified (list: list, isAsc: state.isAsc);
207+ break ;
149208 default :
150209 list = _sortByTitle (list: list, isAsc: state.isAsc);
151210 }
@@ -669,14 +728,6 @@ class _BooksScreenState extends State<BooksScreen>
669728 return booksWithPublicationDate + booksWithoutPublicationDate;
670729 }
671730
672- _changeTab (int index) {
673- setState (() {
674- _booksTabIndex = index;
675- });
676-
677- _tabController.index = index;
678- }
679-
680731 @override
681732 bool get wantKeepAlive => true ;
682733
@@ -747,11 +798,10 @@ class _BooksScreenState extends State<BooksScreen>
747798 StreamBuilder <List <Book >> _buildUnfinishedBooksTabView () {
748799 bookCubit.getUnfinishedBooks ();
749800
750- //TODO: sort unfinished book by date of modification
751801 return _buildBooksTabView (
752802 listNumber: 3 ,
753803 stream: bookCubit.unfinishedBooks,
754- sorting: null ,
804+ sorting: _sortUnfinishedList ,
755805 );
756806 }
757807
@@ -830,36 +880,28 @@ class _BooksScreenState extends State<BooksScreen>
830880 switch (status) {
831881 case BookStatus .read:
832882 tabChips.add (BooksTabChip (
833- selected: _booksTabIndex == index,
834883 index: index,
835- changeTab: _changeTab,
836884 tabController: _tabController,
837885 title: LocaleKeys .books_finished.tr (),
838886 ));
839887 break ;
840888 case BookStatus .inProgress:
841889 tabChips.add (BooksTabChip (
842- selected: _booksTabIndex == index,
843890 index: index,
844- changeTab: _changeTab,
845891 tabController: _tabController,
846892 title: LocaleKeys .books_in_progress.tr (),
847893 ));
848894 break ;
849895 case BookStatus .forLater:
850896 tabChips.add (BooksTabChip (
851- selected: _booksTabIndex == index,
852897 index: index,
853- changeTab: _changeTab,
854898 tabController: _tabController,
855899 title: LocaleKeys .books_for_later.tr (),
856900 ));
857901 break ;
858902 case BookStatus .unfinished:
859903 tabChips.add (BooksTabChip (
860- selected: _booksTabIndex == index,
861904 index: index,
862- changeTab: _changeTab,
863905 tabController: _tabController,
864906 title: LocaleKeys .books_unfinished.tr (),
865907 ));
0 commit comments