Flutter电影信息查询插件t_omdb的使用

Flutter电影信息查询插件t_omdb的使用

Unofficial Dart库用于与OMDb API交互

如果您有任何问题或需要帮助,请在这里提问。报告问题请在此处提交,并查看pub.dev页面。

待办事项

  • Posters API
  • 测试

开始使用

添加依赖

在终端运行以下命令以添加依赖:

$ dart pub add t_omdb

或者手动将以下内容添加到您的pubspec.yaml文件中:

dependencies:
  t_omdb: ^replace-with-latest-version
示例用法
import 'package:t_omdb/t_omdb.dart';

void main() async {
  final omdb = OmdbApi('your-api-key'); // 替换为您的API密钥

  // 通过IMDb ID搜索“银河护卫队”
  final String? byId = await omdb.searchById('tt3896198');

  // 通过标题搜索“银河护卫队”(返回第一个结果)
  final String? byTitle = await omdb.searchByTitle('guardians of the galaxy');

  // 通过查询搜索“银河护卫队”(返回多个匹配查询的结果)
  final String? byQuery = await omdb.searchByQuery(
    'guardians of the galaxy',
    type: OmdbType.movie,
    year: '2017',
    responseType: OmdbResponseType.json,
  );

  print(byId);
  print(byTitle);
  print(byQuery);
}

参数

通过ID或标题搜索

请注意,i或t至少需要一个。

参数名 必须 可选值 描述
i 可选 有效的IMDb ID(例如:tt1285016)
t 可选 要搜索的电影标题
type movie, series, episode 返回结果的类型
y 发行年份
plot short, full 返回简短或完整的剧情
r json, xml 返回的数据类型
通过查询搜索
参数名 必须 可选值 默认值 描述
s 要搜索的电影标题
type movie, series, episode 返回结果的类型
y 发行年份
r json, xml json 返回的数据类型
page 1 - 100 1 返回的页码

示例代码

以下是完整的示例代码,展示了如何使用t_omdb插件进行电影信息查询:

import 'package:t_omdb/t_omdb.dart';

void main() async {
  final omdb = OmdbApi('your-api-key'); // 替换为您的API密钥

  // 通过IMDb ID搜索“银河护卫队”
  final String? byId = await omdb.searchById('tt3896198');

  // 通过标题搜索“银河护卫队”(返回第一个结果)
  final String? byTitle = await omdb.searchByTitle('guardians of the galaxy');

  // 通过查询搜索“银河护卫队”(返回多个匹配查询的结果)
  final String? byQuery = await omdb.searchByQuery(
    'guardians of the galaxy',
    type: OmdbType.movie,
    year: '2017',
    responseType: OmdbResponseType.json,
  );

  print(byId);
  print(byTitle);
  print(byQuery);
}

更多关于Flutter电影信息查询插件t_omdb的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter电影信息查询插件t_omdb的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中集成并使用t_omdb(The Open Movie Database API)插件来查询电影信息的示例代码。请注意,t_omdb并非一个官方或广泛认知的Flutter插件名称,通常我们会使用HTTP请求库(如diohttp)直接调用OMDb API。这里我们将使用dio库来演示这一过程。

步骤 1: 添加依赖

首先,在你的pubspec.yaml文件中添加dio库的依赖:

dependencies:
  flutter:
    sdk: flutter
  dio: ^4.0.4  # 请检查最新版本号

然后运行flutter pub get来安装依赖。

步骤 2: 创建OMDb API服务

接下来,创建一个服务类来处理与OMDb API的交互。

import 'package:dio/dio.dart';

class OMDbService {
  final String apiKey;
  final Dio dio;

  OMDbService(this.apiKey) : dio = Dio() {
    dio.options.baseUrl = 'http://www.omdbapi.com/';
    dio.options.headers['Content-Type'] = 'application/json';
  }

  Future<Map<String, dynamic>> searchMovie(String title) async {
    try {
      Response<Map<String, dynamic>> response = await dio.get(
        '',
        queryParameters: {
          'apikey': apiKey,
          's': title,
          'type': 'movie'
        }
      );
      return response.data;
    } catch (error) {
      print('Error fetching movie data: $error');
      return {};
    }
  }
}

步骤 3: 使用服务查询电影信息

在你的Flutter应用中,使用这个服务来查询电影信息。例如,在一个简单的Flutter应用中,你可以在按钮点击时调用这个服务。

import 'package:flutter/material.dart';
import 'package:your_app_name/services/omdb_service.dart';  // 替换为你的实际路径

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Movie Info',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MovieSearchPage(),
    );
  }
}

class MovieSearchPage extends StatefulWidget {
  @override
  _MovieSearchPageState createState() => _MovieSearchPageState();
}

class _MovieSearchPageState extends State<MovieSearchPage> {
  final OMDbService omdbService = OMDbService('YOUR_API_KEY');  // 替换为你的OMDb API密钥
  String movieTitle = '';
  String searchResult = '';

  void _searchMovie() async {
    Map<String, dynamic> result = await omdbService.searchMovie(movieTitle);
    setState(() {
      if (result.isNotEmpty) {
        searchResult = 'Title: ${result['Search'][0]['Title']}\n'
            'Year: ${result['Search'][0]['Year']}\n'
            'Poster: ${result['Search'][0]['Poster']}';
      } else {
        searchResult = 'No movie found.';
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Movie Search'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            TextField(
              decoration: InputDecoration(
                labelText: 'Movie Title',
              ),
              onChanged: (value) {
                setState(() {
                  movieTitle = value;
                });
              },
            ),
            SizedBox(height: 16),
            ElevatedButton(
              onPressed: _searchMovie,
              child: Text('Search'),
            ),
            SizedBox(height: 16),
            Text(searchResult),
          ],
        ),
      ),
    );
  }
}

注意事项

  1. API密钥:确保你已经从OMDb网站获取了API密钥,并将其替换到代码中的YOUR_API_KEY位置。
  2. 错误处理:在实际应用中,你可能需要更完善的错误处理机制,比如显示错误消息或者处理网络问题。
  3. UI优化:这个示例中的UI非常基础,你可以根据需要进行美化和优化。

通过上述步骤,你应该能够在Flutter应用中集成并使用OMDb API来查询电影信息。

回到顶部