2016-12-12 8 views
3

からである私は、このような何かを読み取って、実行時エラーを取得:未処理の例外:タイプ「X」の「」型のサブタイプではありません「A」からAが

Unhandled exception: 
type 'A' is not a subtype of type 'A' of 'x' where 
    A is from file:///path/to/source/a.dart 
    A is from package:my_package/a.dart 

A正確です同じタイプと他のものと同じA - 名前の競合はありません。

2つのインデントされた行( 'A is from ...')は、パスを指定する方法が異なります。 1つは 'package:'を通り、もう1つはファイルシステム上のファイルパスです。

+0

これは、チェックモード( 'dart --checked file.dart')で実行している場合にのみ発生します。 IntelliJ WebStormは、ファイルを実行するときにデフォルトでこれを行います。 – filiph

答えて

4

TL; DR:どこでも

使用import 'package:...'、独自のパッケージからファイルをインポートしても。

説明:

2つのURL(file:///...package:...)は等価であるが、ダートはそれを知る方法がありません。相対パスとpackage:スキームを介してソースをインポートすると、このエラーが発生します。

この問題を解決するには、独自のパッケージでファイルをインポートする方法が一貫していることを確認してください。

間違っ:ファイルfoo.dartで

:ファイルbar.dartで

import '../path/to/a.dart'; 

import 'package:my_package/a.dart'; 

これはエラーになります。

正しい:ファイルfoo.dartで

:ファイルbar.dartで

import 'package:my_package/a.dart'; 

import 'package:my_package/a.dart'; 

これは、罰金になります。

+0

'import '../path/to/a.dart';'は、 'lib'や' web'やそれに類するトップレベルディレクトリから手を出さない限り問題を引き起こしません –

関連する問題