Jump to content

Flutter: Difference between revisions

imported from old wiki
imported>Jmarmstrong1207
m (Add reference to android wiki page)
(imported from old wiki)
 
(7 intermediate revisions by 3 users not shown)
Line 5: Line 5:
== Development ==
== Development ==


Create following <code>flake.nix</code> in a new project directory
=== Linux desktop/Web ===
 
To build Flutter apps to Linux desktop or Web you only need the <code>flutter</code> package from Nixpkgs.
Then run <code>flutter build linux</code> or <code>flutter build web</code>.
 
=== Android ===
 
The easiest way is to install Android Studio by adding <code>pkgs.android-studio</code> to your list of packages in configuration.nix.
 
If you prefer [[Vscode|VSCode]], you can create a [[Development environment with nix-shell|dev-shell]] with the packages "jdk", "flutter", and a preferred android sdk such as the preconfigured one "androidenv.androidPkgs_9_0.androidsdk" (mentioned in the Android wiki page). Add other packages if missing any. Or you can install Android Studio to get all the Android packages, and install Flutter.
 
Below is an example [[Flakes|flake.nix]] for creating a dev shell. Create following <code>flake.nix</code> in a new project directory


{{file|flake.nix|nix|<nowiki>
{{file|flake.nix|nix|<nowiki>
Line 38: Line 49:
           buildInputs = [
           buildInputs = [
             flutter
             flutter
             androidSdk
             androidSdk # The customized SDK that we've made above
            jdk17
          ];
        };
    });
}
</nowiki>}}
 
If you don't want to customize the android sdk, you can instead use the predefined packages, as mentioned [https://nixos.org/manual/nixpkgs/unstable/#using-predefined-android-package-compositions in this section on the manual], such as <code>androidenv.androidPkgs_9_0.androidsdk</code>:
 
{{file|flake.nix|nix|<nowiki>
{
description = "Flutter 3.13.x";
inputs = {
  nixpkgs.url = "github:NixOS/nixpkgs/23.11";
  flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
  flake-utils.lib.eachDefaultSystem (system:
    let
      pkgs = import nixpkgs {
        inherit system;
        config = {
          android_sdk.accept_license = true;
          allowUnfree = true;
        };
      };
    in
    {
      devShell =
        with pkgs; mkShell rec {
          ANDROID_SDK_ROOT = "${androidSdk}/libexec/android-sdk";
          buildInputs = [
            flutter
            androidenv.androidPkgs_9_0.androidsdk
             jdk17
             jdk17
           ];
           ];
Line 45: Line 90:
}
}
</nowiki>}}
</nowiki>}}


Run following commands to start a new demo project and run the "hello world" application
Run following commands to start a new demo project and run the "hello world" application
Line 54: Line 100:
# flutter run
# flutter run
</syntaxhighlight>
</syntaxhighlight>
== Emulators ==
[[Android|View the Android wiki page for more info]], but you can set up emulators in Android Studio, run them from there, then target the emulator in VSCode when running your flutter code. Otherwise, you can Nixify or even manually add your emulators as stated in the Android wiki page


== Packaging ==
== Packaging ==
Line 62: Line 111:


* The [https://github.com/orgs/NixOS/teams/flutter team working on flutter in nixpkgs] maintains several pieces of infrastructure related to the cause. The documentation is lacking as of now, but there are plans to improve it.
* The [https://github.com/orgs/NixOS/teams/flutter team working on flutter in nixpkgs] maintains several pieces of infrastructure related to the cause. The documentation is lacking as of now, but there are plans to improve it.
[[Category: Development]]