Emacs tools for working with the Flutter SDK
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.
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,
e.g.
myString - Replaces the string literal with a reference to the localizations class,
e.g.
MyLocalizations.of(context).myString - 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 flutter-test-mode minor
mode.
You can install from MELPA with package.el.
First get started with MELPA, then run:
M-x package-install flutter
Set flutter-sdk-path to the location of your Flutter SDK. This isn't even
necessary if the flutter binary is on your PATH.
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 storedflutter-l10n-template-arb-file: The name of the ARB file that represents the default (source) language for your appflutter-l10n-output-localization-file: The name of the generated Dart file that you use in your app
Using use-package and assuming you
put the Flutter SDK in /Applications/flutter:
;; 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/"))GPL-3