Flutter游戏数据库查询插件igdb的使用

发布于 1周前 作者 yibo5220 来自 Flutter

Flutter游戏数据库查询插件igdb的使用

IGDB Dart API Wrapper

On Progress

该插件是从 mitchhymel/dart-igdb_client 分支而来,用于通过 Flutter 和 Dart 访问 IGDB(Internet Games Database)API。


使用步骤

要使用 IGDB 插件,首先需要设置 Twitch 客户端 ID 和客户端密钥。以下是完整的示例代码,展示如何在 Flutter 中使用该插件来查询游戏数据。

示例代码

main.dart

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:igdb/igdb.dart'; // 引入 igdb 包

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  String _result = ''; // 存储查询结果

  Future<void> fetchGames() async {
    try {
      // 获取环境变量中的 Twitch 客户端 ID 和密钥
      final clientId = Platform.environment['TWITCH_CLIENT'];
      final clientSecret = Platform.environment['TWITCH_SECRET'];

      if (clientId == null || clientSecret == null) {
        setState(() {
          _result =
              '请确保设置了 TWITCH_CLIENT 和 TWITCH_SECRET 环境变量!';
        });
        return;
      }

      // 初始化 IGDB 客户端
      final client = IGDBClient(clientId, clientSecret);

      // 设置查询参数
      const igdbRequestParameters = IGDBRequestParameters(
        search: 'CS:GO', // 查询关键词
      );

      // 执行不同类型的查询
      final json = await client.gameJson(igdbRequestParameters);
      final countJson = await client.gameCountJson(igdbRequestParameters);
      final proto = await client.gameProto(igdbRequestParameters);
      final countProto = await client.gameCountProto(igdbRequestParameters);

      // 更新 UI
      setState(() {
        _result = '''
        JSON 游戏数据:
        $json
        
        JSON 游戏数量:
        $countJson
        
        Protocol Buffers 游戏数据:
        ${proto?.toProto3Json()}
        
        Protocol Buffers 游戏数量:
        ${countProto?.toProto3Json()}
        ''';
      });
    } catch (e) {
      setState(() {
        _result = '查询失败: $e';
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('IGDB 游戏查询示例'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: fetchGames,
              child: Text('查询 CS:GO 游戏数据'),
            ),
            SizedBox(height: 20),
            Text(
              _result,
              style: TextStyle(fontSize: 14),
            ),
          ],
        ),
      ),
    );
  }
}

说明

  1. 依赖安装: 在 pubspec.yaml 文件中添加 igdb 依赖:

    dependencies:
      igdb: ^0.1.0
  2. 环境变量配置

    • 在运行项目之前,请确保设置了以下环境变量:
      • TWITCH_CLIENT: Twitch 客户端 ID。
      • TWITCH_SECRET: Twitch 客户端密钥。
    • 可以在终端中设置:
      export TWITCH_CLIENT=your_client_id
      export TWITCH_SECRET=your_client_secret
  3. 功能说明

    • gameJson: 返回 JSON 格式的查询结果。
    • gameCountJson: 返回符合条件的游戏数量。
    • gameProto: 返回 Protocol Buffers 格式的查询结果。
    • gameCountProto: 返回符合条件的游戏数量(Protocol Buffers 格式)。
  4. UI 界面

    • 点击按钮后,程序会调用 IGDB API 并显示查询结果。
    • 如果查询失败,会在界面上显示错误信息。

输出示例

点击按钮后,可能的输出如下:

JSON 游戏数据:
[
  {
    "id": 10,
    "name": "Counter-Strike: Global Offensive",
    ...
  }
]

JSON 游戏数量:
1

Protocol Buffers 游戏数据:
{
  "games": [
    {
      "id": 10,
      "name": "Counter-Strike: Global Offensive",
      ...
    }
  ]
}

Protocol Buffers 游戏数量:
1

更多关于Flutter游戏数据库查询插件igdb的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter游戏数据库查询插件igdb的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在使用Flutter开发游戏相关的应用时,igdb 是一个非常有用的插件,它允许你通过IGDB(Internet Game Database)API查询游戏数据。IGDB提供了丰富的游戏信息,包括游戏名称、发行日期、开发商、评分、封面图片等。

以下是如何在Flutter中使用igdb插件的基本步骤:

1. 安装依赖

首先,你需要在pubspec.yaml文件中添加igdb插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  igdb: ^1.0.0  # 请检查最新版本

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

2. 获取IGDB API密钥

要使用IGDB API,你需要先在IGDB注册一个账户并获取API密钥。

3. 初始化IGDB客户端

在你的Flutter应用中,初始化IGDB客户端:

import 'package:igdb/igdb.dart';

final igdb = IgdbClient('your_api_key_here');

4. 查询游戏数据

你可以使用igdb客户端来查询游戏数据。以下是一些常见的查询示例:

查询游戏列表

void fetchGames() async {
  try {
    final games = await igdb.games(
      fields: ['name', 'release_dates', 'cover'],
      limit: 10,
    );
    print(games);
  } catch (e) {
    print('Error fetching games: $e');
  }
}

查询特定游戏

void fetchGameById(int gameId) async {
  try {
    final game = await igdb.game(
      gameId,
      fields: ['name', 'summary', 'cover'],
    );
    print(game);
  } catch (e) {
    print('Error fetching game: $e');
  }
}

查询游戏封面

void fetchGameCover(int gameId) async {
  try {
    final cover = await igdb.covers(
      fields: ['image_id'],
      where: 'game = $gameId',
    );
    print(cover);
  } catch (e) {
    print('Error fetching cover: $e');
  }
}

5. 处理查询结果

查询结果通常是一个包含游戏信息的JSON对象。你可以根据需要解析这些数据并在UI中显示。

例如,显示游戏列表:

ListView.builder(
  itemCount: games.length,
  itemBuilder: (context, index) {
    final game = games[index];
    return ListTile(
      title: Text(game['name']),
      subtitle: Text(game['release_dates']?.first['human'] ?? 'Unknown'),
      leading: game['cover'] != null
          ? Image.network('https://images.igdb.com/igdb/image/upload/t_thumb/${game['cover']['image_id']}.jpg')
          : null,
    );
  },
);
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!