Flutterでimportの入力補完で次のようなサジェストを見かけました。
import 'package:<自分のプロジェクト名>/<lib以下のディレクトリ>';
これなら../
などの相対パスを使わずにプロジェクトのトップディレクトリから参照できるようにかけるので便利!と思って使ってみたらハマりました。
出力されたエラーは次のようなエラー。
I/flutter (31989): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter (31989): The following NoSuchMethodError was thrown building Invite(dirty, state: InviteState#7df4b):
I/flutter (31989): The getter 'taskListScaffoldTitle' was called on null.
I/flutter (31989): Receiver: null
I/flutter (31989): Tried calling: taskListScaffoldTitle
エラーの発生する行は次のようなコードになっていました。
AppLocalization.of(context).taskListScaffoldTitle
AppLocalizationはこの記事で作成した多言語化ようのファイルです。
このファイルをpackage:<自分のプロジェクト名>/lib/l10n/app-localization.dart
としてインポートしていました。
エラーからはこのインポート文が問題とは思わず数日悩んでいましたが、うまく動作しているファイルとの差を見比べて、このインポートが原因ぽいことがわかりました。
インポートをimport '../l10n/app-localization.dart'
と書き直すことで無事に動作するようになりました。
このインポートの書き方の何が悪いのかもよくわかりませんが、安易にサジェストの言いなりになるのも危険だなと思いました。