2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Flutterで import 'package:<自分のパッケージ>/ファイルパス' を使ったらハマった

Posted at

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'と書き直すことで無事に動作するようになりました。

このインポートの書き方の何が悪いのかもよくわかりませんが、安易にサジェストの言いなりになるのも危険だなと思いました。

2
5
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?