Skip to content

Commit 6f57e9b

Browse files
committed
add clear filter feature when no torrent filtered
1 parent 155fe32 commit 6f57e9b

File tree

1 file changed

+61
-2
lines changed

1 file changed

+61
-2
lines changed

lib/Pages/torrent_screen.dart

Lines changed: 61 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'package:flood_mobile/Components/add_torrent_sheet.dart';
22
import 'package:flood_mobile/Components/filter_by_status.dart';
33
import 'package:flood_mobile/Components/bottom_floating_menu_button.dart';
4+
import 'package:flood_mobile/Components/text_size.dart';
45
import 'package:flood_mobile/Components/torrent_tile.dart';
56
import 'package:flood_mobile/Constants/theme_provider.dart';
67
import 'package:flood_mobile/Provider/home_provider.dart';
@@ -22,6 +23,26 @@ List<String> trackerURIsList = [];
2223
class _TorrentScreenState extends State<TorrentScreen> {
2324
String keyword = '';
2425

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+
2546
@override
2647
Widget build(BuildContext context) {
2748
double hp = MediaQuery.of(context).size.height;
@@ -30,6 +51,8 @@ class _TorrentScreenState extends State<TorrentScreen> {
3051
return Consumer<ClientSettingsProvider>(
3152
builder: (context, clientModel, child) {
3253
return Consumer<FilterProvider>(builder: (context, filterModel, child) {
54+
int showTorrentCount =
55+
countDisplayTorrent(model, keyword, filterModel, 0);
3356
return KeyboardDismissOnTap(
3457
child: Scaffold(
3558
body: Container(
@@ -38,7 +61,9 @@ class _TorrentScreenState extends State<TorrentScreen> {
3861
color: ThemeProvider.theme.primaryColor,
3962
child: (model.torrentList.length != 0)
4063
? PullToRevealTopItemList(
41-
itemCount: model.torrentList.length,
64+
itemCount: showTorrentCount == 0
65+
? 1
66+
: model.torrentList.length,
4267
itemBuilder: (BuildContext context, int index) {
4368
Provider.of<FilterProvider>(context, listen: false)
4469
.settrackerURIsList(
@@ -66,7 +91,41 @@ class _TorrentScreenState extends State<TorrentScreen> {
6691
model: model.torrentList[index]);
6792
}
6893
}
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+
);
70129
},
71130
revealableHeight: 165,
72131
revealableBuilder: (BuildContext context,

0 commit comments

Comments
 (0)