Flutter电影信息获取插件tmdb_dart的使用
Flutter电影信息获取插件tmdb_dart的使用
Dart TMDB
The Movie DB API Client for Dart v2
示例
要运行示例,首先需要从The Movie Database API 获取您的 api_key
。然后可以运行 dart example/main.dart your_api_key
或者在 .vscode/launch.json
配置文件中替换您的 api_key
。
示例代码
以下是一个完整的示例代码,展示了如何使用 tmdb_dart
插件来获取电影信息。
import 'dart:async';
import 'package:tmdb_dart/tmdb_dart.dart';
Future<void> main(List<String> arguments) async {
assert(arguments.length == 1);
TmdbService service = TmdbService(arguments[0]);
// 自动配置API基于默认配置
// 或者使用setter 'configuration'自定义配置API
await service.initConfiguration();
// 搜索包含 "harry" 的电影
var pagedResult = await service.movie.search("harry");
for (var movie in pagedResult.results) {
print("${movie.title} - ${movie.voteAverage}");
}
// 获取今天播出的电视剧
var pagedTvResult = await service.tv.getAiringToday();
for (var tv in pagedTvResult.results) {
print("${tv.name} - ${tv.voteAverage}");
}
// 获取热门电影
var popular = await service.movie.getPopular();
for (var movie in popular.results) {
print("${movie.title} - ${movie.voteAverage}");
}
// 发现符合特定条件的电影
var discover = await service.movie.discover(
settings: MovieDiscoverSettings(
primaryReleaseDateGTE: Date(day: 15, month: 9, year: 2010),
primaryReleaseDateLTE: Date(day: 22, month: 10, year: 2015),
voteAverageGTE: 5.5,
withPeople: [108916, 7467],
sortBy: SortBy.popularity.desc,
quality: QualitySettings.Custom(
backdropQuality: AssetQuality.High,
logoQuality: AssetQuality.High,
posterQuality: AssetQuality.High,
profileQuality: AssetQuality.High,
stillQuality: AssetQuality.High,
),
),
);
for (var movie in discover.results) {
print("${movie.title} - ${movie.voteAverage} - ${movie.releaseDate}");
}
// 获取特定电影的详细信息及推荐和相似内容
var movie = await service.movie.getDetails(671,
appendSettings: AppendSettings(
includeRecommendations: true,
includeSimilarContent: true,
));
print("${movie.recommendations[0].title}");
print("${movie.similar[0].title}");
// 获取特定电视剧的详细信息及推荐和相似内容
var tv = await service.tv.getDetails(1399,
appendSettings: AppendSettings(
includeRecommendations: true,
includeSimilarContent: true,
));
print("${tv.originalName} - ${tv.seasons.length}");
print("${tv.similar[0].originalName} - ${tv.similar[0].firstAirDate}");
// 获取国家和地区列表
print("Countries: ${(await service.getAllCountries()).length}");
// 获取电影类型列表
print("MovieGenres: ${(await service.getAllTvGenres()).length}");
}
// 生成许多请求
// 请求数量超过允许的阈值
// 但得益于集成的韧性机制,所有请求都成功完成
Future<void> resilienceExample(TmdbService service) async {
var futures = Iterable.generate(100)
.map((x) => service.movie.search(x.toString()))
.toList();
await Future.wait(futures);
}
使用说明
-
初始化插件:
TmdbService service = TmdbService(apiKey); await service.initConfiguration();
-
搜索电影:
var pagedResult = await service.movie.search("harry");
-
获取热门电影:
var popular = await service.movie.getPopular();
-
发现符合特定条件的电影:
var discover = await service.movie.discover(settings: MovieDiscoverSettings(...));
-
获取电影详细信息及推荐和相似内容:
var movie = await service.movie.getDetails(movieId, appendSettings: AppendSettings(...));
-
处理大量请求:
var futures = Iterable.generate(100).map((x) => service.movie.search(x.toString())).toList(); await Future.wait(futures);
更多关于Flutter电影信息获取插件tmdb_dart的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter电影信息获取插件tmdb_dart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何使用 tmdb_dart
插件在 Flutter 中获取电影信息的代码案例。tmdb_dart
是一个用于与 The Movie Database (TMDb) API 交互的 Flutter 插件。
首先,确保你已经在 pubspec.yaml
文件中添加了 tmdb_dart
依赖:
dependencies:
flutter:
sdk: flutter
tmdb_dart: ^x.y.z # 请替换为最新版本号
然后运行 flutter pub get
来获取依赖。
接下来,下面是一个完整的 Flutter 应用示例,它展示了如何使用 tmdb_dart
获取并显示电影信息。
main.dart
import 'package:flutter/material.dart';
import 'package:tmdb_dart/tmdb_dart.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
late TmdbClient _tmdbClient;
late Movie? _movie;
bool _isLoading = true;
@override
void initState() {
super.initState();
_tmdbClient = TmdbClient(apiKey: 'YOUR_API_KEY'); // 替换为你的TMDb API Key
_fetchMovieData(movieId: 550); // 示例电影ID(例如《Inception》的ID)
}
Future<void> _fetchMovieData({required int movieId}) async {
setState(() {
_isLoading = true;
});
try {
final movieResponse = await _tmdbClient.movies.getMovieDetails(movieId);
setState(() {
_movie = movieResponse;
_isLoading = false;
});
} catch (e) {
print('Error fetching movie data: $e');
setState(() {
_isLoading = false;
});
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter TMDb Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Scaffold(
appBar: AppBar(
title: Text('Movie Info'),
),
body: Center(
child: _isLoading
? CircularProgressIndicator()
: _movie != null
? Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
_movie!.title ?? '',
style: TextStyle(fontSize: 24),
),
SizedBox(height: 16),
Image.network(
_movie!.posterPath ?? '',
width: 200,
height: 300,
fit: BoxFit.cover,
),
SizedBox(height: 16),
Text(
_movie!.overview ?? '',
style: TextStyle(fontSize: 16),
),
],
)
: Text('No movie data found.'),
),
),
);
}
}
注意事项
-
API Key: 替换
'YOUR_API_KEY'
为你从 TMDb 获取的实际 API Key。你可以在 TMDb 开发者页面上注册并获取一个免费的 API Key。 -
电影ID: 在
_fetchMovieData
方法中,电影ID550
是示例 ID(代表电影《Inception》)。你可以根据需要替换为其他电影ID。 -
错误处理: 在实际应用中,你可能需要更详细的错误处理逻辑,比如显示错误消息或者重试机制。
-
UI美化: 根据你的需求,你可以进一步美化 UI,比如添加更多的电影详情、使用不同的布局等。
这个示例展示了如何使用 tmdb_dart
插件获取电影的基本信息,并在 Flutter 应用中显示这些信息。你可以根据需求进一步扩展功能,比如获取电影评论、演员列表等。