show
場合:
import 'dart:async' show Stream;
Stream
この方法では、からのみクラスをインポートするため、それ以外のdart:async
別のクラスを使用しようとすると、エラーがスローされます。dart:async
Stream
void main() {
List data = [1, 2, 3];
Stream stream = new Stream.fromIterable(data); // doable
StreamController controller = new StreamController(); // not doable
// because you only show Stream
}
as
場合:
import 'dart:async' as async;
このようにして、すべてのクラスをインポートし、キーワードdart:async
で名前空間を付けます。async
void main() {
async.StreamController controller = new async.StreamController(); // doable
List data = [1, 2, 3];
Stream stream = new Stream.fromIterable(data); // not doable
// because you namespaced it with 'async'
}
as
通常、インポートされたライブラリに競合するクラスがある場合に使用されます。たとえば、という名前のクラスを含むライブラリ 'my_library.dart' があり、class fromStream
も使用したい場合などです。Stream
dart:async
import 'dart:async';
import 'my_library.dart';
void main() {
Stream stream = new Stream.fromIterable([1, 2]);
}
この方法では、この Stream クラスが非同期ライブラリからのものなのか、独自のライブラリからのものなのかわかりません。使用する必要がありますas
:
import 'dart:async';
import 'my_library.dart' as myLib;
void main() {
Stream stream = new Stream.fromIterable([1, 2]); // from async
myLib.Stream myCustomStream = new myLib.Stream(); // from your library
}
の場合show
、これは特定のクラスのみが必要であることがわかっている場合に使用されると思います。インポートしたライブラリに競合するクラスがある場合にも使用できます。CustomStream
独自のライブラリにandという名前のクラスがありStream
、 も使用したいとしますdart:async
が、この場合はCustomStream
独自のライブラリからのみ必要です。
import 'dart:async';
import 'my_library.dart';
void main() {
Stream stream = new Stream.fromIterable([1, 2]); // not doable
// we don't know whether Stream
// is from async lib ir your own
CustomStream customStream = new CustomStream();// doable
}
いくつかの回避策:
import 'dart:async';
import 'my_library.dart' show CustomStream;
void main() {
Stream stream = new Stream.fromIterable([1, 2]); // doable, since we only import Stream
// async lib
CustomStream customStream = new CustomStream();// doable
}