警告は、問題があることを正しく示しています。
正しい解決策は、Dart ファイルが概念的に互いに分離しているか、関連しているかによって異なります。
異なるライブラリ
それらが概念的に分離されている場合は、異なるライブラリ名を持つ異なるライブラリに属するものとして定義する必要があります。
このimport
コマンドは、同じライブラリーに属するコンパイル単位ではなく、別のライブラリーからコンパイル単位を参照するために使用されます。すべてのライブラリが一意のライブラリ名を持つことが期待されます。
Dart ファイルがライブラリとして扱われ (つまり、import
ステートメントのサブジェクト)、明示的に名前が付けられていない場合、その暗黙的な名前は空の文字列になります。この場合、両方のファイルがライブラリとして扱われ、(空の文字列の) 同じ名前のライブラリが 2 つあるというエラーが表示されます。
これを別のライブラリとして機能させるには、別の名前を指定します。
トップファイル:
import 'foo.dart';
import 'bar.dart';
foo.dart:
library foo;
bar.dart:
library bar;
同じライブラリの一部
しかし、それらが関連している場合、それらはライブラリとして参照されるべきではありません。つまり、import コマンドを使用しないでください。Dart ファイルを同じライブラリpart
に属するコンパイル単位として扱うコマンドを使用します。
トップファイル:
library baz;
part 'foo.dart';
part 'bar.dart';
foo.dart:
part of baz;
bar.dart:
part of baz;
最上位のライブラリ ファイルのみにpart
ステートメントを含めることができます。part
相互に定義を参照している場合でも、他のファイル内にステートメントを含める必要はありません (含めることもできません) 。複数のファイルがある場合は、最上位のライブラリ ファイルにすべて (任意の順序で) リストします。
ライブラリの暗黙的な名前は空の文字列ですが、複数の部分が含まれる場合はそれを使用する方法はありません: したがって、これらのファイルがライブラリとしてインポートされない場合でも、明示的に名前を割り当てる必要があります。ライブラリ名。
常に覚えておいてください: import
andステートメントは、C プリプロセッサpart
のマクロとは大きく異なります。#include