Experimental embedder for Flutter

Overview

NativeShell (Experimental embedder for Flutter)

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.

Comments
  • Can't use fonts

    Can't use fonts

    I can't seem to add a custom font to my project built with nativeshell. Trying to add a font to the pubspec.yaml causes the build to fail with this error:

    Stderr:
      [  +67 ms] Error: unable to locate asset entry in pubspec.yaml: "fonts/Inter/Inter-Regular.ttf".
      [  +11 ms] Target debug_macos_bundle_flutter_assets failed: Exception: Failed to bundle asset files.
                 #0      copyAssets (package:flutter_tools/src/build_system/targets/assets.dart:61:5)
    

    I have confirmed the path to the asset is correct, and I have used the exact same configuration on another project to be sure.

    opened by wilsonowilson 20
  • Error connecting to the service protocol: failed to connect.

    Error connecting to the service protocol: failed to connect.

    I've seen this error a lot lately. Whenever I try to attach Vscode to my Nativeshell app, this error is returned:

    Error connecting to the service protocol: failed to connect to http://127.0.0.1:49925/wGGO2vRhFfw=/.
    

    Running a normal Flutter app works fine. Cleaning flutter and restarting my computer has no effect. It seems to randomly start and stop working.

    opened by wilsonowilson 17
  • Error running template on Mac with Apple Silicon

    Error running template on Mac with Apple Silicon

    I just tried to run the example project on an apple silicon mac, but cargo run produces this error:

    Target debug_unpack_macos failed: Exception: Binary /Users/wilson/Developer/Play/examples/target/debug/build/nativeshell_examples-c8fe034cd50a97c9/out/flutter/./FlutterMacOS.framework/FlutterMacOS does not contain arm64.
    

    All logs:

    failed to run custom build command for `nativeshell_examples v0.1.0 (/Users/wilson/Developer/Play/examples)`
    
    Caused by:
      process didn't exit successfully: `/Users/wilson/Developer/Play/examples/target/debug/build/nativeshell_examples-0c7a4a584dad4c99/build-script-build` (exit code: 101)
      --- stdout
      Build failed with error:
      Flutter Tool Failed!
      Status: ExitStatus(ExitStatus(256))
      Command: "\"flutter\" \"assemble\" \"--output=.\" \"--define=BuildMode=debug\" \"--define=TargetPlatform=darwin\" \"--define=DarwinArchs=arm64\" \"--define=TargetFile=../../../../../../lib/main.dart\" \"-v\" \"--suppress-analytics\" \"debug_macos_bundle_flutter_assets\""
      Stderr:
      [   +5 ms] Target debug_unpack_macos failed: Exception: Binary /Users/wilson/Developer/Play/examples/target/debug/build/nativeshell_examples-c8fe034cd50a97c9/out/flutter/./FlutterMacOS.framework/FlutterMacOS does not contain arm64. Running lipo -info:
                 Non-fat file: /Users/wilson/Developer/Play/examples/target/debug/build/nativeshell_examples-c8fe034cd50a97c9/out/flutter/./FlutterMacOS.framework/FlutterMacOS is architecture: x86_64
    
                 #0      UnpackMacOS._thinFramework (package:flutter_tools/src/build_system/targets/macos.dart:97:7)
                 #1      UnpackMacOS.build (package:flutter_tools/src/build_system/targets/macos.dart:76:5)
                 #2      _BuildInstance._invokeInternal (package:flutter_tools/src/build_system/build_system.dart:836:27)
                 <asynchronous suspension>
                 #3      Future.wait.<anonymous closure> (dart:async/future.dart)
                 <asynchronous suspension>
                 #4      _BuildInstance.invokeTarget (package:flutter_tools/src/build_system/build_system.dart:774:32)
                 <asynchronous suspension>
                 #5      FlutterBuildSystem.build (package:flutter_tools/src/build_system/build_system.dart:603:16)
                 <asynchronous suspension>
                 #6      AssembleCommand.runCommand (package:flutter_tools/src/commands/assemble.dart:314:32)
                 <asynchronous suspension>
                 #7      FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1126:27)
                 <asynchronous suspension>
                 #8      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
                 <asynchronous suspension>
                 #9      CommandRunner.runCommand (package:args/command_runner.dart:196:13)
                 <asynchronous suspension>
                 #10     FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:284:9)
                 <asynchronous suspension>
                 #11     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
                 <asynchronous suspension>
                 #12     FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:232:5)
                 <asynchronous suspension>
                 #13     run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:62:9)
                 <asynchronous suspension>
                 #14     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
                 <asynchronous suspension>
                 #15     main (package:flutter_tools/executable.dart:91:3)
                 <asynchronous suspension>
    
      [   +4 ms] 
                 #0      throwToolExit (package:flutter_tools/src/base/common.dart:10:3)
                 #1      AssembleCommand.runCommand (package:flutter_tools/src/commands/assemble.dart:331:7)
                 <asynchronous suspension>
                 #2      FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1126:27)
                 <asynchronous suspension>
                 #3      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
                 <asynchronous suspension>
                 #4      CommandRunner.runCommand (package:args/command_runner.dart:196:13)
                 <asynchronous suspension>
                 #5      FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:284:9)
                 <asynchronous suspension>
                 #6      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
                 <asynchronous suspension>
                 #7      FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:232:5)
                 <asynchronous suspension>
                 #8      run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:62:9)
                 <asynchronous suspension>
                 #9      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
                 <asynchronous suspension>
                 #10     main (package:flutter_tools/executable.dart:91:3)
                 <asynchronous suspension>
    
    
    
      Stdout:
      [ +150 ms] executing: sysctl hw.optional.arm64
      [  +38 ms] Exit code 0 from: sysctl hw.optional.arm64
      [   +3 ms] hw.optional.arm64: 1
      [   +7 ms] executing: [/Users/wilson/Developer/SDK/flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H
      [  +26 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
      [        ] 320f27713bc843be7024b8e4216ab31a67e352ad
      [   +1 ms] executing: [/Users/wilson/Developer/SDK/flutter/] git tag --points-at 320f27713bc843be7024b8e4216ab31a67e352ad
      [  +59 ms] Exit code 0 from: git tag --points-at 320f27713bc843be7024b8e4216ab31a67e352ad
      [   +2 ms] executing: [/Users/wilson/Developer/SDK/flutter/] git describe --match *.*.* --long --tags 320f27713bc843be7024b8e4216ab31a67e352ad
      [  +57 ms] Exit code 0 from: git describe --match *.*.* --long --tags 320f27713bc843be7024b8e4216ab31a67e352ad
      [        ] 2.3.0-16.0.pre-180-g320f27713b
      [  +10 ms] executing: [/Users/wilson/Developer/SDK/flutter/] git rev-parse --abbrev-ref --symbolic @{u}
      [  +17 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
      [        ] origin/master
      [        ] executing: [/Users/wilson/Developer/SDK/flutter/] git ls-remote --get-url origin
      [  +16 ms] Exit code 0 from: git ls-remote --get-url origin
      [        ] https://github.com/flutter/flutter.git
      [  +81 ms] executing: [/Users/wilson/Developer/SDK/flutter/] git rev-parse --abbrev-ref HEAD
      [  +30 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
      [        ] master
      [   +7 ms] executing: sw_vers -productName
      [  +17 ms] Exit code 0 from: sw_vers -productName
      [        ] macOS
      [        ] executing: sw_vers -productVersion
      [  +16 ms] Exit code 0 from: sw_vers -productVersion
      [        ] 11.3
      [        ] executing: sw_vers -buildVersion
      [  +16 ms] Exit code 0 from: sw_vers -buildVersion
      [        ] 20E232
      [ +183 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
      [   +3 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'WindowsUwpEngineArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
      [ +127 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update.
      [        ] Artifact Instance of 'GradleWrapper' is not required, skipping update.
      [        ] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
      [        ] Artifact Instance of 'FlutterSdk' is not required, skipping update.
      [        ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'WindowsUwpEngineArtifacts' is not required, skipping update.
      [   +1 ms] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
      [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update.
      [        ] Artifact Instance of 'PubDependencies' is not required, skipping update.
      [  +38 ms] Initializing file store
      [   +8 ms] Done initializing file store
      [  +47 ms] Skipping target: gen_localizations
      [  +16 ms] Skipping target: gen_dart_plugin_registrant
      [   +6 ms] Skipping target: debug_macos_framework
      [   +1 ms] debug_unpack_macos: Starting due to {}
      [ +441 ms] Skipping target: kernel_snapshot
      [   +6 ms] Persisting file store
      [   +9 ms] Done persisting file store
      [  +17 ms] "flutter assemble" took 772ms.
      [  +10 ms] ensureAnalyticsSent: 6ms
      [   +1 ms] Running shutdown hooks
      [        ] Shutdown hooks complete
      [   +2 ms] exiting with code 1
    
    
      --- stderr
      thread 'main' panicked at 'explicit panic', build.rs:26:9
      note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    
    opened by wilsonowilson 11
  • Build error under Linux

    Build error under Linux

    Hello!

    Thanks for making nativeshell! It had me very curious, so following the README I cloned the example repository and tried to run it, only to find the following output:

    examples on  main [?] is 📦 v0.1.0 via 🎯 v2.14.0-188.0.dev via 🦀 v1.50.0
    🔋🔽32% ❯ cargo run                                                                                                                     [22:22:53]
       Compiling nativeshell_examples v0.1.0 (/home/dureuill/flutter/examples)
       Compiling gtk v0.9.2
    error: failed to run custom build command for `nativeshell_examples v0.1.0 (/home/dureuill/flutter/examples)`
    
    Caused by:
      process didn't exit successfully: `/home/dureuill/flutter/examples/target/debug/build/nativeshell_examples-2bba2697ebaef4c9/build-script-build` (exit code: 101)
      --- stdout
    
      ** Build failed with error **
    
      Flutter artifact location path at "/bin/cache/artifacts/engine/linux-x64" does not exist! Try running 'flutter precache'
    
      --- stderr
      thread 'main' panicked at 'explicit panic', build.rs:26:9
      note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    warning: build failed, waiting for other jobs to finish...
    error: build failed
    

    I installed flutter, enabled desktop support and switched to the master channel following the readme, here is the output of flutter doctor:

    examples on  main [?] is 📦 v0.1.0 via 🎯 v2.14.0-188.0.dev via 🦀 v1.50.0 took 6s
    🔋🔽32% ❯ flutter doctor                                                                                                                [22:23:01]
    Doctor summary (to see all details, run flutter doctor -v):
    [✓] Flutter (Channel master, 2.3.0-17.0.pre.265, on Manjaro Linux 5.10.36-2-MANJARO, locale fr_FR.UTF-8)
    [✗] Android toolchain - develop for Android devices
        ✗ Unable to locate Android SDK.
          Install Android Studio from: https://developer.android.com/studio/index.html
          On first launch it will assist you in installing the Android SDK components.
          (or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).
          If the Android SDK has been installed to a custom location, please use
          `flutter config --android-sdk` to update to that location.
    
    [✗] Chrome - develop for the web (Cannot find Chrome executable at google-chrome)
        ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.
    [✓] Linux toolchain - develop for Linux desktop
    [!] Android Studio (not installed)
    [✓] Connected device (1 available)
    
    ! Doctor found issues in 3 categories.
    

    Running flutter -v create hello_world followed by a flutter run -d linux does result in me seeing the flutter hello world in my linux.

    I also tried flutter precache like recommended, and it did something the first time around (not on subsequent runs), but this doesn't appear to solve the problem.

    Anything I can do to fix the build?

    I'm running manjaro with kernel 5.10.36-2.

    I'm new to flutter, so apologies if I misstepped!

    opened by dureuill 8
  • [MacOS] Pod install error saying a package requires higher minimum deployment target (but the app is already set)

    [MacOS] Pod install error saying a package requires higher minimum deployment target (but the app is already set)

    Hi @knopp!

    First of all, I want to thank you for developing all of this. This is a huge achievement to be honest.

    Problem

    I am getting an error after cargo run command. It complains that I have to use an higher minimum deployment target bu I already set that.

    What Have I Done?:

    • I am using a MacBook Pro (intel cpu), and the current MacOS version is: 10.15.5
    • I have successfully installed Rust, and run NativeShell Example from the repo. I tried every feature and it worked flawlessly.
    • I have copied .cargo, resources, src, build.rs, Cargo.toml, from App Template repo to my existing Flutter project folder.
    • The project is set to 10.15 on XCode application.
    • Also I make sure that it is MACOSX_DEPLOYMENT_TARGET = 10.15 by manually checking this file at: macos/Flutter/ephemeral/.symlinks/plugins/flutter_web_auth/example/macos/Runner.xcodeproj/project.pbxproj
    • I added the package nativeshell: ^0.1.10 into pubspec.yaml
    • By the way, I should say that I am using FVM (Flutter Version Manager). So I also refreshed the packages by fvm flutter pub get
    • I installed the pods by doing cd macos --> pod install
    • I have added a launch.json file in .vscode folder in order to use that Flutter: Attach to Process process.
    • Finally I ran cargo run and it generated lots of files into ./target folder. Then it gave this error below.

    One of the packages I use depends on this package flutter_web_auth: ^0.3.1. Without using NativeShell, I can normally debug and release this app, like half an hour ago.

    Error Log:

    ** Build failed with error **
    
      External Tool Failed!
      Status: ExitStatus(ExitStatus(256))
      Command: "pod" "install"
      Stderr:
    
      Stdout:
      Analyzing dependencies
      [!] CocoaPods could not find compatible versions for pod "flutter_web_auth":
        In Podfile:
          flutter_web_auth (from `/PATH_TO_APP/target/debug/build/app_template-c9e9887c415ba219/out/xcode/symlinks/flutter_web_auth/macos`)
    
      Specs satisfying the `flutter_web_auth (from `/PATH_TO_APP/target/debug/build/app_template-c9e9887c415ba219/out/xcode/symlinks/flutter_web_auth/macos`)` dependency were found, but they required a higher minimum deployment target.
    
    
      --- stderr
      thread 'main' panicked at 'explicit panic', build.rs:29:9
      note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    
    opened by yasinarik 7
  • Unable to integrate into workspace

    Unable to integrate into workspace

    I doubt this is a NativeShell issue specifically; but I'm struggling to understand the problem and hope you might have some insight. As an aside - have you considered setting up a Discord (or similar) server for project discussion?

    I cloned the app_template and added it to my cargo workspace, so it's built alongside our main project crate. However - it no longer compiles:

    [workspace]
    members = [
        "frontend", # NativeShell app_template
        "libcompany/rust", # Existing business logic
    ]
    default-members = [
        "frontend",
        "libcompany/rust",
    ]
    

    cargo build

    error[E0277]: *const Class cannot be sent between threads safely --> /Users/me/.cargo/registry/src/github.com-1ecc6299db9ec823/nativeshell-0.1.9/src/shell/platform/macos/app_delegate.rs:156:1 | 156 | / lazy_static! { 157 | | static ref APPLICATION_DELEGATE_CLASS: ApplicationDelegateClass = unsafe { 158 | | let superclass = class!(NSObject); 159 | | let mut decl = ClassDecl::new("IMApplicationDeleagte", superclass).unwrap(); ... | 247 | | }; 248 | | } | |_^ *const Class cannot be sent between threads safely | = help: within ApplicationDelegateClass, the trait Send is not implemented for *const Class note: required because it appears within the type ApplicationDelegateClass --> /Users/me/.cargo/registry/src/github.com-1ecc6299db9ec823/nativeshell-0.1.9/src/shell/platform/macos/app_delegate.rs:153:8 | 153 | struct ApplicationDelegateClass(*const Class); | ^^^^^^^^^^^^^^^^^^^^^^^^ = note: required because of the requirements on the impl of Sync for spin::once::Once<ApplicationDelegateClass> = note: required because it appears within the type lazy_static::lazy::Lazy<ApplicationDelegateClass> = note: shared static variables must have a type that implements Sync = note: this error originates in the macro __lazy_static_create (in Nightly builds, run with -Z macro-backtrace for more info)

    And the same for MenuItemTargetClass, WindowClass and WindowDelegateClass

    What I've tried:

    • Deleting the workspace level Cargo.lock
    • Checking that the versions of lazy_static is consistent between nativeshell and my project crate (it is - 1.4.0)

    I wondered if that might be an issue with the objc crate; but I see something similar on Windows:

    error[E0277]: std::rc::Weak<WindowClass> cannot be sent between threads safely --> C:\Users\Administrator.cargo\registry\src\github.com-1ecc6299db9ec823\nativeshell-0.1.9\src\shell\platform\win32\window_adapter.rs:14:1 | 14 | / lazy_static! { 15 | | static ref GLOBAL: Global = Global { 16 | | window_class: RefCell::new(Weak::new()), 17 | | }; 18 | | } | |_^ std::rc::Weak<WindowClass> cannot be sent between threads safely | = help: the trait Send is not implemented for std::rc::Weak<WindowClass> = note: required because of the requirements on the impl of Send for RefCell<std::rc::Weak<WindowClass>> note: required because it appears within the type window_adapter::Global --> C:\Users\Administrator.cargo\registry\src\github.com-1ecc6299db9ec823\nativeshell-0.1.9\src\shell\platform\win32\window_adapter.rs:8:8 | 8 | struct Global { | ^^^^^^ = note: required because of the requirements on the impl of Sync for spin::once::Once<window_adapter::Global> = note: required because it appears within the type lazy_static::lazy::Lazy<window_adapter::Global> = note: shared static variables must have a type that implements Sync = note: this error originates in the macro __lazy_static_create (in Nightly builds, run with -Z macro-backtrace for more info)

    I do understand what the error is telling me, but struggling to see how I end up in this position.

    opened by thenextman 7
  • Hot Reload

    Hot Reload

    Have you thought about adding hot reload capabilities? This would probably require moving parts of the build process into the runtime but would align the developer experience with the standard flutter process. Obviously this would only work for the dart code and not the rust parts.

    opened by maxjoehnk 5
  • Crashes on multiple monitors in Windows

    Crashes on multiple monitors in Windows

    I tested with one monitor and worked.

    stack backtrace:
       0: std::panicking::begin_panic_handler
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\/library\std\src\panicking.rs:517
       1: core::panicking::panic_fmt
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\/library\core\src\panicking.rs:100
       2: core::panicking::panic
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\/library\core\src\panicking.rs:50
       3: core::ops::arith::impl$9::add
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\ops\arith.rs:100
       4: nativeshell::shell::geometry::_Point<i32>::distance<i32>
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\geometry.rs:144
       5: nativeshell::shell::platform::platform_impl::display::impl$0::display_for_physical_point::closure$1::closure$0
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\display.rs:98
       6: core::ops::function::impls::impl$4::call_once<tuple$<ref$<ref$<nativeshell::shell::platform::platform_impl::display::Display> >,ref$<ref$<nativeshell::shell::platform::platform_impl::display::Display> > >,nativeshell::shell::platform::platform_impl::displ
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\ops\function.rs:280
       7: core::cmp::min_by<ref$<nativeshell::shell::platform::platform_impl::display::Display>,ref_mut$<nativeshell::shell::platform::platform_impl::display::impl$0::display_for_physical_point::closure$1::closure$0> >
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\cmp.rs:1145
       8: core::iter::traits::iterator::Iterator::min_by::fold::closure$0<ref$<nativeshell::shell::platform::platform_impl::display::Display>,nativeshell::shell::platform::platform_impl::display::impl$0::display_for_physical_point::closure$1::closure$0>
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\iter\traits\iterator.rs:2788
       9: core::iter::traits::iterator::Iterator::fold<core::slice::iter::Iter<nativeshell::shell::platform::platform_impl::display::Display>,ref$<nativeshell::shell::platform::platform_impl::display::Display>,core::iter::traits::iterator::Iterator::min_by::fold::c
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\iter\traits\iterator.rs:2171
      10: core::iter::traits::iterator::Iterator::reduce<core::slice::iter::Iter<nativeshell::shell::platform::platform_impl::display::Display>,core::iter::traits::iterator::Iterator::min_by::fold::closure$0>
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\iter\traits\iterator.rs:2216
      11: core::iter::traits::iterator::Iterator::min_by<core::slice::iter::Iter<nativeshell::shell::platform::platform_impl::display::Display>,nativeshell::shell::platform::platform_impl::display::impl$0::display_for_physical_point::closure$1::closure$0>
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\iter\traits\iterator.rs:2791
      12: nativeshell::shell::platform::platform_impl::display::impl$0::display_for_physical_point::closure$1
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\display.rs:94
      13: enum$<core::option::Option<ref$<nativeshell::shell::platform::platform_impl::display::Display> >, 1, 18446744073709551615, Some>::or_else<ref$<nativeshell::shell::platform::platform_impl::display::Display>,nativeshell::shell::platform::platform_impl::disp
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\option.rs:1149
      14: nativeshell::shell::platform::platform_impl::display::Displays::display_for_physical_point
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\display.rs:90
      15: nativeshell::shell::platform::platform_impl::display::Displays::convert_physical_to_logical
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\display.rs:120
      16: nativeshell::shell::platform::platform_impl::window_base::WindowBaseState::to_logical
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\window_base.rs:400
      17: nativeshell::shell::platform::platform_impl::window_base::WindowBaseState::get_frame_rect
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\window_base.rs:291
      18: nativeshell::shell::platform::platform_impl::window_base::WindowBaseState::adjust_window_position
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\window_base.rs:324
      19: nativeshell::shell::platform::platform_impl::window_base::WindowBaseState::handle_message
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\window_base.rs:664
      20: nativeshell::shell::platform::platform_impl::window::PlatformWindow::handle_message
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\window.rs:640
      21: nativeshell::shell::platform::platform_impl::window::impl$1::wnd_proc
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\window.rs:176
      22: nativeshell::shell::platform::platform_impl::window_adapter::wnd_proc
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\window_adapter.rs:179
      23: CallWindowProcW
      24: EnumChildWindows
      25: SetTimer
      26: KiUserCallbackDispatcher
      27: NtUserGetMessage
      28: GetMessageW
      29: windows::Windows::Win32::UI::WindowsAndMessaging::GetMessageW<windows::Windows::Win32::Foundation::HWND>
                 at C:\Users\SkyGh\.cargo\registry\src\github.com-1ecc6299db9ec823\windows-0.28.0\src\Windows\Win32\UI\WindowsAndMessaging\mod.rs:4228
      30: nativeshell::shell::platform::platform_impl::run_loop::State::run
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\run_loop.rs:164
      31: nativeshell::shell::platform::platform_impl::run_loop::PlatformRunLoop::run
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\platform\win32\run_loop.rs:240
      32: nativeshell::shell::run_loop::RunLoop::run
                 at C:\Users\SkyGh\Desktop\nativeshell-main\nativeshell\src\shell\run_loop.rs:59
      33: build_test1::main
                 at .\src\main.rs:28
      34: core::ops::function::FnOnce::call_once<void (*)(),tuple$<> >
                 at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c\library\core\src\ops\function.rs:227
    
    opened by Czappi 4
  • [Linux] failed building the example

    [Linux] failed building the example

    Hi,

    This is not an error or anything, but I want to share the hiccup I had because otherwise some people might give up early.

    Quick solution for busy people - need to run "flutter run" first for the example.

    ... and the background is following.

    When I followed the steps in the introduction, I got an error like below:

    First cargo run - error: build failed cargo run Compiling nativeshell_examples v0.1.0 (/home/bus710/repo/examples) Compiling glib v0.14.8 Compiling gio-sys v0.14.0 Compiling pango-sys v0.14.0 Compiling atk-sys v0.14.0 Compiling nativeshell v0.1.11 error: failed to run custom build command for `nativeshell_examples v0.1.0 (/home/bus710/repo/examples)`

    Caused by: process didn't exit successfully: /home/bus710/repo/examples/target/debug/build/nativeshell_examples-d760aadebf0231c2/build-script-build (exit status: 101) --- stdout

    ** Build failed with error **

    JSON operation failed: $missing field packageUri at line 1 column 9839Text: {"configVersion":2,"packages":[{"name":"async","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/async-2.8.2","packageUri":"lib/","languageVersion":"2.12"},{"name":"boolean_selector","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/boolean_selector-2.1.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"characters","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/characters-1.1.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"charcode","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/charcode-1.3.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"clock","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/clock-1.1.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"collection","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/collection-1.15.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"cupertino_icons","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/cupertino_icons-1.0.3","packageUri":"lib/","languageVersion":"2.12"},{"name":"fake_async","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/fake_async-1.2.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"ffi","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/ffi-1.1.2","packageUri":"lib/","languageVersion":"2.12"},{"name":"file","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/file-6.1.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"flutter","rootUri":"file:///home/bus710/flutter/packages/flutter","packageUri":"lib/","languageVersion":"2.12"},{"name":"flutter_test","rootUri":"file:///home/bus710/flutter/packages/flutter_test","packageUri":"lib/","languageVersion":"2.12"},{"name":"flutter_web_plugins","rootUri":"file:///home/bus710/flutter/packages/flutter_web_plugins","packageUri":"lib/","languageVersion":"2.12"},{"name":"http","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/http-0.13.3","packageUri":"lib/","languageVersion":"2.12"},{"name":"http_parser","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/http_parser-4.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"js","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/js-0.6.3","packageUri":"lib/","languageVersion":"2.12"},{"name":"matcher","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.11","packageUri":"lib/","languageVersion":"2.12"},{"name":"meta","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/meta-1.7.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"nativeshell","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/nativeshell-0.1.10","packageUri":"lib/","languageVersion":"2.13"},{"name":"package_info_plus","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/package_info_plus-1.0.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"package_info_plus_linux","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/package_info_plus_linux-1.0.2","packageUri":"lib/","languageVersion":"2.12"},{"name":"package_info_plus_macos","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/package_info_plus_macos-1.1.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"package_info_plus_platform_interface","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/package_info_plus_platform_interface-1.0.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"package_info_plus_web","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/package_info_plus_web-1.0.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"package_info_plus_windows","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/package_info_plus_windows-1.0.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"path","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/path-1.8.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"path_provider","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-2.0.2","packageUri":"lib/","languageVersion":"2.12"},{"name":"path_provider_linux","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"path_provider_macos","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"path_provider_platform_interface","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_platform_interface-2.0.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"path_provider_windows","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.0.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"pedantic","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/pedantic-1.11.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"platform","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/platform-3.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"plugin_platform_interface","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/plugin_platform_interface-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"process","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/process-4.2.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"shared_preferences","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences-2.0.6","packageUri":"lib/","languageVersion":"2.12"},{"name":"shared_preferences_linux","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_linux-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"shared_preferences_macos","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_macos-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"shared_preferences_platform_interface","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_platform_interface-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"shared_preferences_web","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_web-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"shared_preferences_windows","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/shared_preferences_windows-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"sky_engine","rootUri":"file:///home/bus710/flutter/bin/cache/pkg/sky_engine","packageUri":"lib/","languageVersion":"2.12"},{"name":"source_span","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/source_span-1.8.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"stack_trace","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.10.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"stream_channel","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/stream_channel-2.1.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"string_scanner","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.1.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"term_glyph","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.2.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"test_api","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/test_api-0.4.3","packageUri":"lib/","languageVersion":"2.12"},{"name":"typed_data","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/typed_data-1.3.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"url_launcher","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.0.6","packageUri":"lib/","languageVersion":"2.12"},{"name":"url_launcher_linux","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_linux-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"url_launcher_macos","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_macos-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"url_launcher_platform_interface","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_platform_interface-2.0.3","packageUri":"lib/","languageVersion":"2.12"},{"name":"url_launcher_web","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_web-2.0.1","packageUri":"lib/","languageVersion":"2.12"},{"name":"url_launcher_windows","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher_windows-2.0.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"vector_math","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/vector_math-2.1.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"win32","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/win32-2.1.3","packageUri":"lib/","languageVersion":"2.13"},{"name":"xdg_directories","rootUri":"file:///home/bus710/flutter/.pub-cache/hosted/pub.dartlang.org/xdg_directories-0.2.0","packageUri":"lib/","languageVersion":"2.12"},{"name":"nativeshell_examples","rootUri":"../","packageUri":"lib/","languageVersion":"2.12"},{"name":"flutter_gen","rootUri":"flutter_gen","languageVersion":"2.12"}],"generated":"2021-10-15T16:29:46.750823Z","generator":"pub","generatorVersion":"2.15.0-82.2.beta"}

    --- stderr thread 'main' panicked at 'explicit panic', build.rs:26:9 stack backtrace: 0: std::panicking::begin_panic at /rustc/c8dfcfe046a7680554bf4eb612bad840e7631c4b/library/std/src/panicking.rs:541:12 1: build_script_build::main at ./build.rs:26:9 2: core::ops::function::FnOnce::call_once at /rustc/c8dfcfe046a7680554bf4eb612bad840e7631c4b/library/core/src/ops/function.rs:227:5 note: Some details are omitted, run with RUST_BACKTRACE=full for a verbose backtrace. warning: build failed, waiting for other jobs to finish... error: build failed

    The error just says "build.rs" panicked. I had no clue because my setup seems fine to me.

    My setup

    $ flutter --version Flutter 2.6.0-12.0.pre.366 • channel master • https://github.com/flutter/flutter.git Framework • revision a82c50f1f6 (47 minutes ago) • 2021-10-15 09:48:08 -0700 Engine • revision 8034050e78 Tools • Dart 2.15.0 (build 2.15.0-217.0.dev)

    $ cargo version cargo 1.55.0 (32da73ab1 2021-08-23)

    $ rustc --version rustc 1.55.0 (c8dfcfe04 2021-09-06)

    Then I wanted to check if the example would be built without NativeShell. So I tried "flutter run" to build desktop/web app. For some reason, I couldn't see anything on the screen. At that moment I thought the flutter example might have some issue in the first place, but there is no issue in the issues. Then I just tried "cargo run" again.....

    Second cargo run - example got built normally $ cargo run 1m 9s Compiling nativeshell_examples v0.1.0 (/home/bus710/repo/examples) Compiling gdk-sys v0.14.0 Compiling gdk-pixbuf v0.14.0 Compiling gtk-sys v0.14.0 Compiling gdk v0.14.3 Compiling gtk v0.14.3 Compiling nativeshell v0.1.11 Finished dev [unoptimized + debuginfo] target(s) in 48.40s Running `target/debug/nativeshell_examples`

    ** Help me make NativeShell and Flutter on desktop better! ** We have a long way to go: https://nativeshell.dev/roadmap

    flutter: Observatory listening on http://127.0.0.1:40607/Y2oAKn1Y0iI=/ nativeshell: Writing VM Service info file into ${XDG_RUNTIME_DIR}/vmservice.nativeshell_examples

    So my shallow conclusion is that, there were not sufficient flutter packages downloaded/installed when I ran "cargo run" earlier, but the "flutter run" did it for me. Then the second trial was successful.

    ... I know this is a silly story, but I just hope people don't give up because of this.

    opened by bus710 4
  • Native shell debugger just like flutter for Vscode / android studio

    Native shell debugger just like flutter for Vscode / android studio

    Currently we have to run the app manually using cargo run, It would be interesting to see if there will be a debugger for this.

    This will make this package developer friendly and also in future when you add hot restart or reload, then we don't have to use the terminal instead use the debugger in our IDE(vscode is more general then android-studio for desktop).

    opened by prateekmedia 4
  • Create a community space

    Create a community space

    NOTE: This is a meta issue, and not related to technical functionality.

    It would be nice to have a community space for chatting and resolving issues. I'm quite interested in the project, but at the moment its hard to reach out in an interactive chat. Questions in general often don't belong into github issues and are better answered in an interactive conversation.

    My suggestion would be to use the issue tracker on Github as a bug tracker and have a separate chat instance (possibly a discord) as a community space for showcasing and discussion. If the project gains more attention, this would become a huge benefit opposed to just having issues.

    Thanks for the project, lets give it a proper community space!

    opened by Janrupf 4
  • std::rc::Weak<ContextImpl>` cannot be sent between threads safely

    std::rc::Weak` cannot be sent between threads safely

    How to solve this question ? I want to use context in 'thread::spawn' block ! The error message is blow :

    error[E0277]: std::rc::Weak<ContextImpl> cannot be sent between threads safely --> src/event_channels.rs:154:32 | 154 | sender.send(move || { | ^^^^ std::rc::Weak<ContextImpl> cannot be sent between threads safely | = help: within event_channels::EventChannels, the trait std::marker::Send is not implemented for std::rc::Weak<ContextImpl> = note: required because it appears within the type nativeshell::Context

    opened by zhukui 1
  • The Flutter Attach to Process gets stuck on Waiting...

    The Flutter Attach to Process gets stuck on Waiting...

    I'm trying to run the Flutter Attach to Process as said to support hot reload and hot restart. I've the examples app running but the this process is getting stuck while launching.

    My launch.json file

    {
        // Use IntelliSense to learn about possible attributes.
        // Hover to view descriptions of existing attributes.
        // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            {
                "name": "Flutter: Attach to Process",
                "type": "dart",
                "request": "attach",
                "osx": {
                    "serviceInfoFile": "${env:TMPDIR}vmservice.nativeshell_examples",
                },
                "windows": {
                    "serviceInfoFile": "${env:TEMP}/vmservice.nativeshell_examples"
                },
                "linux": {
                    "serviceInfoFile": "${env:XDG_RUNTIME_DIR}/vmservice.nativeshell_examples"
                }
            },
        ]
    }
    
    

    You can see in the screenshot below it's waiting for connection from the application I guess Screenshot 2022-06-13 at 7 10 28 PM

    I'm not sure what's happening here as I've very little knowledge about running such kind of processes but I guess it's not able to find the running application. I'm on M1 mac and running the project on Flutter 3.0.1 stable and dart 2.17.1

    To reproduce the issue you can use this project I'm currently running https://github.com/rutvik110/examples

    opened by rutvik110 3
  • Frameless windows are not resizable on macOS

    Frameless windows are not resizable on macOS

    I noticed that the WindowStyle#canResize option has no effect when the frame option is WindowFrame.noFrame on macOS. Digging a little deeper I discovered these lines which skip applying the resizeable mask to frameless windows.

    Is there a reason why this is the case? In my experience with macOS dev, there is nothing that stops a borderless window from being resizeable. Besides, I think it's a fairly reasonable developer expectation that if a window is styled as resizeable then it should actually be resizeable.

    opened by filleduchaos 0
  • How to specify libflutter location

    How to specify libflutter location

    Hello, I'm attempting to package my nativeshell application into a self-contained bundle, but I'm having trouble getting it to search the local directory for libflutter_linux_gtk.so. With the library and executable in the same directory, I get the following error.

    DlOpen { desc: "libflutter_linux_gtk.so: cannot open shared object file: No such file or directory" }
    

    Is there a way to specify an absolute or relative directory to search for the library?

    Thank you for any assistance.

    opened by 0xchase 0
  • way to run existing flutter code

    way to run existing flutter code

    nativeshell supports creating desktop applications using the WindowWidget and WindowLayoutProbe. is there a way to get the regular Scaffold based apps to work with nativeshell?

    opened by dvc94ch 4
  • Is there any way to lower the minimum supported version of macOS

    Is there any way to lower the minimum supported version of macOS

    Hi, there. It seems the package made by NativeShell only supports the version of macOS 11.0 above. Is there any way to support the version of macOS 10.15? Thanks in advance.

    opened by ihenk 1
a project for learning all Flutter Widgets , sync from flutter.dev the officia website.

Flutter Widgets Catalog (WIP) 计划 1、使用Flutter开发一个全平台的Flutter Widgets Catalog APP,并且开源。在这个APP中可以通过图形化的方式查看所有Widgets的介绍,示例,视频教程。 2、所有文档内容由前一天从flutter.dev

ezshine 32 Aug 3, 2022
A low-cost Flutter screen adaptation solution(一个极低成本的 Flutter 屏幕适配方案)

A low-cost Flutter screen adaptation solution(一个极低成本的 Flutter 屏幕适配方案) 100% 还原 UI,只需要按照设计图写的宽高写即可 先看图片,设置的标准宽度是 360 iPhone 8 --------------------------

聂志洋 108 Sep 27, 2022
Flutter 2.0 (Null safety) Basic, Dynamic & Silver style Staggered Grid views made using flutter staggered grid view package. 🦺

Staggered Grid View Developement Stack Getting Started This project is a starting point for a Flutter application. A few resources to get you started

Nakshatra Singh 9 Oct 28, 2022
A Flutter package that makes it easy to customize and work with your Flutter desktop app's system tray.

system_tray A Flutter package that that enables support for system tray menu for desktop flutter apps. on Windows, macOS and Linux. Features: - Modify

AnTler 140 Dec 30, 2022
Email and Password Authentication In Flutter & Firebase in Flutter 2.2

Email and Password Authentication In Flutter & Firebase in Flutter 2.2

BackSlash Flutter 43 Nov 23, 2022
Learn Flutter on Flutter! A widget directory with implementation samples!

Fludget Browse through a variety of widgets used in flutter This application is developed to learn Flutter using Flutter. Different widgets used in fl

ACM VIT 29 Nov 23, 2022
A Flutter package that makes it easy to customize and work with your Flutter desktop app window.

bitsdojo_window A Flutter package that makes it easy to customize and work with your Flutter desktop app window on Windows, macOS and Linux. Watch the

Bits Dojo 606 Dec 27, 2022
DoneIt is a sample note app 📝 Flutter application 📱 built to demonstrate use of Clean Architecture tools. Dedicated to all Flutter Developers with ❤️.

DoneIt ?? DoneIt is a sample note app ?? Flutter application ?? built to demonstrate use of Clean Architecture tools. Dedicated to all Flutter Develop

Shubham Chhimpa 175 Dec 24, 2022
Utility Manager Flutter Application is made with Flutter and Supabase which allows user to add task, set remainder to the task, set color to separate tasks and it allows to add URL with URL's informations.

Utility Manager Flutter Application! Utility Manager Flutter Application is made with Flutter and Supabase which allows user to add task, set remainde

Kathirvel Chandrasekaran 6 Jan 6, 2022
My first Flutter project - a recipes app, from the book Flutter Apprentice.

recipes My first Flutter project - a recipes app, from the book Flutter Apprentice. Getting Started This project is a starting point for a Flutter app

Adatta1276 1 Dec 28, 2021
Projeto Flutter sendo desenvolvido para a Formação Flutter da plataforma Alura

ByteBank / A Flutter Journey Table of Contents About • Features • ?? About This is a project being developed for a Flutter couse in Alura plataform, s

Mike Jhoe 1 Oct 25, 2021
Plugins for Flutter maintained by the Flutter team

Flutter plugins This repo is a companion repo to the main flutter repo. It contains the source code for Flutter first-party plugins (i.e., plugins dev

Flutter 16.6k Dec 29, 2022
QR.Flutter is a Flutter library for simple and fast QR code rendering via a Widget or custom painter.

QR.Flutter is a Flutter library for simple and fast QR code rendering via a Widget or custom painter. Need help? Please do not submit an issue for a "

Yakka 612 Jan 4, 2023
Stream Feed official Flutter SDK. Build your own feed experience using Dart and Flutter.

Official Flutter packages for Stream Activity Feeds The official Dart client for Stream Activity Feeds, a service for building activity feed applicati

Stream 67 Sep 26, 2022
Flutter app built as a submission for the 2019 Flutter Create contest

relax Relax is a Flutter application built for the Flutter Create contest. It gives the user the choice of four nature sounds and rotates through rela

Erin Morrissey 85 Dec 8, 2022
An end-to-end Flutter app built to get details and trending recipes - made as a part of the book 'Flutter Apprentice' by raywenderlich.com

Fooderlich - Flutter Apprentice An end-to-end Flutter app built to get details and trending recipes - made as a part of the book 'Flutter Apprentice'

Suvaditya Mukherjee 1 Dec 4, 2021
Expenses tracker built with Flutter and Dart making use of Provider, Intl, Syncfusion Flutter Datepicker and more

expense_app A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if t

Atuoha Anthony 2 Dec 10, 2022
Flutter Admin Panel Made In Flutter 2.8

Responsive Admin Panel or Dashboard - Flutter UI Packages we are using: flutter_svg: link google_fonts: link provider: link Fonts Poppins link Respons

Manish Dayma 58 Dec 23, 2022