0 purchases
color extract
color_extract #
Color Extract is a Flutter package that allows you to extract and calculate colors from your app's widgets.
You can use it to change the color of a widget depending/based on the color of the background (the other widget behind).
Preview #
(Video player may not show on pub.dev, check github.com)
https://user-images.githubusercontent.com/44414626/220677525-30942250-ceb2-4e85-a8af-1cb2317e4ed5.mp4
Demo #
In this demo see how you can make your widget change colors like a chameleon 🦎.
Installation #
Add the following to your pubspec.yaml:
dependencies:
color_extract: ^1.0.1
copied to clipboard
Then run flutter pub get.
Usage #
ColorExtractor #
The ColorExtractor it's the widget we want to extract the average color from. It serves as a wrapper for RepaintBoundary, so you can utilize RepaintBoundary as an alternative.
ColorExtractor(
boundaryKey: GlobalKey(),
child: Container(
width: 200,
height: 200,
color: Colors.red,
),
);
copied to clipboard
ColorAverager #
The ColorAverager widget computes the average color of a specific portion of either ColorExtractor or RepaintBoundary. Its application is useful in determining the dominant color of a certain area, such as the background behind a logo, image.
ColorAverager(
boundaryKey: GlobalKey(),
child: SizedBox(
width: 50,
height: 50,
),
onChanged: (color) {
// Handle the new average color.
},
);
copied to clipboard
You can also use the ColorAveragerController to calculate the average color programmatically.
final controller = ColorAveragerController();
// ... render the widget ...
final avgColor = await controller.calculateAvgColor();
copied to clipboard
Example #
import 'package:flutter/material.dart';
import 'package:color_extract/color_extract.dart';
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: [
ColorExtractor(
boundaryKey: boundaryKey,
child: Container(
width: 200,
height: 200,
color: Colors.blue,
),
),
ColorAverager(
// boundaryKey should be the same one in the above ColorExtractor boundaryKey
boundaryKey: boundaryKey,
// You can use the controller (ColorAveragerController) too.
// controller: controller,
child: const SizedBox(width: 50, height: 50),
onChanged: (color) {
// Do something with the average color.
// color should be = Colors.blue
},
)
],
)
);
}
}
copied to clipboard
Author #
itisnajim, [email protected]
License #
color_extract is available under the MIT license. See the LICENSE file for more info.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.