🐙
Flutterおすすめのimport周りの設定
はじめに
個人的にしっくり来ているimport周りの設定について紹介します。
絶対パスと相対パス
Flutterプロジェクト内の別ファイルをimportするとき絶対パスと相対パスを選択できます。
どちらにもメリットありますが、個人的には絶対パスが気に入っています。
理由は絶対パスなら、ひと目でどのディレクトリにあるか分かるからです。
どちら派が多いのか気になって、Twitterでアンケートを取ったのですが僅差でした。
投票数が少ないですが、どちらもいるといった感じですね👀
https://twitter.com/K9i_apps/status/1634081230592577537?s=20
Lintルール
どちらを使うかは好みですが、プロジェクト内での統一はしたほうが良いと考えています。
そのためのLintルールがあります。
always_use_package_importsとprefer_relative_importsです。
always_use_package_importsは絶対パス、prefer_relative_importsは相対パス用のLintルールです。
analysis_options.yamlに追記すれば、誤ったimportがあると警告がでるようになります。
analysis_options.yaml
linter:
rules:
always_use_package_imports: true
```text
## VS Codeの設定
VS Codeの設定を変更することで、importを自動で整理できるようにしています。
こちらの設定を有効にすると、保存時にIDEが勝手にimportの並び替えなどをしてくれます。
```json:settings.json
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll": true,
"source.organizeImports": true,
"source.addMissingImports": true
},
```text
詳しい設定方法は[こちらの記事](https://zenn.dev/inari_sushio/articles/0f4c606c8340ee#%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E4%BF%9D%E5%AD%98%E6%99%82%E3%81%AE%E8%87%AA%E5%8B%95%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B)がわかりやすいです。
## import_sorterは使わない
[import_sorter](https://pub.dev/packages/import_sorter)はimportを種類ごとに分けて、装飾してくれたりもするパッケージです。
公式のReadme曰くこんな感じになります。
```dart:import_sorter適用例
// Dart imports:
import 'dart:async';
import 'dart:io';
import 'dart:js';
// Flutter imports:
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/painting.dart';
import 'package:flutter/physics.dart';
// Package imports:
import 'package:intl/intl.dart';
import 'package:mdi/mdi.dart';
import 'package:provider/provider.dart';
// Project imports:
import 'package:example_app/anotherFile2.dart';
import 'anotherFile.dart';
個人的には先程のVS Codeの設定で十分だと思っているので使っていないです。
あとはOSSパッケージ用のプロジェクトだと、余計な依存を避けるためimport_sorterは使えないので、サービス用のFlutterコードとパッケージ用のコードの書き味が変わってしまうのも少し嫌です。
まとめ
こんな感じの設定が気に入ってるよ〜という話でした。
Discussion