Flutter GitHub颜色获取插件github_colour的使用
Flutter GitHub颜色获取插件github_colour
的使用
Apply GitHub’s languages colours into Flutter’s Color
object.
从ozh的github-colors仓库接收最新的colors.json
文件,并将其转换为Flutter的Color
对象。
它还提供了web demo作为演示。
使用方法
你可以在调用runApp(Widget)
之前初始化GitHubColour
(如果希望从离线数据获取数据,则需要在调用WidgetsFlutterBinding.ensureInitialized()
之后执行):
// 启用离线备份
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await GitHubColour.initialize();
runApp(const YourApp());
}
// 禁用离线备份
void main() async {
await GitHubColour.initialize(offlineLastResort: false);
runApp(const YourApp());
}
然后在Widget
内部使用getExistedInstance()
来获取实例:
class YourAppWidget extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(
backgroundColor: GitHubColour.getExistedInstance()["Go"] // 使用Go语言的颜色
)
);
}
缓存机制(连接失败时)
该插件支持缓存系统,作为请求失败时的备用方案。它使用LZMA压缩数据并存储在临时目录下(对于VM)或基于IndexedDB(sembast_web
),版本3.1.0
及以下使用shared_preferences
。
如果没有可用的缓存,在执行GitHubColour.initialize()
时,它将使用本地的colors.json
作为最后的手段。然而,由于该包不会同步color.json
的最新提交(为了确保下载速度最快),因此不会实时更新。
对于美式英语开发者的提示
它提供了一个别名类GitHubColor
,供习惯使用“color”的开发者使用。
截图
示例代码
以下是完整的示例代码,展示如何使用github_colour
插件:
import 'package:flutter/material.dart';
import 'package:github_colour/github_colour.dart';
void main() async {
// 必须调用以启用离线JSON数据作为后备
WidgetsFlutterBinding.ensureInitialized();
// 构造一个实例以便将来使用
await GitHubColour.initialize();
// 如果禁用离线后备,可以注释掉此行
/*
await GitHubColour.initialize(offlineLastResort: false);
*/
runApp(const App());
}
class App extends StatelessWidget {
const App({super.key});
[@override](/user/override)
Widget build(BuildContext context) => MaterialApp(
title: 'GitHub Language colour',
theme: ThemeData(primarySwatch: Colors.blue, useMaterial3: false),
home: const GitHubColourDemo());
}
class GitHubColourDemo extends StatefulWidget {
const GitHubColourDemo({super.key});
[@override](/user/override)
State<GitHubColourDemo> createState() => _GitHubColourDemoState();
}
class _GitHubColourDemoState extends State<GitHubColourDemo> {
late TextEditingController _ctrl;
late String _lang;
[@override](/user/override)
void initState() {
super.initState();
_ctrl = TextEditingController(text: "Dart"); // 默认语言为Dart
_lang = _ctrl.text;
}
void _changeColour() {
setState(() {
_lang = _ctrl.text; // 更新语言
});
}
[@override](/user/override)
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(
// 根据输入的语言更改应用栏背景色
backgroundColor: GitHubColour.getExistedInstance()[_lang],
title: const Text("GitHub colour")),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
margin: const EdgeInsets.all(12),
constraints: const BoxConstraints(maxWidth: 350),
child: TextField(
// 输入语言名称
textInputAction: TextInputAction.go,
onSubmitted: (_) {
_changeColour();
},
controller: _ctrl,
decoration: const InputDecoration(
labelText: "Enter language name here:"),
autocorrect: false)),
const Divider(height: 8, indent: 1.5, thickness: 0.25),
SizedBox(
// 提交按钮
width: 80,
height: 35,
child: ElevatedButton(
onPressed: _changeColour, child: const Text("Apply")))
])));
}
更多关于Flutter GitHub颜色获取插件github_colour的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter GitHub颜色获取插件github_colour的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
github_colour
是一个 Flutter 插件,用于获取 GitHub 上编程语言的官方颜色。这个插件可以帮助你在应用中动态地显示与编程语言相关的颜色,例如在显示 GitHub 仓库的编程语言标签时。
安装插件
首先,你需要在 pubspec.yaml
文件中添加 github_colour
插件的依赖:
dependencies:
flutter:
sdk: flutter
github_colour: ^1.0.0 # 请检查最新版本
然后运行 flutter pub get
来安装插件。
使用插件
安装完成后,你可以通过以下步骤来使用 github_colour
插件:
-
导入插件:
import 'package:github_colour/github_colour.dart';
-
获取颜色:
你可以使用
GitHubColour
类来获取特定编程语言的颜色。例如,获取 JavaScript 的颜色:Color jsColor = GitHubColour.getColor('JavaScript');
如果该语言的颜色不存在,
getColor
方法将返回一个默认颜色(通常是黑色)。 -
在 UI 中使用颜色:
你可以将获取到的颜色直接应用到 Flutter 的 UI 组件中,例如
Container
的背景颜色:Container( color: GitHubColour.getColor('Dart'), child: Text('Dart', style: TextStyle(color: Colors.white)), );
示例代码
以下是一个完整的示例,展示如何在 Flutter 应用中使用 github_colour
插件:
import 'package:flutter/material.dart';
import 'package:github_colour/github_colour.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('GitHub Colour Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
LanguageBox('Dart'),
LanguageBox('JavaScript'),
LanguageBox('Python'),
LanguageBox('Ruby'),
],
),
),
),
);
}
}
class LanguageBox extends StatelessWidget {
final String language;
LanguageBox(this.language);
[@override](/user/override)
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.all(10),
padding: EdgeInsets.all(20),
color: GitHubColour.getColor(language),
child: Text(
language,
style: TextStyle(color: Colors.white, fontSize: 20),
),
);
}
}