show
przypadek:
import 'dart:async' show Stream;
ten sposób można importować tylko Stream
klasę z dart:async
, więc jeśli spróbujesz użyć innej klasy z dart:async
inny niż Stream
to rzuci błąd.
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
przypadek:
import 'dart:async' as async;
ten sposób można zaimportować wszystkie klasy z dart:async
i przestrzeni nazw go async
hasła.
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
jest zwykle używany, gdy istnieje konflikt klas w importowanej biblioteki, na przykład, jeśli masz biblioteki „my_library.dart”, który zawiera klasę o nazwie Stream
a także skorzystać z dart:async
Stream
klasę, a następnie:
import 'dart:async';
import 'my_library.dart';
void main() {
Stream stream = new Stream.fromIterable([1, 2]);
}
ten sposób, że nie wiemy, czy ta klasa Stream z biblioteki asynchronicznym lub własnej biblioteki. Musimy wykorzystać 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
}
Dla show
, myślę, że ten jest stosowany, gdy wiemy, że musimy tylko konkretną klasę. Może być również używany, gdy w zaimportowanej bibliotece znajdują się klasy będące w konflikcie. Załóżmy, że we własnej bibliotece masz klasę o nazwie CustomStream
i Stream
, ale chcesz też użyć dart:async
, ale w tym przypadku potrzebujesz tylko CustomStream
z własnej biblioteki.
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
}
Niektóre obejście:
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
}