NativeShell (Experimental embedder for Flutter)

Sponsors

Features

  • Leverages existing Flutter desktop embedder on each platform
  • Unlike Flutter desktop embedders, NativeShell provides consistent platform agnostic API
  • Multi-window support
  • Window management
    • Adjusting window styles and geometry
    • Modal dialogs
    • Windows can be set to track content size and resize automatically when content changes
  • Platform menus (popup menu, menu bar)
  • Drag and Drop
  • Written in Rust, Flutter build transparently integrated with cargo

Status

  • This is project in a very experimental stage

Getting started

Prerequisites:

  1. Install Rust
  2. Install Flutter
  3. Enable Flutter desktop support
  4. Switch to Flutter Master (flutter channel master; flutter upgrade)

Clone and run examples:

git clone https://github.com/nativeshell/examples.git
cd examples
cargo run

For Apple Silicon Macs, you might need to run the example using the flag to force x86_64 architecture:

rustup target add x86_64-apple-darwin
cargo run --target=x86_64-apple-darwin

Alternatively you can use environment variables:

# Recommended if using rust-analyzer to minimize redundant rebuilds
export CARGO_TARGET_DIR=target/x86_64
export CARGO_BUILD_TARGET=x86_64-apple-darwin
cargo run

For more information read the introductory post or go to nativeshell.dev.

Community

Feel free to join us on Slack or Discord and say hello 👋.

GitHub

View Github