tutorial online lenguaje descargar change dart dart-editor

dart - online - ¿Cuál es la diferencia entre "mostrar" y "como" en una declaración de importación?



descargar dart sdk (2)

¿Cuál es la diferencia entre show y as en una declaración de importación?

Por ejemplo, ¿cuál es la diferencia entre

import ''dart:convert'' show JSON;

y

import ''package:google_maps/google_maps.dart'' as GoogleMap;

¿Cuándo uso show y cuándo debo usar as ?

Si cambio para show GoogleMap todas las referencias a objetos de GoogleMap (por ejemplo, GoogleMap.LatLng ) se informarán como no definidas.


vitrina:

import ''dart:async'' show Stream;

De esta manera, solo importa la clase Stream desde dart:async , por lo que si intenta utilizar otra clase desde dart:async no sea Stream se generará un error.

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 caso

import ''dart:async'' as async;

De esta manera usted importa todas las clases de dart:async y las coloca con una palabra clave 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 se usa generalmente cuando hay clases en conflicto en su biblioteca importada, por ejemplo, si tiene una biblioteca ''my_library.dart'' que contiene una clase llamada Stream y también quiere usar la clase Stream desde dart:async y luego:

import ''dart:async''; import ''my_library.dart''; void main() { Stream stream = new Stream.fromIterable([1, 2]); }

De esta manera, no sabemos si esta clase de Stream es de una biblioteca asíncrona o de su propia biblioteca. Tenemos que utilizar 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 }

Para el show , supongo que esto se usa cuando sabemos que solo necesitamos una clase específica. También se puede usar cuando hay clases en conflicto en su biblioteca importada. Digamos que en su propia biblioteca tiene una clase llamada CustomStream y Stream y también desea usar dart:async , pero en este caso solo necesita CustomStream de su propia biblioteca.

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 }

Algunas soluciones:

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 }


as show y se show dos conceptos diferentes.

Con as le está dando un nombre a la biblioteca importada. Generalmente se hace para evitar que una biblioteca contamine su espacio de nombres si tiene muchas funciones globales. Si usa as puede acceder a todas las funciones y clases de dicha biblioteca, acceda a ellas como lo hizo en su ejemplo: GoogleMap.LatLng .

Con show (y hide ) puede elegir las clases específicas que desea que sean visibles en su aplicación. Para tu ejemplo sería:

import ''package:google_maps/google_maps.dart'' show LatLng;

Con esto usted podría acceder a LatLng pero nada más desde esa biblioteca. Lo contrario de esto es:

import ''package:google_maps/google_maps.dart'' hide LatLng;

Con esto podrás acceder a todo desde esa biblioteca, excepto a LatLng .

Si quieres usar varias clases con el mismo nombre, necesitarías usar as . También puedes combinar ambos enfoques:

import ''package:google_maps/google_maps.dart'' as GoogleMap show LatLng;