FVM streamlines Flutter version management. It allows per project SDK versions, ensuring consistent app builds and easier testing of new releases, thereby boosting the efficiency of your Flutter project tasks.
- Need for simultaneous use of multiple Flutter SDKs.
- SDK testing requires constant channel switching.
- Channel switches are slow and need repeated reinstalls.
- Difficulty managing the latest successful SDK version used in an app.
- Flutter's major updates demand total app migration.
- Inconsistencies occur in development environments within teams.
For more information, read FVM documentation.
FVM uses GitHub releases to trigger automated deployments across all platforms:
-
Ensure main branch is ready
- All changes merged and tested
- Version will be set automatically from release tag
-
Create GitHub Release
- Go to GitHub Releases
- Click "Create a new release"
- Choose tag:
v4.0.0-beta.2
(follows semver with 'v' prefix) - Write release notes in GitHub editor
- Click "Publish release"
-
Automated Deployment
release.yml
triggers automatically- Deploys to: pub.dev, GitHub binaries, Homebrew, Chocolatey, Docker
- Monitor progress in Actions tab
For hotfixes or emergency releases:
- Update version manually in
pubspec.yaml
- Use individual platform workflows via manual dispatch:
deploy_homebrew.yml
for Homebrew updatesdeploy_docker.yml
for Docker deployment- Individual platform deployments as needed
For complete emergency deployment, create a GitHub release as normal.
See Workflow Documentation for detailed information.
Checkout Flutter Sidekick. Read more about it here.
Please view our FAQ.
This project is licensed under the MIT License; see LICENSE file for details.
This directory contains a testing environment for validating the Flutter Version Manager (FVM) version format handling. The tests focus on ensuring that all valid version formats are correctly parsed and applied, while invalid formats are properly rejected.
The run_tests.sh
script automates the testing of various version formats with FVM. It:
- Creates a clean Flutter test environment
- Tests different version formats including:
- Channel versions (stable, beta, dev, master)
- Semantic versions (e.g., 2.10.0)
- Versions with 'v' prefix (e.g., v2.10.0)
- Versions with channel specification (e.g., 2.10.0@beta)
- Fork specifications (e.g., custom-fork/stable)
- Validates error handling for invalid formats
- Reports test results
To run the tests with standard output:
./run_tests.sh
For detailed debugging output:
./run_tests.sh --verbose
The script tests the following version formats:
Format | Example | Description |
---|---|---|
Channel | stable , beta |
Flutter release channels |
Semantic Version | 2.10.0 |
Specific Flutter version |
V-prefixed Version | v2.10.0 |
Version with 'v' prefix |
Version with Channel | 2.10.0@beta |
Specific version from a channel |
V-prefixed with Channel | v2.10.0@beta |
V-prefixed version from a channel |
Fork with Channel | custom-fork/stable |
Fork with specified channel |
The script also validates proper rejection of invalid formats:
- Invalid channel specification (
2.10.0@invalid
) - Custom build with channel (
custom_build@beta
) - Non-existent fork (
unknown-fork/stable
)
After running the tests, review the output to ensure all tests passed. If any failures occur, the script will provide details about what went wrong.
For a complete record of test outcomes, refer to the TEST_RESULTS.md
file which may be generated after running the tests.
- Dart SDK must be installed and available in PATH
- Flutter SDK must be installed and available in PATH
- The script should be run from the
test/fixtures/sample_app
directory
If some tests are skipped, it may be because:
- The required Flutter versions are not installed
- The
list
command in the FVM implementation has issues
In these cases, the script will continue with available tests and provide warnings about what was skipped.