こんにちは、CX事業本部 Delivery部の若槻です。
今回は、Visual Studio Code(VS Code)でDart(Flutter)のコードを編集する際に、ファイル保存時にセミコロン(;
)を自動挿入するフォーマット設定をしてみました。
必要な設定
Dartエクステンションの導入
Dartの公式エクステンションをVS Codeにインストールします。
これにより、行末尾にセミコロンが付いていない箇所ではExpected to find ';'.
という構文エラーが出るようになります。
settings.json作成
.vscode/settings.json
が未作成の場合は作成します。
mkdir .vscode
touch .vscode/settings.json
settings.json
に次のいずれかの記述を追加します。
.vscode/settings.json
{
"[dart]": {
"editor.codeActionsOnSave": {
"quickfix.insertSemicolon": true,
}
}
}
//もしくは
{
"[dart]": {
"editor.codeActionsOnSave": {
"quickfix.insertSemicolon": true,
}
}
}
後者の記述はDartのコードにのみ設定を適用することができます。
これによりDartのコードを編集する際に、ファイル保存時にセミコロン(;
)が自動挿入されるようになります。
補足
セミコロンが自動挿入されないパターン
下記のMyApp({super.key})
のようにクラス初期化の行では、自動でセミコロンが挿入されません。
class MyApp extends StatelessWidget {
const MyApp({super.key})
@override
Widget build(BuildContext context) {
return MaterialApp(
onGenerateRoute: generateRoute,
initialRoute: '/',
);
}
}
A function body must be provided. Try adding a function body.
とあるように関数の記述が不足していると判断されるためです。
formatOnSaveの有効化は必須ではない
Prettierなどのフォーマッターのエクステンションを導入して、ファイル保存時の自動フォーマットを利用するためには、VSCodeのsettings.json
でeditor.formatOnSave
の有効化が必要です。
しかしDartエクステンションの場合で確認してみたところeditor.formatOnSave
の有効化は不要でした。
てっきり必須だと思っていたのですが、VS Code本体の設定は参照しないようです。
参考
- VSCodeでFlutter(dart)のコードに自動でセミコロンを挿入する設定 - Qiita
- dart - Visual Studio Code Flutter Format is Not Working with My Indent Space Value - Stack Overflow
- [Flutter] XMLファイル(Info.plist)をVSCodeから編集したい | DevelopersIO
以上