Skip to content

Conversation

@FeodorFitsner
Copy link
Contributor

@FeodorFitsner FeodorFitsner commented Jan 17, 2026

  • The major motivator for the upgrade is that APK with rive 0.13.x is not allowed in Google Play (because of 16kb page size).
  • Rive 0.14.x is no longer supported on Linux ARM64.

Summary by Sourcery

Migrate the Rive integration to the new rive 0.14.0/native API while aligning client and plugin wiring, and finalize several Dart/Flutter extension packages for their 0.80.x releases.

New Features:

  • Introduce a custom multi‑animation Rive painter with pointer interaction support for animations and state machines.
  • Enable explicit initialization of the Rive native runtime via the flet_rive extension lifecycle.

Enhancements:

  • Refactor the Rive Flutter control to load rive files via rive.File APIs with FutureBuilder, supporting local and network sources with headers, artboard sizing, clipping, and configurable fit/alignment.
  • Update platform plugin registrations and dependencies to use the rive_native plugin instead of rive_common across Linux, Windows, and macOS.
  • Allow disabling the Rive client package and extension for Linux ARM64 builds via conditional pubspec and main.dart stripping in CI.
  • Relax Android minSdk configuration to derive from the Flutter-managed minSdkVersion.
  • Bump the flet_rive Flutter package to depend on rive ^0.14.0.

Documentation:

  • Promote multiple extension packages (ads, audio, audio-recorder, charts, datatable2, flashlight, geolocator, lottie, map, permission-handler, video, webview, and rive) from unreleased 0.2.0 notes to concrete 0.80.0 (and 0.80.3 for rive) and 0.1.0 entries, cleaning up outdated comparison links.

Migrates plugin references from rive_common to rive_native across all platforms and updates the Rive package to version 0.14.x. Refactors flet-rive extension and control implementation to use new Rive APIs, ensuring compatibility with the latest plugin changes.
Changelog files for multiple Flet Python packages updated to reflect the 0.80.0 release. Unreleased sections replaced with 0.80.0, and redundant version links and dates removed for consistency.
Added a step to run 'dart run rive_native:setup' with verbose and clean options for the macOS platform before building the Flutter macOS app. This ensures rive_native is properly configured during CI builds.
Appends the -v flag to the Flutter build command for Linux in the CI workflow to enable verbose output, aiding in debugging build issues.
Introduces conditional inclusion of the flet_rive package and related imports/extensions for ARM64 builds in CI, using marker comments for easy removal. Adds a Rive Native Setup shell script build phase to the macOS Xcode project to automate platform-specific setup. Updates pubspec.yaml and main.dart to wrap flet_rive references with marker comments for CI script processing.
The '-v' verbose flag was removed from the Flutter build command in the CI workflow for Linux. Also updated flet-rive changelog for version 0.80.3, noting migration to rive 0.14.0.
Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We've reviewed this pull request using the Sourcery rules engine

@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Jan 17, 2026

Deploying flet-examples with  Cloudflare Pages  Cloudflare Pages

Latest commit: 3ce0922
Status: ✅  Deploy successful!
Preview URL: https://b1792b21.flet-examples.pages.dev
Branch Preview URL: https://rive-0-14-0.flet-examples.pages.dev

View logs

@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Jan 17, 2026

Deploying flet-docs with  Cloudflare Pages  Cloudflare Pages

Latest commit: 3ce0922
Status: ✅  Deploy successful!
Preview URL: https://1e853707.flet-docs.pages.dev
Branch Preview URL: https://rive-0-14-0.flet-docs.pages.dev

View logs

Adds logic to the post_install hook to set the PROJECT_ROOT environment variable and change directory for rive_native shell script build phases. This ensures the build script runs in the correct project root directory.
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR upgrades the Rive library from version 0.13.x to 0.14.0, primarily motivated by Google Play's requirement to support 16kb page sizes. As a consequence, Rive 0.14.x is no longer supported on Linux ARM64, requiring conditional compilation in the build system.

Changes:

  • Migrated from rive 0.13.20 to rive ^0.14.0 with complete refactoring of the Flutter control to use the new native API
  • Updated platform plugin registrations from rive_common to rive_native across Windows, macOS, and Linux
  • Implemented conditional compilation to exclude Rive from Linux ARM64 builds via CI workflow and build markers
  • Cleaned up CHANGELOGs across multiple extension packages, promoting unreleased 0.2.0 entries to versioned 0.80.0 releases

Reviewed changes

Copilot reviewed 27 out of 28 changed files in this pull request and generated no comments.

Show a summary per file
File Description
sdk/python/packages/flet-rive/src/flutter/flet_rive/pubspec.yaml Updated Rive dependency from 0.13.20 to ^0.14.0
sdk/python/packages/flet-rive/src/flutter/flet_rive/lib/src/rive.dart Complete refactoring to use rive.File API with FutureBuilder, custom painter with pointer interaction, and proper resource lifecycle management
sdk/python/packages/flet-rive/src/flutter/flet_rive/lib/src/extension.dart Added RiveNative.init() call in ensureInitialized()
sdk/python/packages/flet-rive/CHANGELOG.md Added 0.80.3 entry for Rive 0.14.0 migration
client/pubspec.yaml Added conditional compilation markers around flet_rive dependency
client/lib/main.dart Added conditional compilation markers around flet_rive import and extension
client/pubspec.lock Updated rive (0.13.20 → 0.14.1) and rive_common → rive_native (0.4.15 → 0.1.1)
client/windows/flutter/generated_plugins.cmake Updated from rive_common to rive_native
client/windows/flutter/generated_plugin_registrant.cc Updated plugin registration from RivePlugin to RiveNativePlugin
client/macos/Flutter/GeneratedPluginRegistrant.swift Updated from rive_common to rive_native
client/macos/Runner.xcodeproj/project.pbxproj Added Rive Native Setup build phase
client/macos/Podfile Added post_install hook to patch rive_native setup script with PROJECT_ROOT
client/linux/flutter/generated_plugins.cmake Updated from rive_common to rive_native
client/linux/flutter/generated_plugin_registrant.cc Updated plugin registration from RivePlugin to RiveNativePlugin
client/android/app/build.gradle.kts Changed minSdk from hardcoded 23 to flutter.minSdkVersion
.github/workflows/ci.yml Added Linux ARM64 build logic to strip Rive client package and extension references
sdk/python/packages/flet-webview/CHANGELOG.md Cleaned up version entries, removed future dates and comparison links
sdk/python/packages/flet-video/CHANGELOG.md Cleaned up version entries, removed future dates and comparison links
sdk/python/packages/flet-permission-handler/CHANGELOG.md Cleaned up version entries, removed future dates and comparison links
sdk/python/packages/flet-map/CHANGELOG.md Cleaned up version entries
sdk/python/packages/flet-lottie/CHANGELOG.md Cleaned up version entries, removed future dates and comparison links
sdk/python/packages/flet-geolocator/CHANGELOG.md Cleaned up version entries
sdk/python/packages/flet-flashlight/CHANGELOG.md Cleaned up version entries, removed future dates and comparison links
sdk/python/packages/flet-datatable2/CHANGELOG.md Cleaned up version entries, removed future date (2025-03-16) and comparison links
sdk/python/packages/flet-charts/CHANGELOG.md Cleaned up version entries, removed comparison links
sdk/python/packages/flet-audio/CHANGELOG.md Cleaned up version entries, removed future dates and comparison links
sdk/python/packages/flet-audio-recorder/CHANGELOG.md Cleaned up version entries, removed future dates and comparison links
sdk/python/packages/flet-ads/CHANGELOG.md Cleaned up version entries, removed future dates and comparison links

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

fi
if [[ "$ARCH" == "arm64" ]]; then
# flet_rive is excluded for Linux ARM64 builds
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

mention the reason or point to gh issue/pr?

Added a comment to clarify that rive_native's setup script should run from the project root to ensure pubspec.yaml is found in CI environments.
Clarified that Linux support for Rive animations is limited to x64 architecture in the documentation table.
Introduces a step to run 'dart run rive_native:setup' with verbose and clean options for the macOS platform before executing integration tests. This ensures the environment is properly configured for the tests.
The rive_native setup command is now run in a separate step before integration tests in the macOS workflow. This improves clarity and ensures the environment is prepared before tests execute.
Several test suites in the matrix have been commented out, reducing the number of integration tests run on macOS. The pytest log level was changed from INFO to DEBUG for more detailed output during test execution.
Runs 'flutter doctor' before setting up rive_native in the macOS integration tests workflow to ensure Flutter environment is properly configured.
Changed the GitHub Actions workflow to run macOS integration tests on macos-15 instead of macos-14 to ensure compatibility with the latest macOS environment.
The rive_native setup step in the CI workflow has been commented out, and the pytest log level for integration tests has been changed from DEBUG to INFO. This may help reduce log verbosity and address issues related to rive_native setup during macOS integration tests.
Changed the build_macos job to run on macos-15 instead of macos-latest in ci.yml. Enabled additional integration test suites in macos-integration-tests.yml by uncommenting them.
@Muddassir-Farooq-official

Can we replace rive animation or Lottie files in flet bootscreen instead of flutter loading ring

…l on Linux (#6027)

* Add flet-desktop-light package and update platform dependencies

Introduces the flet-desktop-light Python package for Linux, updates dependency logic in flet/pyproject.toml to use platform-specific desktop packages, and adjusts pip utility to install the correct desktop package based on OS. Removes obsolete scripts and related workflow steps for patching package names and wheel dependencies.

* Add flet-desktop-light to dependencies

Included 'flet-desktop-light' in the dependencies list and updated the patch script to handle this new dependency. This ensures that version patching and dependency management now cover 'flet-desktop-light' alongside other Flet packages.
Replaced space with non-breaking space in the Linux support cell to improve table formatting and readability.
@FeodorFitsner FeodorFitsner merged commit 04d0203 into main Jan 18, 2026
28 of 43 checks passed
@FeodorFitsner FeodorFitsner deleted the rive-0-14-0 branch January 18, 2026 00:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants