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;
}
}
说明
-
导入必要的库:
import 'package:flutter/material.dart'; import 'package:github_trending/github_trending.dart';
-
创建一个 Flutter 应用程序:
void main() { runApp(MyApp()); }
-
定义
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'), ); }, ); } }, ), ), ), ); } }
-
定义
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
更多关于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';
}
}
}
注意:
- 在上面的代码中,我们使用了
launchUrl
方法来打开仓库的 URL。你需要导入package:url_launcher/url_launcher.dart
并添加相应的依赖。 - 确保你的应用有权限打开外部链接,特别是在 Android 和 iOS 上你可能需要在
AndroidManifest.xml
和Info.plist
中添加相关配置。
添加 url_launcher
依赖到 pubspec.yaml
:
dependencies:
flutter:
sdk: flutter
github_trending: ^最新版本号
url_launcher: ^最新版本号 # 请替换为当前最新版本号
然后,再次运行 flutter pub get
。
这段代码展示了如何使用 github_trending
插件获取 GitHub 上的趋势项目,并将它们显示在一个简单的列表中。当用户点击列表项时,将打开相应的 GitHub 仓库页面。