NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev
Immersive fluid animated backgrounds from images. Weighted k-means color extraction, LRU cache, dark/light/auto fallback, and smooth orbital motion.
Last release 7 months ago
03 Mar 2026
Ships fairly regularly
a new release about every 3 weeks
Most releases are documented
notes for 12 of 14 stable releases
Nothing withdrawn
no release was ever pulled
11 months old
14 releases · first in 2025
One column per month.
FluidFallbackMode enum (dark / light / auto) on FluidBackground — defaults to auto (matches theme brightness)
FluidFallbackMode enum (dark / light / auto) on FluidBackground — defaults to auto (matches theme brightness)FluidPalette.fallbackLight() — pastel light-mode fallback paletteFluidPaletteExtractor.extractColors(ImageProvider, {int count}) — new primary extraction API; returns ranked List<Color>FluidPaletteExtractor.warmup(List<ImageProvider>) — parallel cache pre-warmFluidPaletteCache — LRU singleton (30 entries, SHA-1 keyed); auto-populated on every extractionFluidBackground.animate default → false (battery-friendly; opt-in with animate: true)FluidBackground: rapid image provider changes no longer corrupt the displayed paletteFluidPaletteExtractor.extract(ui.Image) — use extractColors(ImageProvider) instead; will be removed in v4.0.0All v2.x APIs are deprecated and will be removed in v4.0.0.
This release completely redesigns the package around a single, powerful concept: FluidBackground. The focus is now exclusively on creating immersive, fluid animated backgrounds inspired by modern music apps.
All v2.x APIs are deprecated and will be removed in v4.0.0.
The package now provides two simple APIs:
Old Material Design theming APIs (AdaptivePalette, PaletteScope, ThemeColors, etc.) are deprecated in favor of this simpler, more focused approach.
FluidBackground Widget: One-line immersive animated backgrounds
FluidPaletteExtractor API: Advanced color extraction
FluidPalette Model: Simple 5-color palette
baseDark (guaranteed dark)accent1-4 (corner glows)lerp() for animationscopyWith() for immutabilityAll of these will be removed in v4.0.0:
AdaptivePalette.fromImage() → Use FluidPaletteExtractor.extract()PaletteScope → Use FluidBackground widgetThemeColors → Use FluidPaletteAdaptiveImageOverlay → Use FluidBackgroundAdaptiveGlowImageFrame → Use FluidBackgroundAdaptiveGradientScaffold → Use FluidBackgroundExtractionConfig → No longer neededExtractionQuality → No longer neededBefore (v2.x):
final colors = await AdaptivePalette.fromImage(NetworkImage(url));
MaterialApp(theme: colors.toThemeData());
After (v3.0):
FluidBackground(
imageProvider: NetworkImage(url),
child: YourContent(),
)
Or for manual extraction:
final image = await loadImageFromProvider(NetworkImage(url));
final palette = await FluidPaletteExtractor.extract(image);
The v2.x APIs were complex and trying to solve too many problems:
v3.0 simplifies everything:
All v2.x code continues to work with deprecation warnings. You have until v4.0 to migrate.
None - all v2.x APIs still work (deprecated but functional).
README image now uses GitHub raw URL for proper display on pub.dev
Package preview image (adaptive_palette.png) showing the library in action
adaptive_palette.png) showing the library in actionCritical Fix : Added missing dart:ui import in theme.dart for Brightness enum
dart:ui import in theme.dart for Brightness enumMajor Release - Architectural Rewrite
This release restructures the package with improved modularity, performance, and developer experience. The core API remains backward compatible - most v1.x code continues to work without changes.
ExtractionQuality.fast, balanced, and high for different use casesExtractionStats with duration, cache hits, and image type detectiononDebug and onError for real-time insightsTypical extraction times (MacBook Pro M1, Release mode):
| Quality | Time | Use Case |
|---|---|---|
| Fast | 30-50ms | Lists, thumbnails |
| Balanced | 60-90ms | General use (default) |
| High | 90-140ms | Hero images |
| Cache Hit | <1ms | All cached images |
This release restructures the package with improved modularity, performance, and developer experience. The core API remains backward compatible - most v1.x code continues to work without changes.
ExtractionQuality.fast, balanced, and high for different use casesExtractionStats with duration, cache hits, and image type detectiononDebug and onError for real-time insightsWidget Parameters: Now use ExtractionConfig instead of individual parameters
// Before
AdaptiveImageOverlay.network(url, resize: 96, quantizeColors: 24)
// After
AdaptiveImageOverlay.network(url, config: ExtractionConfig.fromQuality(ExtractionQuality.high))
ThemeColors.toThemeData(): Changed from static to instance method
// Before
ThemeColors.toThemeData(colors, brightness: Brightness.dark)
// After
colors.toThemeData(brightness: Brightness.dark)
Internal Imports: Don't import from lib/src/ - use public API only
The following v1.x code works without changes:
AdaptivePalette.fromImage() with named parametersPaletteScope widget and controllerThemeColors properties and copyWith()See MIGRATING.md for detailed upgrade instructions.
Typical extraction times (MacBook Pro M1, Release mode):
| Quality | Time | Use Case |
|---|---|---|
| Fast | 30-50ms | Lists, thumbnails |
| Balanced | 60-90ms | General use (default) |
| High | 90-140ms | Hero images |
| Cache Hit | <1ms | All cached images |
Version 1.0.7: Adaptive color detection
Version 1.0.7: Adaptive color detection
quantizeColors to 32 and resize to 128Critical compatibility fix: replaced toARGB32() with .value for Flutter 3.0+
toARGB32() with .value for Flutter 3.0+Universal compatibility using bit operations for color component extraction
Lowered minimum SDK to >=3.0.0 <4.0.0 (Flutter 3.0+ support)
>=3.0.0 <4.0.0 (Flutter 3.0+ support)Upgraded flutter_lints from ^5.0.0 to ^6.0.0 for latest linting rules
flutter_lints from ^5.0.0 to ^6.0.0 for latest linting rulespubspec.yaml by removing unnecessary commentsNothing published for this version
Nothing published for this version
Initial release of Adaptive Palette
Your coding agent can read these notes before it upgrades. Set up the MCP server →