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