@@ -2,6 +2,7 @@ import 'package:flood_mobile/Api/event_handler_api.dart';
2
2
import 'package:flood_mobile/Components/add_torrent_sheet.dart' ;
3
3
import 'package:flood_mobile/Components/filter_by_status.dart' ;
4
4
import 'package:flood_mobile/Components/bottom_floating_menu_button.dart' ;
5
+ import 'package:flood_mobile/Components/text_size.dart' ;
5
6
import 'package:flood_mobile/Components/torrent_tile.dart' ;
6
7
import 'package:flood_mobile/Constants/theme_provider.dart' ;
7
8
import 'package:flood_mobile/Provider/home_provider.dart' ;
@@ -23,6 +24,26 @@ List<String> trackerURIsList = [];
23
24
class _TorrentScreenState extends State <TorrentScreen > {
24
25
String keyword = '' ;
25
26
27
+ int countDisplayTorrent (HomeProvider model, String keyword,
28
+ FilterProvider filterModel, int showTorrentCount) {
29
+ model.torrentList.forEach (
30
+ (torrent) {
31
+ if (torrent.name.toLowerCase ().contains (keyword.toLowerCase ()) &&
32
+ torrent.status.contains (
33
+ filterModel.filterStatus.toString ().split ("." ).last) ||
34
+ torrent.trackerURIs
35
+ .toString ()
36
+ .contains (filterModel.trackerURISelected) ||
37
+ filterModel.filterStatus.toString ().split ("." ).last == "all" ) {
38
+ if (torrent.name.toLowerCase ().contains (keyword.toLowerCase ())) {
39
+ showTorrentCount++ ;
40
+ }
41
+ }
42
+ },
43
+ );
44
+ return showTorrentCount;
45
+ }
46
+
26
47
@override
27
48
Widget build (BuildContext context) {
28
49
double hp = MediaQuery .of (context).size.height;
@@ -32,6 +53,8 @@ class _TorrentScreenState extends State<TorrentScreen> {
32
53
return Consumer <ClientSettingsProvider >(
33
54
builder: (context, clientModel, child) {
34
55
return Consumer <FilterProvider >(builder: (context, filterModel, child) {
56
+ int showTorrentCount =
57
+ countDisplayTorrent (model, keyword, filterModel, 0 );
35
58
return KeyboardDismissOnTap (
36
59
child: Scaffold (
37
60
body: Container (
@@ -40,7 +63,9 @@ class _TorrentScreenState extends State<TorrentScreen> {
40
63
color: ThemeProvider .theme.primaryColor,
41
64
child: (model.torrentList.length != 0 )
42
65
? PullToRevealTopItemList (
43
- itemCount: model.torrentList.length,
66
+ itemCount: showTorrentCount == 0
67
+ ? 1
68
+ : model.torrentList.length,
44
69
itemBuilder: (BuildContext context, int index) {
45
70
Provider .of <FilterProvider >(context, listen: false )
46
71
.settrackerURIsList (
@@ -68,7 +93,41 @@ class _TorrentScreenState extends State<TorrentScreen> {
68
93
model: model.torrentList[index]);
69
94
}
70
95
}
71
- return Container ();
96
+ return Container (
97
+ child: showTorrentCount == 0
98
+ ? Container (
99
+ height: 300 ,
100
+ width: double .infinity,
101
+ alignment: Alignment .center,
102
+ child: Column (
103
+ mainAxisAlignment:
104
+ MainAxisAlignment .center,
105
+ children: [
106
+ SText (text: "No torrents to display." ),
107
+ SizedBox (
108
+ height: 5 ,
109
+ ),
110
+ ElevatedButton (
111
+ style: ElevatedButton .styleFrom (
112
+ backgroundColor: ThemeProvider
113
+ .theme.primaryColorLight,
114
+ foregroundColor: ThemeProvider
115
+ .theme
116
+ .textTheme
117
+ .bodyText1
118
+ ? .color),
119
+ onPressed: () {
120
+ setState (() {
121
+ filterModel.setFilterSelected (
122
+ FilterValue .all);
123
+ });
124
+ },
125
+ child: Text ("Clear Filter" ))
126
+ ],
127
+ ),
128
+ )
129
+ : Container (),
130
+ );
72
131
},
73
132
revealableHeight: 165 ,
74
133
revealableBuilder: (BuildContext context,
0 commit comments