Flutter获取GitHub趋势项目插件github_trending的使用

Flutter获取GitHub趋势项目插件github_trending的使用

github_trending 是一个用于通过 github-trending-api 获取 GitHub 趋势项目的 Dart 库。

安装

在你的 pubspec.yaml 文件中添加 github_trending 作为依赖:

dependencies:
  github_trending: ^版本号

然后运行 flutter pub get 来安装该包。

使用

以下是一个完整的示例,展示了如何使用 github_trending 插件来获取 GitHub 趋势项目。

示例代码

import 'package:flutter/material.dart';
import 'package:github_trending/github_trending.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('GitHub Trending'),
        ),
        body: Center(
          child: FutureBuilder(
            future: getTrendingRepositories(),
            builder: (context, snapshot) {
              if (snapshot.connectionState == ConnectionState.waiting) {
                return CircularProgressIndicator();
              } else if (snapshot.hasError) {
                return Text('Error: ${snapshot.error}');
              } else {
                var repos = snapshot.data;
                return ListView.builder(
                  itemCount: repos.length,
                  itemBuilder: (context, index) {
                    return ListTile(
                      title: Text(repos[index].name),
                      subtitle: Text(repos[index].description ?? 'No description'),
                      trailing: Text(repos[index].language ?? 'Unknown'),
                    );
                  },
                );
              }
            },
          ),
        ),
      ),
    );
  }

  Future<List<TrendingRepository>> getTrendingRepositories() async {
    final trending = GithubTrending();

    // 获取趋势仓库
    var repos = await trending.getTrendingRepositories();
    return repos;
  }
}

说明

  1. 导入必要的库

    import 'package:flutter/material.dart';
    import 'package:github_trending/github_trending.dart';
    
  2. 创建一个 Flutter 应用程序

    void main() {
      runApp(MyApp());
    }
    
  3. 定义 MyApp

    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          home: Scaffold(
            appBar: AppBar(
              title: Text('GitHub Trending'),
            ),
            body: Center(
              child: FutureBuilder(
                future: getTrendingRepositories(),
                builder: (context, snapshot) {
                  if (snapshot.connectionState == ConnectionState.waiting) {
                    return CircularProgressIndicator();
                  } else if (snapshot.hasError) {
                    return Text('Error: ${snapshot.error}');
                  } else {
                    var repos = snapshot.data;
                    return ListView.builder(
                      itemCount: repos.length,
                      itemBuilder: (context, index) {
                        return ListTile(
                          title: Text(repos[index].name),
                          subtitle: Text(repos[index].description ?? 'No description'),
                          trailing: Text(repos[index].language ?? 'Unknown'),
                        );
                      },
                    );
                  }
                },
              ),
            ),
          ),
        );
      }
    }
    
  4. 定义 getTrendingRepositories 函数

    Future<List<TrendingRepository>> getTrendingRepositories() async {
      final trending = GithubTrending();
    
      // 获取趋势仓库
      var repos = await trending.getTrendingRepositories();
      return repos;
    }
    

更多关于Flutter获取GitHub趋势项目插件github_trending的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


当然,以下是一个使用 github_trending 插件来获取 GitHub 趋势项目的 Flutter 代码示例。这个插件允许你获取 GitHub 上按不同语言和时间段排序的趋势项目。

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

dependencies:
  flutter:
    sdk: flutter
  github_trending: ^最新版本号  # 请替换为当前最新版本号

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

接下来是一个完整的 Flutter 应用示例,展示如何使用 github_trending 插件获取并显示 GitHub 趋势项目:

import 'package:flutter/material.dart';
import 'package:github_trending/github_trending.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'GitHub Trending Projects',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: TrendingProjectsPage(),
    );
  }
}

class TrendingProjectsPage extends StatefulWidget {
  @override
  _TrendingProjectsPageState createState() => _TrendingProjectsPageState();
}

class _TrendingProjectsPageState extends State<TrendingProjectsPage> {
  List<Repository> _repositories = [];
  bool _loading = true;

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

  Future<void> _fetchTrendingRepositories() async {
    try {
      final trending = await GithubTrending.getTrendingRepositories(
        language: 'all', // 可以指定语言,如 'dart', 'javascript' 等,或 'all' 获取所有语言
        since: 'daily', // 可以指定时间段,如 'daily', 'weekly', 'monthly'
      );
      setState(() {
        _repositories = trending.repositories;
        _loading = false;
      });
    } catch (e) {
      print('Error fetching trending repositories: $e');
      setState(() {
        _loading = false;
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('GitHub Trending Projects'),
      ),
      body: _loading
          ? Center(child: CircularProgressIndicator())
          : ListView.builder(
              itemCount: _repositories.length,
              itemBuilder: (context, index) {
                final repo = _repositories[index];
                return ListTile(
                  title: Text(repo.name),
                  subtitle: Text(repo.owner.login),
                  trailing: Icon(Icons.arrow_forward),
                  onTap: () {
                    // 打开仓库 URL
                    launchUrl(Uri.parse(repo.htmlUrl));
                  },
                );
              },
            ),
    );
  }

  Future<void> launchUrl(Uri url) async {
    if (await canLaunchUrl(url)) {
      await launchUrl(url);
    } else {
      throw 'Could not launch $url';
    }
  }
}

注意

  1. 在上面的代码中,我们使用了 launchUrl 方法来打开仓库的 URL。你需要导入 package:url_launcher/url_launcher.dart 并添加相应的依赖。
  2. 确保你的应用有权限打开外部链接,特别是在 Android 和 iOS 上你可能需要在 AndroidManifest.xmlInfo.plist 中添加相关配置。

添加 url_launcher 依赖到 pubspec.yaml

dependencies:
  flutter:
    sdk: flutter
  github_trending: ^最新版本号
  url_launcher: ^最新版本号  # 请替换为当前最新版本号

然后,再次运行 flutter pub get

这段代码展示了如何使用 github_trending 插件获取 GitHub 上的趋势项目,并将它们显示在一个简单的列表中。当用户点击列表项时,将打开相应的 GitHub 仓库页面。

回到顶部