Hi Team, So I have been doing a flutter project and I tried to pull the trailer URL from the API. After the whole code is written without any errors, the key is being generated as null. Here is the code that I have written.
According to the code written and for any movie if the trailer button is clicked, a message with random key is being generated.
Failed to open trailer. Could not launch https:// www.youtube.com/watch?y=https:/ www.youtube.com/watch?v=TOwSzeBITAE
Could you please help me with this?
Thank you.
Future<String?> fetchTrailerUrl(int movieId) async {
try {
final response = await http.get(
Uri.parse('$baseUrl/movie/$movieId/videos?api_key=$apiKey'),
);
if (response.statusCode == 200) {
final data = jsonDecode(response.body);
final results = data['results'] as List;
// Look for a YouTube trailer
final trailer = results.firstWhere(
(video) => video['type'] == 'Trailer' && video['site'] == 'YouTube',
orElse: () => null,
);
// Return the full YouTube URL if a trailer is found
if (trailer != null) {
return 'https://www.youtube.com/watch?v=${trailer['key']}';
}
// No trailer found
return null;
} else {
throw Exception('Failed to load trailer: ${response.reasonPhrase}');
}
} catch (e) {
print('Error in fetchTrailerUrl: $e');
return null;
}
}
class TrailerButtonWidget extends StatelessWidget {
final int movieId;
const TrailerButtonWidget({super.key, required this.movieId});
Future<void> _launchYouTube(String url) async {
final Uri uri = Uri.parse(url);
if (await canLaunchUrl(uri)) {
// Automatically redirects to YouTube app or browser
await launchUrl(uri, mode: LaunchMode.externalApplication);
} else {
throw 'Could not launch $url';
}
}
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(16.0),
child: ElevatedButton(
onPressed: () async {
try {
final trailerKey = await ApiService().fetchTrailerUrl(movieId);
if (trailerKey != null) {
final trailerUrl = 'https://www.youtube.com/watch?v=$trailerKey';
await _launchYouTube(trailerUrl);
} else {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('Trailer not available.')),
);
}
} catch (e) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Failed to open trailer: $e')),
);
}
},
child: const Text('Watch Trailer'),
),
);
}
}
Nemůžete nalézt film nebo seriál? Přihlaste se pro jeho vytvoření.
Want to rate or add this item to a list?
Not a member?
Odpověď od J_A_R_V_I_S
04.01.2025 v 1:01 DOP.
Hello Team could you please provide any update on this?
Odpověď od ticao2 🇧🇷 pt-BR
06.01.2025 v 4:18 ODP.
I am not a programmer.
So I can't help you by reading your code.
But looking at your code I notice something wrong in this part.
That Youtube KEY, TOwSzeBITAE, is no longer available.
I can pass on the following information.
Trailer URL
When you make an API Request requesting Videos,
in the response you will receive something like this:
Just add the KEY in the respective URL:
For example:
Youtube: https://www.youtube.com/watch?v=6JnN1DmbqoU
Youtube: https://www.youtube.com/watch?v=hzfvYSIIgyc
Vimeo: https://vimeo.com/282875052
Vimeo: https://player.vimeo.com/video/282875052
Travis Bell said on 2020-09-19
And it still holds true today. Nothing changed.
And I don't see any plans on the To-Do list to add a new channel.
https://trello.com/b/k34aFUme/web?filter=video
Odpověď od J_A_R_V_I_S
07.01.2025 v 6:03 DOP.
Hi Team, I have made the update to the code in order to fetch the Trailer URL via redirection to YouTube. The trailer is being played but the video shows as the blank screen. Here is the code that I have written for the trailer button widget that renders in the user interface.
This is the code that I have written that tracks the data from the TMDB API.
Could you please help me with this?
Thank you.
Odpověď od ticao2 🇧🇷 pt-BR
10.01.2025 v 7:44 DOP.
Good
I did a Google search.
https://www.google.com/search?client=firefox-b-d&q=trailer+is+being+played+but+the+video+shows+as+the+blank+screen
It seems like this is a problem for a lot of people.
I found this more recent question.
Maybe it will help.
https://community.firecore.com/t/black-screen-on-trailers/48616