将GitHub的语言颜色应用到Flutter的Color对象中。
从ozh的github-colors仓库中获取最新的colors.json,并将其应用于Flutter的Color对象。
用法
你可以在runApp(Widget)之前初始化GitHubColour(如果想从离线获取数据,请在WidgetsFlutterBinding.ensureInitialized()之后调用)
// With offline last resort
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await GitHubColour.getInstance();
runApp(const YourApp());
}
// Without offline last resort
void main() async {
await GitHubColour.getInstance(offlineLastResort: false);
runApp(const YourApp());
}
然后在Widget内部使用getExistedInstance()
class YourAppWidget extends StatelessWidget {
@override
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(
backgroundColor: GitHubColour.getExistedInstance().find("Go")
)
);
}
或者在State的initState中初始化Future<GitHubColour>变量并包装在FutureBuilder中(不推荐直接在FutureBuilder中使用getInstance())
class _YourAnotherAppWidgetState extends State<YourAnotherAppWidget> {
late final Future<GitHubColour> _ghc;
@override
void initState() {
super.initState();
_ghc = GitHubColour.getInstance();
}
@override
Widget build(BuildContext context) => FutureBuilder<GitHubColour>(
future: _ghc,
builder: (context, snapshot) {
// Implement whatever you want
}
);
}
连接失败时缓存
此包支持缓存系统作为请求失败时的后备。它使用LZMA压缩数据,并将其存储为临时目录下的文件(适用于VM)或存储为shared_preference(适用于Web,即LocalStorage)。
如果没有可用缓存,默认情况下,GitHubColour.getInstance()将使用本地的colors.json作为最后的手段。然而,当color.json有新提交时,此包不会同步,因为它经过最小化处理,以确保包可以尽快下载。
美式英语开发者须知
它为主要使用“color”的开发者提供了别名类GitHubColor。
截图
许可证
BSD-3




