Flutter GitHub API 访问插件 octokit 的使用

Flutter GitHub API 访问插件 octokit 的使用

octokit.dart

:dart: Dart 工具包用于 GitHub GraphQL API :dart:

GitHub Workflow Status Pub Version Pub Version (包括预发布版本)

项目主页

目录 #

  • 介绍
  • 开始
  • 用法
  • 许可证

介绍 #

GitHub API v4 的 Dart 包装器,用于在您的应用中通过 Dart 和 Flutter 与 GitHub 进行交互。

该库非常灵活,并提供了用户所需的所有功能,支持的功能如下:

  • ✅ 原始 GraphQL 查询和变更
  • ✅ 从 .graphql 文件自动生成查询并在应用程序中与 Dart 对象一起工作

开始 #

Dart #

```bash dart pub add octokit ```

Flutter #

```bash flutter pub add octokit ```

或者将以下行添加到您的 pubspec.yaml 文件中:

```yaml dependencies: octokit: ^0.0.1 ```

接下来的部分将展示如何使用它!

用法 #

原始查询 #

import 'dart:io';

import 'package:octokit/octokit.dart';

void main() async {
  var sysEnv = Platform.environment;
  var token = sysEnv["GITHUB_TOKEN"]!;
  GithubClient client = GithubClient(token: token);
  var query = r'''
        query {
           viewer { 
              __typename
              login
            }
        }
        ''';
  var response =
  await client.rawQuery(queryDefinition: query, queryName: "viewer");
  print(response);
}

额外信息 #

此软件包旨在由最终用户自动管理。事实上,此软件包提供了从 GraphQL 模式生成代码的 API,因此您可以实现自己的自定义查询,并使用 octokit.dart 提供的 API 处理所有内容。

许可证 #

Copyright 2022 Vincenzo Palazzo <vincenzopalazzodev@gmail.com>. All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above
      copyright notice, this list of conditions and the following
      disclaimer in the documentation and/or other materials provided
      with the distribution.
    * Neither the name of Google Inc. nor the names of its
      contributors may be used to endorse or promote products derived
      from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

示例:example/octokit_example.dart

import 'dart:io';

import 'package:octokit/octokit.dart';

void main() async {
  var sysEnv = Platform.environment;
  var token = sysEnv["GITHUB_TOKEN"]!;
  GithubClient client = GithubClient(token: token);
  var query = r'''
        query {
           viewer { 
              __typename
              login
            }
        }
        ''';
  var response =
      await client.rawQuery(queryDefinition: query, queryName: "viewer");
  print(response);
}

更多关于Flutter GitHub API 访问插件 octokit 的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter GitHub API 访问插件 octokit 的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用octokit插件来访问GitHub API的示例代码。这个示例展示了如何初始化octokit客户端,并进行一个简单的API调用,比如获取用户信息。

首先,确保你已经在pubspec.yaml文件中添加了octokit依赖:

dependencies:
  flutter:
    sdk: flutter
  octokit: ^0.x.x  # 请注意版本号,使用最新版本

然后运行flutter pub get来获取依赖。

接下来,在你的Flutter项目中,你可以按照以下步骤使用octokit

  1. 初始化Octokit客户端
import 'package:octokit/octokit.dart';
import 'dart:convert';

Future<void> main() async {
  // GitHub personal access token
  String personalAccessToken = 'YOUR_PERSONAL_ACCESS_TOKEN';

  // Create a GitHub client
  var github = GitHub(auth: Authentication.withToken(personalAccessToken));

  // Example: Get user information
  try {
    var user = await github.users.get(username: 'octocat');
    print(jsonEncode(user.toJson()));
  } catch (e) {
    print('Error fetching user info: $e');
  }
}

注意:在实际应用中,不要把个人访问令牌硬编码在代码中。你可以使用环境变量或者安全的密钥管理服务来管理令牌。

  1. 在Flutter应用中调用

由于main()函数通常用于Flutter应用的入口,你可能希望在某个按钮点击事件或其他交互中调用GitHub API。下面是一个在Flutter UI中调用上述逻辑的示例:

import 'package:flutter/material.dart';
import 'package:octokit/octokit.dart';
import 'dart:convert';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Octokit Demo',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Octokit Demo'),
        ),
        body: Center(
          child: MyOctokitButton(),
        ),
      ),
    );
  }
}

class MyOctokitButton extends StatefulWidget {
  @override
  _MyOctokitButtonState createState() => _MyOctokitButtonState();
}

class _MyOctokitButtonState extends State<MyOctokitButton> {
  String _result = '';

  @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      onPressed: _fetchUserInfo,
      child: Text('Get User Info'),
    );
  }

  Future<void> _fetchUserInfo() async {
    String personalAccessToken = 'YOUR_PERSONAL_ACCESS_TOKEN'; // 使用更安全的方式管理令牌
    var github = GitHub(auth: Authentication.withToken(personalAccessToken));

    try {
      var user = await github.users.get(username: 'octocat');
      setState(() {
        _result = jsonEncode(user.toJson());
      });
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('User info fetched successfully!')),
      );
    } catch (e) {
      setState(() {
        _result = 'Error fetching user info: $e';
      });
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(content: Text('Error: ${e.toString()}')),
      );
    }
  }
}

在这个示例中,当用户点击按钮时,Flutter应用会通过octokit插件调用GitHub API来获取用户信息,并在UI中显示结果或错误信息。

请确保你已经替换'YOUR_PERSONAL_ACCESS_TOKEN'为你的实际GitHub个人访问令牌,并考虑在生产环境中使用更安全的方法来管理令牌。

回到顶部