OkColor
A Flutter package for working with colors in the Oklab color space, providing utilities for color manipulation, conversion, and analysis.
Features
- Convert between RGB, HSV, HSL, and Oklab color spaces
- Perform color manipulations like lightening, darkening, and saturation adjustments
- Generate color palettes and gradients
- Gamut mapping and clipping functions
Getting started
Add okcolor to your pubspec.yaml file:
dependencies:
okcolor: ^1.0.0
Then run dart pub get or flutter pub get.
Usage
Here are some examples demonstrating how to use the OkColor package:
Converting between color spaces
import 'package:flutter/material.dart';
import 'package:okcolor/okcolor.dart';
void main() {
// Convert from Color to OkLab
Color color = Colors.blue;
OkLab oklab = OkLab.fromColor(color);
// Convert from OkLab back to Color
Color convertedColor = oklab.toColor();
// Convert from Color to OkHsv
OkHsv okhsv = OkHsv.fromColor(color);
}
Interpolating between colors
import 'package:flutter/material.dart';
import 'package:okcolor/okcolor.dart';
void main() {
Color startColor = Colors.red;
Color endColor = Colors.blue;
double fraction = 0.5;
// Interpolate using OkLab color space
Color interpolatedColor = interpolate(
startColor,
endColor,
fraction,
method: InterpolationMethod.oklab
);
// Interpolate using OkHSV color space
Color interpolatedColorHSV = interpolate(
startColor,
endColor,
fraction,
method: InterpolationMethod.okhsv
);
}
Acknowledgements
This package is a Dart/Flutter implementation of the Oklab color space, based on the work of Björn Ottosson. For more information about the Oklab color space and its properties, please visit https://bottosson.github.io/posts/oklab/.
Contributing
Contributions to improve the package are welcome. Please feel free to submit issues or pull requests on the GitHub repository.
Issues
If you encounter any problems or have suggestions for improvements, please file an issue on the GitHub issue tracker.
Support
For questions or discussions about using the package, you can open a discussion on the GitHub repository or reach out to the package maintainers.
We strive to respond to issues and pull requests in a timely manner, typically within a few days.