flutter_shaders_ui 1.3.0
flutter_shaders_ui: ^1.3.0 copied to clipboard
Ready-to-use Flutter widgets powered by GLSL fragment shaders: skeleton loaders, frosted surfaces, gradient borders, glow, aurora, fire and more.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.3.0 - 2026-10-15 #
Added #
ShaderSkeletonandSkeletonBone. Skeleton loading placeholders: a shimmer sweep drawn only where the placeholder paints, theme-aware colours, a cross-fade to the real content, pointer blocking and a "Loading" semantics label while loading. Without aplaceholder, the child itself is used as the skeleton shape.FrostedSurface. Frosted glass for cards, app bars, bottom sheets and dialogs: realBackdropFilterblur, theme-aware tint and hairline border, plus a fine frost grain from the glass shader that is static by default (animateFrostmakes it drift). Works on Skia and Impeller.AnimatedGradientBorder. Rotating 1 to 4 colour gradient ring with an optional soft glow, for selected cards, focused fields, premium or AI actions. Togglingenabledkeeps the layout stable.ShaderEffectWidget.maskToChild. Paints the shader only where the child has pixels (ShaderMaskwithBlendMode.srcATop).- New
skeleton.fragandgradient_border.fragshaders. - Example app: Skeleton, Frosted and Gradient Border playgrounds, and a
--dart-define=TOUR=truemode that cycles through every playground. - README: one demo GIF per widget, recorded from the example app; pub.dev screenshots for the new widgets.
Changed #
timeScale: 0no longer repaints the same frame on every vsync: the ticker is muted, so the frame is drawn once. Output is identical to before (uTimestays0, and switching back resumes the real-time clock exactly as it did).
Fixed #
- A failed shader load is no longer cached forever.
ShaderCache.loadkept the failed future as "pending", so every later call for that asset got the same error back and could never retry. The pending entry is now removed whether the load succeeds or fails. - A load that finishes after
assetPathchanged is discarded.ShaderEffectWidgetcould apply a superseded load on top of the current one, rendering the previous shader and leaking theFragmentShaderit replaced. Load failures are also now reported against the asset that was actually requested.
1.2.0 - 2026-08-24 #
Added #
- Frame-rate cap.
ShaderPerformanceSettings.maxFramesPerSecond, applied to a subtree through theShaderPerformanceinherited widget or per widget throughShaderEffectWidget.maxFramesPerSecond. Capping only skips repaints; the animation clock still advances in real time, so lowering the frame rate does not slow the motion down. - Reduced-motion support. Shader animation now freezes when the platform
asks for reduced motion (
MediaQuery.disableAnimationsOf). The effect still renders as a still image; only its clock stops. Opt out per widget withrespectReducedMotion: false.
Fixed #
- A
FragmentShaderwas allocated on every frame and never disposed.ShaderEffectWidgetnow creates one shader per widget, rewrites its uniforms between draws, and disposes it indispose(). This removes a per-frame native allocation from every effect in the package. - A failing shader no longer takes the subtree down. A missing or
uncompilable asset degrades to rendering the child and is reported through
FlutterError.reportError, instead of throwing out ofinitState. shouldRepaintno longer returnstrueunconditionally; repaints are driven by the time notifier, as they were meant to be.- Changing
assetPathnow reloads the shader instead of keeping the old one.
Changed #
flutter_lintsraised to^6.0.0; the package analyzes clean under the stricter rule set.
1.1.2 - 2026-07-10 #
Changed #
- Set the pubspec
documentation:field so the pub.dev "Documentation" link points to the hosted docs at codigee.com/open-source/flutter-shaders-ui.
1.1.1 - 2026-07-10 #
Added #
- Links to the hosted documentation at
codigee.com/open-source/flutter-shaders-ui
(overview, effects reference and custom-shaders guide) in the README. The
local
doc/markdown files remain as the source.
1.1.0 - 2026-07-10 #
Added #
ShaderEffectWidget.timeScale— multiplies the elapsed time driving theuTimeuniform, so you can slow, freeze (0.0) or reverse (negative) the global animation clock independently of the per-widgetspeeduniforms.- Widget contract test suite covering default values, custom parameters and named constructors for every public widget (previously the package shipped with no tests).
1.0.4 - 2026-06-09 #
Fixed #
- Completed
.pubignoreso it also excludes build/tooling artifacts (build/,.dart_tool/, …). A.pubignoremakes pub ignore.gitignoreentirely, so 1.0.3 accidentally shipped a 43 MB build cache; the archive is now ~73 KB.
1.0.3 - 2026-06-09 #
Changed #
- Excluded the demo GIFs (
doc/media/) from the published package via.pubignore. They are still shown in the README through raw GitHub URLs.
1.0.2 - 2026-06-09 #
Changed #
- Split the demo previews into five shorter, lighter real-time GIFs grouped into "Effects & live controls" (3 clips) and "Example app" (2 clips), each well under the size of the previous single long recording.
1.0.1 - 2026-06-09 #
Changed #
- Replaced the demo preview GIFs with real-time (non-accelerated) recordings at full duration, served under new filenames to bust CDN/proxy caches.
1.0.0 - 2026-06-09 #
Added #
- Demo section in the README with two side-by-side preview GIFs
(
doc/media/demo_effects.gif,doc/media/demo_app.gif) showing the effects with live controls and the example gallery app.
Changed #
- Promoted the package to its first stable release. The public API
(10 shader widgets +
ShaderEffectWidget,ShaderCache,ShaderPainter) is now considered stable under Semantic Versioning.
0.1.2 - 2026-06-07 #
Changed #
- Expanded the library-level documentation with a catalogue of all available shader widgets for easier discovery on the package page.
0.1.1 - 2026-05-13 #
Changed #
- Replaced the deprecated
library flutter_shaders_ui;directive with the modern unnamedlibrary;declaration in the barrel file.
0.1.0 #
Added #
- 10 GPU-accelerated shader effect widgets:
WaveBackground— animated flowing wave gradientAuroraEffect— northern lights curtain bandsFireEffect— rising flames with ember sparksWaterEffect— underwater caustics with foamGlassEffect— frosted glass / glassmorphism overlayShimmerEffect— sweeping shine highlightSnowEffect— falling parallax snowflakesPulseEffect— breathing radial glow ringsRippleEffect— tap-triggered concentric wavesGlowOrb— positionable glowing sphere (static, bouncing, draggable)
- Core infrastructure:
ShaderEffectWidget— base widget with ticker animation and uniform managementShaderCache— global cache for compiledFragmentPrograminstancesShaderPainter— reusableCustomPainterfor shader rendering
- 10 GLSL fragment shaders (aurora, fire, glass, glow_orb, pulse, ripple, shimmer, snow, water, wave)
- Example app with individual playgrounds and full showcase
- Zero external dependencies (Flutter SDK only)
