Emacs tools for working with the Flutter SDK
Run your app
Flutter.el helps you run the
flutter binary interactively as an inferior
process. It's designed to work together with
dart-mode: for instance the example
configuration below binds
flutter-run-or-hot-reload to C-M-x in
dart-mode. While editing your Dart code, just hit C-M-x to either
run your app, or if it's already running, to hot-reload it.
Localize your app
Any non-trivial app will require localization, but if you're like me you probably write your code first and worry about externalizing your strings (moving their definitions to a separate file) later.
Flutter.el comes with some helpful features to make externalizing strings easier, assuming you are following best practices:
flutter-l10n-externalize-all: A function that interactively does the following for each string literal in the current buffer:
- Prompts you to give an ID (class property name) to the string,
- Replaces the string literal with a reference to the localizations class,
- Deletes any
constkeywords that apply to the reference
- Appends the original string content as an end-of-line comment
- Appends a definition for the string to the template ARB file, e.g.
"myString": "Hello, world!",
- Prompts you to give an ID (class property name) to the string, e.g.
flutter-l10n-externalize-at-point: Does all of the above but for the string literal at point only; kills the definition instead of adding it to the template ARB file.
Flutter.el helps you run tests of your flutter application. There are 3 commands available:
flutter-test-all- run all tests from a flutter project.
flutter-test-current-file- run all tests inside the current file.
flutter-test-at-point- run single test or group of tests at point.
Easily activate keybindings for these with the
You can install from MELPA with
M-x package-install flutter
flutter-sdk-path to the location of your Flutter SDK. This isn't even
necessary if the
flutter binary is on your
The localization tools will read your
/l10n.yaml file by default, but
alternatively you can set the following variables:
flutter-l10n-arb-dir: The relative path from project root where your ARB files are stored
flutter-l10n-template-arb-file: The name of the ARB file that represents the default (source) language for your app
flutter-l10n-output-localization-file: The name of the generated Dart file that you use in your app
use-package and assuming you
put the Flutter SDK in
;; Assuming usage with dart-mode (use-package dart-mode ;; Optional :hook (dart-mode . flutter-test-mode)) (use-package flutter :after dart-mode :bind (:map dart-mode-map ("C-M-x" . #'flutter-run-or-hot-reload)) :custom (flutter-sdk-path "/Applications/flutter/"))