flutter_shaders_ui 1.3.0 copy "flutter_shaders_ui: ^1.3.0" to clipboard
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 #

  • ShaderSkeleton and SkeletonBone. 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 a placeholder, the child itself is used as the skeleton shape.
  • FrostedSurface. Frosted glass for cards, app bars, bottom sheets and dialogs: real BackdropFilter blur, theme-aware tint and hairline border, plus a fine frost grain from the glass shader that is static by default (animateFrost makes 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. Toggling enabled keeps the layout stable.
  • ShaderEffectWidget.maskToChild. Paints the shader only where the child has pixels (ShaderMask with BlendMode.srcATop).
  • New skeleton.frag and gradient_border.frag shaders.
  • Example app: Skeleton, Frosted and Gradient Border playgrounds, and a --dart-define=TOUR=true mode 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: 0 no longer repaints the same frame on every vsync: the ticker is muted, so the frame is drawn once. Output is identical to before (uTime stays 0, and switching back resumes the real-time clock exactly as it did).

Fixed #

  • A failed shader load is no longer cached forever. ShaderCache.load kept 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 assetPath changed is discarded. ShaderEffectWidget could apply a superseded load on top of the current one, rendering the previous shader and leaking the FragmentShader it 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 the ShaderPerformance inherited widget or per widget through ShaderEffectWidget.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 with respectReducedMotion: false.

Fixed #

  • A FragmentShader was allocated on every frame and never disposed. ShaderEffectWidget now creates one shader per widget, rewrites its uniforms between draws, and disposes it in dispose(). 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 of initState.
  • shouldRepaint no longer returns true unconditionally; repaints are driven by the time notifier, as they were meant to be.
  • Changing assetPath now reloads the shader instead of keeping the old one.

Changed #

  • flutter_lints raised 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 #

1.1.0 - 2026-07-10 #

Added #

  • ShaderEffectWidget.timeScale — multiplies the elapsed time driving the uTime uniform, so you can slow, freeze (0.0) or reverse (negative) the global animation clock independently of the per-widget speed uniforms.
  • 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 .pubignore so it also excludes build/tooling artifacts (build/, .dart_tool/, …). A .pubignore makes pub ignore .gitignore entirely, 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 unnamed library; declaration in the barrel file.

0.1.0 #

Added #

  • 10 GPU-accelerated shader effect widgets:
    • WaveBackground — animated flowing wave gradient
    • AuroraEffect — northern lights curtain bands
    • FireEffect — rising flames with ember sparks
    • WaterEffect — underwater caustics with foam
    • GlassEffect — frosted glass / glassmorphism overlay
    • ShimmerEffect — sweeping shine highlight
    • SnowEffect — falling parallax snowflakes
    • PulseEffect — breathing radial glow rings
    • RippleEffect — tap-triggered concentric waves
    • GlowOrb — positionable glowing sphere (static, bouncing, draggable)
  • Core infrastructure:
    • ShaderEffectWidget — base widget with ticker animation and uniform management
    • ShaderCache — global cache for compiled FragmentProgram instances
    • ShaderPainter — reusable CustomPainter for 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)
51
likes
160
points
20.7k
downloads
screenshot

Documentation

Documentation
API reference

Publisher

verified publisherravenlab.tech

Weekly Downloads

Ready-to-use Flutter widgets powered by GLSL fragment shaders: skeleton loaders, frosted surfaces, gradient borders, glow, aurora, fire and more.

Repository (GitHub)
View/report issues

Topics

#shader #glsl #ui #widget #effects

License

MIT (license)

Dependencies

flutter

More

Packages that depend on flutter_shaders_ui