メインコンテンツにスキップ

import_deferred_library_with_load_function

インポートされたライブラリは「loadLibrary」という名前のトップレベル関数を定義していますが、このライブラリの遅延読み込みにより隠蔽されています。

説明

#

アナライザーは、loadLibrary という名前の関数を宣言するライブラリが遅延インポートを使用してインポートされた場合に、この診断を生成します。遅延インポートは loadLibrary という名前の暗黙的な関数を導入します。この関数は遅延ライブラリの内容をロードするために使用され、暗黙的な関数は遅延ライブラリ内の明示的な宣言を隠蔽します。

詳細については、ライブラリの遅延ロード を参照してください。

#

loadLibrary という名前の関数を定義するファイル a.dart がある場合

dart
void loadLibrary(Library library) {}

class Library {}

以下のコードは、a.loadLibrary の暗黙的な宣言が a.dartloadLibrary の明示的な宣言を隠蔽しているため、この診断を生成します。

dart
import 'a.dart' deferred as a;

void f() {
  a.Library();
}

一般的な修正

#

インポートされたライブラリを遅延読み込みする必要がない場合は、deferred キーワードを削除してください。

dart
import 'a.dart' as a;

void f() {
  a.Library();
}

インポートされたライブラリを遅延読み込みする必要があり、インポートされた関数を参照する必要がある場合は、インポートされたライブラリ内の関数名を変更してください。

dart
void populateLibrary(Library library) {}

class Library {}

インポートされたライブラリを遅延読み込みする必要があり、インポートされた関数を参照する必要がない場合は、hide 句を追加してください。

dart
import 'a.dart' deferred as a hide loadLibrary;

void f() {
  a.Library();
}