Flutter image carousel component which can be used to create multiple rotating images within a single component using either network or local images. This carousel can also add text overlay along with automatically determined text colour based on the image brightness.
To get started, you will need to add the following in the pubspec.yaml
of your flutter project
dependencies:
flutter:
sdk:
title_carousel: any
Import the package like so
import 'package:title_carousel/title_carousel.dart';
To add a TitleCarousel
to your project, you can use the widget like normal in your widget tree with the images supplied using the CarouselImage
class.
TitleCarousel(
images: [
CarouselImage(image: "https://source.unsplash.com/b027q9eF3Yo.jpeg"),
CarouselImage(image: "https://source.unsplash.com/6L-b2EmQ4gk.jpeg"),
CarouselImage(image: "https://source.unsplash.com/6L-b2EmQ4gk.jpeg")
]
)
This will create a simple image carousel with all default values - switching between the 3 images cyclically.
To add text to your image - you need to pass the TextProperties
class to the corresponding overlay within your CarouselImage
.
CarouselImage(
image: "https://source.unsplash.com/b027q9eF3Yo.jpeg",
titleOverlay: TextProperties(title: "Swan\n", computeLuminance: true),
childrenTextOverlay: [
TextProperties("An elegant swan swimming in the lake", computeLuminance: true)
]
)
For each TextProperties
object you can use luminance to influence the text colour used by setting computeLuminance
to true. You can also customise the colours used by changing the brightColor
and darkColor
attributes.
This class also contains the same attributes as a Text
object - so you can customise the text however you like.
TitleCarousel
takes the dotDecoration
argument which allows for you to style the indicator however you like - you can even change the selectedColor
to any color for when the current dot is active!
To get the currently displayed image of a TitleCarousel
you can assign a key to the widget and retrieve the current state from which you can get the current on display CarouselImage
GlobalKey<TitleCarouselState> carouselKey = GlobalKey();
...
TitleCarousel(key: carouselKey)
...
String getCurrentImage() {
CarouselImage image = carouselKey.currentState.getCurrentImage();
return image.image;
}
You can view an example under the examples/
directory, which is a flutter app showing the functionality of both non-luminous calculation and luminous calculation for text colour. The non-luminous example shows a set of pre-determined networked images whilst the luminous example will fetch random images from unsplash. To try the luminous example, you will need to add your unsplash accessToken
to the variable inside of examples/lib/luminance.dart
.
You can see more here.
Something to note, is that because the colours you can pass is binary as it is based off luminosity - it may not always be as effective as using something like K-means to determine the most dominant colour but this will give you the best colour based on the brightness at that location.