Skip to content

Commit 70248e6

Browse files
authored
Merge pull request #181 from amitamrutiya2210/issue-180-no-filter-torrent
Add clear filter feature on empty filtered torrent
2 parents 4d70ee9 + 6f57e9b commit 70248e6

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
@@ -2,6 +2,7 @@ import 'package:flood_mobile/Api/event_handler_api.dart';
22
import 'package:flood_mobile/Components/add_torrent_sheet.dart';
33
import 'package:flood_mobile/Components/filter_by_status.dart';
44
import 'package:flood_mobile/Components/bottom_floating_menu_button.dart';
5+
import 'package:flood_mobile/Components/text_size.dart';
56
import 'package:flood_mobile/Components/torrent_tile.dart';
67
import 'package:flood_mobile/Constants/theme_provider.dart';
78
import 'package:flood_mobile/Provider/home_provider.dart';
@@ -23,6 +24,26 @@ List<String> trackerURIsList = [];
2324
class _TorrentScreenState extends State<TorrentScreen> {
2425
String keyword = '';
2526

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+
2647
@override
2748
Widget build(BuildContext context) {
2849
double hp = MediaQuery.of(context).size.height;
@@ -32,6 +53,8 @@ class _TorrentScreenState extends State<TorrentScreen> {
3253
return Consumer<ClientSettingsProvider>(
3354
builder: (context, clientModel, child) {
3455
return Consumer<FilterProvider>(builder: (context, filterModel, child) {
56+
int showTorrentCount =
57+
countDisplayTorrent(model, keyword, filterModel, 0);
3558
return KeyboardDismissOnTap(
3659
child: Scaffold(
3760
body: Container(
@@ -40,7 +63,9 @@ class _TorrentScreenState extends State<TorrentScreen> {
4063
color: ThemeProvider.theme.primaryColor,
4164
child: (model.torrentList.length != 0)
4265
? PullToRevealTopItemList(
43-
itemCount: model.torrentList.length,
66+
itemCount: showTorrentCount == 0
67+
? 1
68+
: model.torrentList.length,
4469
itemBuilder: (BuildContext context, int index) {
4570
Provider.of<FilterProvider>(context, listen: false)
4671
.settrackerURIsList(
@@ -68,7 +93,41 @@ class _TorrentScreenState extends State<TorrentScreen> {
6893
model: model.torrentList[index]);
6994
}
7095
}
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+
);
72131
},
73132
revealableHeight: 165,
74133
revealableBuilder: (BuildContext context,

0 commit comments

Comments
 (0)