将GitHub的语言颜色应用到Flutter的Color对象中。

Pub Version GitHub Sponsors

从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")
        )
    );
}

或者在StateinitState中初始化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

截图

C++ Dart

Go Java

Python

许可证

BSD-3

GitHub

查看 Github