Flutter客户端集成插件tenor_client的使用

Flutter客户端集成插件tenor_client的使用

Tenor Client

tenor_client 是一个用于获取GIF的客户端。


安装 💻

注意事项:为了开始使用 Tenor Client,您的机器上必须安装了 <a href="https://dart.dev/get-dart">Dart SDK</a>

在您的 pubspec.yaml 文件中添加 tenor_client

dependencies:
  tenor_client:

然后运行以下命令以安装它:

dart pub get

持续集成 🤖

Tenor Client 自带了一个由 <a href="https://github.com/VeryGoodOpenSource/very_good_workflows">Very Good Workflows</a> 提供的 GitHub Actions 工作流。您可以根据需要添加自己的 CI/CD 解决方案。默认情况下,每次拉取请求和推送都会触发 CI 对代码进行格式化、静态分析和测试,以确保代码的一致性和正确性。该项目使用 <a href="https://pub.dev/packages/very_good_analysis">Very Good Analysis</a> 进行严格的分析选项,并使用 <a href="https://github.com/marketplace/actions/very-good-coverage">Very Good Workflows</a> 来强制执行代码覆盖率。


运行测试 🧪

要运行所有单元测试,请执行以下命令:

dart pub global activate coverage 1.2.0
dart test --coverage=coverage
dart pub global run coverage:format_coverage --lcov --in=coverage --out=coverage/lcov.info

要查看生成的覆盖率报告,可以使用 <a href="https://github.com/linux-test-project/lcov">lcov</a>

# 生成覆盖率报告
genhtml coverage/lcov.info -o coverage/

# 打开覆盖率报告
open coverage/index.html

示例代码

以下是使用 tenor_client 的完整示例代码:

import 'package:example/pages/autocomplete_page.dart';
import 'package:example/pages/list_page.dart';
import 'package:example/pages/trending_page.dart';
import 'package:flutter/material.dart';
import 'package:tenor_client/tenor_client.dart';

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

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late TenorClient _tenorClient;

  [@override](/user/override)
  void initState() {
    super.initState();
    // 初始化 TenorClient,替换为您自己的 API Key
    _tenorClient = TenorClient(
      apiKey: '<INSERT-KEY-HERE>',
      countryCode: 'GB',
      clientKey: 'example_app',
    );
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
      routes: {
        // 添加路由到不同的页面
        '/list': (context) => ListPage(
              tenorClient: _tenorClient,
            ),
        '/trending': (context) => TrendingPage(
              tenorClient: _tenorClient,
            ),
        '/autocomplete': (context) => AutocompletePage(
              tenorClient: _tenorClient,
            ),
      },
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            // 添加按钮导航到不同的页面
            ElevatedButton(
              onPressed: () {
                Navigator.of(context).pushNamed('/list');
              },
              child: const Text('List Page'),
            ),
            ElevatedButton(
              onPressed: () {
                Navigator.of(context).pushNamed('/trending');
              },
              child: const Text('Trending Page'),
            ),
            ElevatedButton(
              onPressed: () {
                Navigator.of(context).pushNamed('/autocomplete');
              },
              child: const Text('Autocomplete Page'),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter客户端集成插件tenor_client的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter客户端集成插件tenor_client的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter客户端集成tenor_client插件,可以用于在应用中集成GIF搜索和展示功能。以下是一个简单的代码案例,展示了如何在Flutter项目中集成和使用tenor_client插件。

首先,确保你的Flutter项目已经创建。如果还没有创建,可以使用以下命令创建一个新的Flutter项目:

flutter create my_flutter_app

然后,导航到你的项目目录:

cd my_flutter_app

1. 添加依赖

pubspec.yaml文件中添加tenor_client依赖:

dependencies:
  flutter:
    sdk: flutter
  tenor_client: ^最新版本号  # 请替换为最新版本号

运行以下命令来获取依赖:

flutter pub get

2. 配置API密钥

在使用tenor_client之前,你需要在Tenor API上注册并获取一个API密钥。将获取的API密钥保存在你的项目中,例如在一个名为config.dart的文件中:

// config.dart
const String tenorApiKey = '你的Tenor API密钥';

3. 使用Tenor Client插件

在你的主页面或需要搜索GIF的页面中,使用tenor_client插件来搜索和展示GIF。以下是一个示例代码:

// main.dart
import 'package:flutter/material.dart';
import 'package:tenor_client/tenor_client.dart';
import 'config.dart'; // 导入你的配置文件

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

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

class TenorGifSearchPage extends StatefulWidget {
  @override
  _TenorGifSearchPageState createState() => _TenorGifSearchPageState();
}

class _TenorGifSearchPageState extends State<TenorGifSearchPage> {
  final TenorClient _tenorClient = TenorClient(apiKey: tenorApiKey);
  List<GifResult> _gifResults = [];
  String _searchQuery = 'happy';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Tenor GIF Search'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          children: [
            TextField(
              decoration: InputDecoration(labelText: 'Search Query'),
              onChanged: (value) {
                setState(() {
                  _searchQuery = value;
                });
              },
            ),
            SizedBox(height: 16.0),
            ElevatedButton(
              onPressed: _searchGifs,
              child: Text('Search GIFs'),
            ),
            SizedBox(height: 16.0),
            Expanded(
              child: GridView.builder(
                gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                  crossAxisCount: 2,
                  crossAxisSpacing: 8.0,
                  mainAxisSpacing: 8.0,
                ),
                itemCount: _gifResults.length,
                itemBuilder: (context, index) {
                  final gif = _gifResults[index];
                  return Image.network(gif.media[0].gif.url);
                },
              ),
            ),
          ],
        ),
      ),
    );
  }

  Future<void> _searchGifs() async {
    try {
      final searchResult = await _tenorClient.searchGifs(query: _searchQuery);
      setState(() {
        _gifResults = searchResult.results;
      });
    } catch (e) {
      print('Error searching GIFs: $e');
    }
  }
}

4. 运行应用

确保你的开发环境已经设置好,然后运行以下命令来启动应用:

flutter run

这个示例展示了如何在Flutter应用中集成tenor_client插件,搜索GIF并展示结果。你可以根据需要进一步自定义和扩展这个示例。

回到顶部