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

export_legacy_symbol

「{0}」というシンボルはレガシーライブラリで定義されており、null safety が有効なライブラリから再エクスポートすることはできません。

説明

#

null safety をオプトインしているライブラリが別のライブラリをエクスポートしており、エクスポートされたライブラリが null safety をオプトアウトしている場合に、アナライザーはこの診断を生成します。

#

null safety をオプトアウトしているライブラリを前提とします

dart
// @dart = 2.8
String s;

以下のコードは、オプトアウトされたライブラリからシンボルをエクスポートしているため、この診断を生成します。

dart
export 'optedOut.dart';

class C {}

一般的な修正

#

可能であれば、オプトアウトする必要がないように、エクスポートされたライブラリを移行してください。

dart
String? s;

ライブラリを移行できない場合は、エクスポートを削除してください。

dart
class C {}

エクスポートされたライブラリ(オプトアウトされているライブラリ)自体がオプトインされたライブラリをエクスポートしている場合、オプトインされたライブラリのシンボルを間接的にエクスポートすることは有効です。これを行うには、オプトアウトされたライブラリで宣言されているすべての名前を非表示にする hide コンビネータを、ライブラリのエクスポートディレクティブに追加します。