searchMoviesByGenre method

Future<List<Movie>> searchMoviesByGenre(
  1. String genreName
)

Searches for movies by genre name.

Implementation

Future<List<Movie>> searchMoviesByGenre(String genreName) async {
  // Get genre list first.

  final genreResponse = await _client.getJson('genre/movie/list');
  final genres = genreResponse['genres'] as List<dynamic>;

  // Find matching genre.

  final matchingGenre = genres.firstWhere(
    (genre) => (genre['name'] as String)
        .toLowerCase()
        .contains(genreName.toLowerCase()),
    orElse: () => null,
  );

  if (matchingGenre == null) return [];

  // Search movies by genre ID.

  final genreId = matchingGenre['id'];
  final results =
      await _client.getJsonList('discover/movie?with_genres=$genreId');

  return results.map((movie) => Movie.fromJson(movie)).toList();
}