v0.5 · Material controls + hot reload — July 2026

Flutter's UI model, written in C#

Plumix brings Flutter's Widget → Element → RenderObject architecture to .NET. Port Flutter controls to C# with minimal conceptual translation.

terminal
dotnet add package Plumix
CI statusNuGet
Familiar by design

If you know Flutter, you already know Plumix.

Compose UIs from immutable widgets. The framework manages an element tree and a render tree under the hood — exactly the way Flutter does. Same lifecycle, same layout protocol, same paint phase. Just C#.

  • Immutable widgets, mutable elements, render objects do the work
  • BuildContext, State<T>, InheritedWidget — they all behave as expected
  • Layout protocol: parent passes constraints, child returns a size
  • Hot reload preserves State while you edit — dotnet watch, no restart
MyApp.cs
public sealed class MyApp : StatelessWidget
{
    public override Widget Build(BuildContext context)
    {
        return new Container(
            color: Colors.White,
            padding: new Thickness(24),
            child: new Column(
                children:
                [
                    new Text("Hello, Plumix"),
                    new SizedBox(height: 12),
                    new Text("Render tree is driven by Flutter-like widgets.")
                ]
            )
        );
    }
}

Built for parity

Four principles that keep Plumix faithful to Flutter — and predictable for C# developers.

Widget · Element · RenderObject

The same three-tree architecture as Flutter — not a thin wrapper around an existing UI toolkit.

Port Dart to C# directly

Translate Flutter widgets line-by-line. Familiar names, familiar lifecycle, familiar layout protocol.

Avalonia as infrastructure

Avalonia handles the window, input, and drawing surface. All layout and paint logic lives in Plumix.

Parity by default

When behavior diverges from Flutter, it is explicitly documented — never silently skipped.

Philosophy

Why Plumix exists

Plumix is not "Flutter inspired." It is a deliberate translation of Flutter's architecture into the .NET runtime.

01

Flutter-faithful architecture

Widget, Element, RenderObject — the same mental model as Flutter, not a thin wrapper around another toolkit.

02

Dart → C# without friction

Porting a Flutter control should feel like translation, not rewriting. APIs and lifecycle mirror Flutter intentionally.

03

Avalonia as infrastructure, not UI

Avalonia provides the host, platform lifecycle, and rendering surface. All layout and paint behavior is framework-owned.

04

Parity by default

When behavior diverges from Flutter, it is explicitly documented in the changelog and reference — not silently skipped.

Three packages, one ecosystem

Install only what you need. Material and Cupertino sit on top of Plumix core.

Roadmap

Current status

Five milestones tracking the path to a fully Flutter-parity .NET UI framework.

  1. M1Core Parity Hardening Shipped
  2. M2Input / Focus / Accessibility Shipped
  3. M3Port-first Widget Set Expansion Shipped
  4. M4Material Library Rewrite In progress
  5. M5Cross-host Sample Parity & Stability Planned
FAQ

Common questions

How is Plumix different from Avalonia?

Plumix is not a wrapper over Avalonia's control set. Avalonia supplies the window, platform lifecycle, input plumbing and drawing surface; every layout, paint and hit-test decision above that surface is made by Plumix's own render tree. You write Flutter-style widgets, not XAML.

Do I need to know Flutter to use Plumix?

No. Plumix is a normal C# UI framework you can learn on its own. But if you already know Flutter, the API surface, lifecycle and layout protocol are deliberately the same, so most of your existing knowledge transfers directly.

Can I port an existing Flutter widget to C#?

That is the primary design goal. Widget, Element and RenderObject exist with the same responsibilities and mostly the same names, so porting a Dart widget is closer to translation than to a rewrite. Where behaviour intentionally diverges from Flutter, it is documented in the changelog.

Which platforms does Plumix support?

Windows, macOS and Linux desktop, via the Avalonia host. The framework targets net8.0 and later.

Is Plumix production ready?

Not yet. Plumix is at v0.5 and follows a public milestone roadmap: core parity, input and accessibility, and the port-first widget set have shipped, while the Material library rewrite and cross-host sample parity are still in progress.

Does Plumix support hot reload?

Yes. Running under dotnet watch preserves State across edits, so you keep your counter values and scroll positions while the widget tree rebuilds — the same workflow Flutter developers expect.

Start porting Flutter widgets today

Read the architecture guide, browse the controls catalog, or jump straight into the source.