DEV Community

shamnad-sherief
shamnad-sherief

Posted on

Best version manager for Flutter, Meet Puro FVM

If you’ve ever worked on multiple Flutter projects, you already know the pain of juggling different Flutter versions. Maybe one project needs Flutter stable, another depends on beta, and yet another has pinned itself to a specific version like 3.13.6.

Traditionally, you’d spend hours re-installing, re-configuring, or tweaking your IDE settings just to switch versions. That’s where Puro comes in — a tool that makes Flutter version management effortless.

In this post, let’s break down Puro in the simplest way possible. By the end, you’ll know how to:
✅ Install and use Puro
✅ Create isolated Flutter environments per project
✅ Run Flutter commands without confusion
✅ Set up a permanent fix so flutter always points to Puro


What is Puro?

Puro is a Flutter version manager designed to:

  • Install and switch Flutter versions lightning fast ⚡
  • Share cached files across projects to save space 💾
  • Work globally (for your whole system) or per-project (just for one app)
  • Automatically configure your IDEs (VSCode, Android Studio, IntelliJ) so you don’t have to touch run configurations

In short: Puro saves time, avoids headaches, and makes your workflow consistent.


Installing Puro

Installing Puro is straightforward. For Linux/macOS, run:

curl -o- https://puro.dev/install.sh | PURO_VERSION="1.4.11" bash
Enter fullscreen mode Exit fullscreen mode

For Windows (PowerShell, not as admin):

Invoke-WebRequest -Uri "https://puro.dev/builds/1.4.11/windows-x64/puro.exe" -OutFile "$env:temp\puro.exe"; &"$env:temp\puro.exe" install-puro --promote
Enter fullscreen mode Exit fullscreen mode

After installation, you’re ready to go.


Quick Start: Your First Environment

Puro manages environments — basically, little containers for Flutter versions.

Examples:

# Install the latest stable Flutter
puro flutter doctor

# Create a named environment with stable
puro create foo stable

# Create one with a specific version
puro create bar 3.13.6

# Switch the global Flutter to use "bar"
puro use -g bar

# Switch the current project to use "foo"
puro use foo
Enter fullscreen mode Exit fullscreen mode

👉 Each project can have its own Flutter version. No more conflicts.


Running Flutter Commands

By default, you’ll run Flutter like this:

puro flutter pub get
Enter fullscreen mode Exit fullscreen mode

But typing puro flutter every time gets annoying. Some people even alias it as pflutter.

Luckily, there’s a permanent fix to make flutter always resolve to puro flutter.


Permanent Fix: Shim Executable

Let’s create a fake flutter command that forwards everything to puro flutter:

mkdir -p ~/.local/bin
cat << 'EOF' > ~/.local/bin/flutter
#!/bin/bash
exec puro flutter "$@"
EOF
chmod +x ~/.local/bin/flutter
Enter fullscreen mode Exit fullscreen mode

Then, add it to your PATH:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
Enter fullscreen mode Exit fullscreen mode

✅ Now, whenever you run flutter, it’s automatically powered by Puro.
That means flutter pub get is actually puro flutter pub get, and your workflow feels natural again.

Final Thoughts

Puro is a must-have tool for any Flutter developer who works across multiple projects or wants to keep things tidy.

  • New to Flutter? Start with Puro and you’ll never touch version headaches.
  • Experienced dev? Save time, bandwidth, and sanity.

So go ahead — install Puro, set up a shim, and enjoy typing just flutter again. 🎉

👉 Learn more at puro.dev.


Top comments (0)