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