searchFiltered method

Future<List<Track>> searchFiltered(
  1. String query, {
  2. Duration? minDuration,
  3. Duration? maxDuration,
  4. String? requiredWord,
})

Search with filters

Implementation

Future<List<Track>> searchFiltered(
  String query, {
  Duration? minDuration,
  Duration? maxDuration,
  String? requiredWord,
}) async {
  final results = await search(query);

  return results.where((track) {
    final duration = Duration(milliseconds: track.info.length);

    if (minDuration != null && duration < minDuration) return false;
    if (maxDuration != null && duration > maxDuration) return false;
    if (requiredWord != null &&
        !track.info.title.toLowerCase().contains(requiredWord.toLowerCase())) {
      return false;
    }

    return true;
  }).toList();
}