Flutter GitHub趋势查看插件gh_trend的使用

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

Flutter GitHub趋势查看插件gh_trend的使用

GitHub趋势抓取工具,适用于Dart和Flutter。

Pub Version


Trending repositories #

var result = await ghTrendingRepositories();

ghTrendingRepositories() 方法将返回一个 GithubRepoItem 的列表。

它还提供了可选参数,例如:

var result = await ghTrendingRepositories(
  spokenLanguageCode: 'en',
  programmingLanguage: 'javascript',
  dateRange: GhTrendDateRange.thisWeek, // 或者 `today` 或 `thisMonth`。
);

Trending developers #

var result = await ghTrendingDevelopers();

ghTrendingDevelopers() 方法将返回一个 GithubDeveloperItem 的列表。

它也提供了可选参数,例如:

var result = await ghTrendingDevelopers(
  programmingLanguage: 'javascript',
  dateRange: GhTrendDateRange.thisWeek, // 或者 `today` 或 `thisMonth`。
);

参数 #

  • <code>spokenLanguageCode</code> - 使用提供的 <strong>ghSpokenLanguages</strong> 映射来访问所有语言。你可以使用映射的 <em>值</em> 用于UI,映射的 <em>键</em> 用于参数。

  • <code>programmingLanguage</code> - 使用提供的 <strong>ghProgrammingLanguages</strong> 映射来访问所有编程语言。你可以使用映射的 <em>值</em> 用于UI,映射的 <em>键</em> 用于参数。

  • <code>dateRange</code> - 使用 <strong>GhTrendDateRange</strong> 枚举来访问所有可能的时间范围。调用提供的方法 <strong>ghDateRangeLabel(...)</strong> 来在UI中显示该值。

完整示例Demo

import 'package:gh_trend/gh_trend.dart';

void main() async {
  // 获取趋势仓库
  var repositories = await ghTrendingRepositories();
  for (var repo in repositories) {
    print('${repo.owner}/${repo.repoName}');
  }

  // 获取趋势开发者
  var developers = await ghTrendingDevelopers();
  for (var dev in developers) {
    print(dev.username);
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter应用中使用gh_trend插件来查看GitHub趋势的示例代码。gh_trend插件(假设它存在并且提供类似功能)通常用于获取GitHub上趋势项目的列表。以下代码演示了如何集成和使用该插件。

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

dependencies:
  flutter:
    sdk: flutter
  gh_trend: ^latest_version  # 替换为实际最新版本号

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

接下来,在你的Flutter应用中,你可以按照以下步骤使用gh_trend插件:

  1. 导入插件
import 'package:gh_trend/gh_trend.dart';
  1. 获取GitHub趋势数据
void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  List<GitHubTrend> trends = [];
  bool isLoading = true;

  @override
  void initState() {
    super.initState();
    _fetchTrends();
  }

  Future<void> _fetchTrends() async {
    try {
      // 假设ghTrendClient是一个用于获取趋势数据的客户端实例
      final ghTrendClient = GhTrendClient();
      trends = await ghTrendClient.getTrendingRepositories();
      setState(() {
        isLoading = false;
      });
    } catch (e) {
      print('Error fetching trends: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'GitHub Trend Viewer',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('GitHub Trend Viewer'),
        ),
        body: isLoading
            ? Center(child: CircularProgressIndicator())
            : ListView.builder(
                itemCount: trends.length,
                itemBuilder: (context, index) {
                  final trend = trends[index];
                  return ListTile(
                    title: Text(trend.name),
                    subtitle: Text(trend.description ?? ''),
                    trailing: Icon(Icons.arrow_forward_ios),
                    onTap: () {
                      // 打开仓库的URL
                      launchUrl(Uri.parse(trend.url));
                    },
                  );
                },
              ),
      ),
    );
  }
}

// 假设GitHubTrend是一个包含仓库信息的类
class GitHubTrend {
  String name;
  String? description;
  String url;

  GitHubTrend({required this.name, this.description, required this.url});
}

// 假设GhTrendClient是一个用于获取趋势数据的客户端类
class GhTrendClient {
  Future<List<GitHubTrend>> getTrendingRepositories() async {
    // 这里应该是实际的网络请求代码,例如使用http或dio库
    // 这里为了演示,我们直接返回一个硬编码的列表
    return [
      GitHubTrend(name: 'Repo1', description: 'Description of Repo1', url: 'https://github.com/user/repo1'),
      GitHubTrend(name: 'Repo2', description: 'Description of Repo2', url: 'https://github.com/user/repo2'),
      // 更多仓库...
    ];
  }
}

// 用于打开URL的函数
Future<void> launchUrl(Uri url) async {
  if (await canLaunchUrl(url)) {
    await launchUrl(url);
  } else {
    throw 'Could not launch $url';
  }
}

注意

  • GhTrendClientGitHubTrend类在这里是假设的,实际使用时应该根据gh_trend插件提供的API来实现。
  • launchUrl函数用于打开仓库的URL,它依赖于url_launcher插件。如果尚未添加,请在pubspec.yaml中添加依赖并导入:
dependencies:
  url_launcher: ^latest_version  # 替换为实际最新版本号
import 'package:url_launcher/url_launcher.dart';

确保你根据实际情况调整代码,特别是网络请求和数据解析部分。如果gh_trend插件提供了不同的API或数据结构,你需要相应地调整代码。

回到顶部