12

クラスに次のインポートステートメントがあります

import 'package:dart_web_toolkit/ui.dart';

import '../../util/flex_table_builder.dart' as ftBldr;

import '../factors_list_view.dart';


class MediatingFactorsView extends Composite
{
 //... 
}

ただし、最後のインポート ステートメントには警告のフラグが立てられます。

The different imported libraries 'flex_table_builder.dart' and 'factors_list_view.dart' should not have the same name

名前はまったく異なり、最新の Dart エディターに更新した後、コード全体でこれが繰り返されていることがわかります。これはバグですか?

4

3 に答える 3

3

パッケージ レイアウト規則に従うことができます。

エラーの場合:

インポートされた異なるライブラリ onset_view.dart と duration_view.dart が同じ名前であってはなりません

インポートされた dart ファイルごとに個別のライブラリ名を定義する必要があります。

追加の注意事項として、import 'package:epimss/shared.dart';代わりに import 'packages/epimss/shared.dart';import 'site_view.dart';の代わりに 使用する必要があります。import './site_view.dart';

于 2013-05-24T16:56:36.980 に答える
3

警告は、問題があることを正しく示しています。

正しい解決策は、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相互に定義を参照している場合でも、他のファイル内にステートメントを含める必要はありません (含めることもできません) 。複数のファイルがある場合は、最上位のライブラリ ファイルにすべて (任意の順序で) リストします。

ライブラリの暗黙的な名前は空の文字列ですが、複数の部分が含まれる場合はそれを使用する方法はありません: したがって、これらのファイルがライブラリとしてインポートされない場合でも、明示的に名前を割り当てる必要があります。ライブラリ名。

常に覚えておいてください: importandステートメントは、C プリプロセッサpartのマクロとは大きく異なります。#include

于 2014-08-26T06:22:56.810 に答える