We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF or read online on Scribd
You are on page 1/ 7
Dart
Guia de atajos
Interpolacién de Strings
String Resultado
"${3 + 2)' ey
$word -ouppercase()* | 'WORD*
El valor de
“smyobject* myObject .tostring()
Variables con posibilidad nula:
= MULL; 1/ varie on mati-eefe Darts
Amt? aj // 1 vaior inietal de « ee mutt,
Operadores de valores nulos
int? a; // = null
a7 3;
print(a); // <-- Imprime 3
a 272 5;
print(a); // <-- AGn imprime 3
print(1 ?? 3); // <-- Imprime 1.
print (null ?? 12); // <- :mprine 12.
Acceso a propiedades opcionales
myObject?.someProperty
// con ternario
(ayobject I= null)
? myObject.someProperty
null;
myObject?. someProperty?.somelethod() ;
Tipos de colecciones
Inferitip deforma automatica
final avievotserings = (Yone', “to's ‘thowe'
ene ae eee Tay
renter eee
=
h
By
{dev/talles}
Pero se puede especficar de manera manual
final alistofints = (17
final asetofints = {};
final aliapofintTepouble = ();
‘También apica si aplicamos un sta de una clase base,
10s valores iternos pueden ser de subclases.
final abistofBasetype =
[SubType(), SubType() 17
Sintaxis de Flecha
Es basicamente una funcién que inmediatamente.
retorna un valor.
/// Funcién normal
bool hasEmpty
aListofstrings-any((s) {
return s.isEmpty;
ye
/// Puncién de flecha
bool hasEmpty =
aListofstrings.any((s) => s.isEmpty);
Cascades
/// Sin cascadas
myObject..someMethod( ) ;
myObject. someotherMethod();
//1 con cascadas
nyobject
someMethod ()
someotherMethod ( )
/// Se puede con propiedades
var button = queryselector("#eonfirn');
Dutton? volasses.add(* important"):
button? sonlick-Listen((e) =>
Window alert (*Contizmed!'));
button? secrolliIntoView();
queryselector( '#confirn')
sssorolltntoview()
Cursos y cupones en fetnando-herrera.comDart
Guia de atajos
Getters y Setters
Los guiones bajos en Dart, son indicadores de
métodos y propiedades privadas de clase y médulo.
class MyClass {
int _aProperty
int get aProperty => _aProperty;
set aProperty(int value) {
Af (value >= 0) {
_aProperty = value;
}
>
»
‘También se puede usar los getters para definir una
propiedad computada,
class Myclass (
final Lisecine> values = (1
void addvalue(int value) ¢
1) 2 compsted
ine get count {
return values.length;
>
>
Funciones, métodos y argumentos
Obiigatorios
int sumUp(int a, int b, int c) (
return a+b +
?
“
int total
sumup(1,
Opcionales:
Ant sunprorive,
int a, [int? by int? ce, int? dy int? e1
rt
int sum = a;
Sf (b l= null) sum
Af (e t null) sum += 6
Af (d t= mull) sum += dj
Af (e t= null) sum += @;
>
impor ively 2)2
Ant otherTotal = sunbproPive(1, 2, 3, 4, 5)7
Dart getting started docs:
{dev/talles}
"ardmetros con nombre
Los parametros con nombre son siempre opcionales a
‘menos que estén marcados con la palabra reservada
required
void printwane(
String firstilane, String lastilame,
(String? middlewane }) (
rine ‘Stsewtvane S(aiddietane 72 °°) lastsane’);
>
printiane( ‘Dash’, 'Dartisan’
rineNane("John', “smith’, alddievane: ‘who’ )1
// 198 paxsnetros con nonbre pueden ser
colocades en cualquier
rinelane( John’, alddletanes ‘Who, “Saich’)y
‘Si un valor opcional quiere ser manejado sin
‘aracoces de valves nos, 28 pind establecae in
valor por defecto
void printtane({
String middleNanel=}) <
print (‘$middleName');
y
Excepciones
‘throw Exception(‘00oPS!1!.");
throw ‘Waaaaaaah!";
‘Se puede usar try, on y catch para manejarias,
ery {
breedMoreLlamas();
} on OutofLlamasException {
// Una excepeién especifica
buyMoreLlanas ();
} on Exception catch (e) {
// Cualquier excepcién
print (‘Unknown exception: Se'):
} catch (0) ¢
// Xo espacsficado, manoja cualquiera
print('Something really unknewn: ge");
‘Sino se puede manejar en su totalided, se puede
ppropagar la excepci6n al padre
ty {
Eeeeieretioeet
} eaten (0) ¢
Print(’T vas just trying to Bre
)
Cursos y cupones en fernando-herrera.comDart
Guia de atajos
Después de ejecutar un try, catch, u on, siesta
especificado el finaly, se ejecutard
try {
breedtoreLlamas();
} catch (e) {
// +. manejar 1a excepcién ...
) finally {
cleanblanastalls(); 7
>
Operador this
Usar e! perador this en Dart, en muchas lugares es
cpcional yen otros oblgatorio, la mejor forma de
dominar esto es practicando.
En el constructor para asignacién de propiedades
lass mycolor ¢
Ane green;
Nycolor(this.red, this green, this.blve);
>
final color = Mycoler(80, 80, 128);
Esta técnica también funciona para parémetros con
nombre, propiedades se vuelven los nombres de los
parametros.
class Mycolor
mycoler({
required this.red,
required this gr
required this.blue
)
#inal color = Mycolor(
80, biuer 80
Listas de inicializacién
Point.fronJson(Map json)
fx = Jeont "x It,
¥ = Jsont"y")I {
print(‘th Point.fromzson(): ($x, $¥)°)7
>
{dev/talles}
‘Adicionalmente que se pueden colocar aserciones y
reglas para que en desarrollo se cumplan las normas
establecidas.
Nontlegativeroint (this.x, this.y)
‘assert(x >= 0),
assert(y >= 0) {
print(*Punto no negative: (5x, $y)");
?
Constructores con nombre
Esto permite a las clases tener miltples constructores.
class Point {
double x, yz
Point (this.x, this.y);
Point .origin()
°,
0;
final myPoint = Point.origin();
Constructores Factory
square extends shape ()
eneeleeeieferteecelsteret |
clase shape {
shape)?
factory shape. froarypetiana(string typewame) {
Sf (typotiane == “square") retarn Square(};
Sf (typatiane == ‘oirole") return cizele(};
throw ArgunentEerer ‘Unrecognized
seypetiane")
+
,
Redireccionando constructores
‘A veces, el inioo propésito del constructor es
redireccionar a otro constructor
Ateemanite(s
Aavonobitertybela(bering make, SteSng model)
Aivenobitestancyayeriet)
;
Cursos y cupones en fetnando-herrera.comDart
Guia de atajos
Constructores constantes
Sila clase produce objetos que nunca cambiarén,
puedes crear esos objetos como constantes de tiempo
de compiiacién y asegurarte que todas las instancias
seran finales (finals)
class InmutablePoint (
static const InmitablePoint origin =
ammutableroint(0, 0}
final int x
final int yy
const TemutablePoint (this
x, this.y)s
€structuras de Colecciones
Listas
Es una coleccién de objetos con un largo e indice
final listofNumbers = [1, 2, 3];
final vehicles = [
ican
*Boat',
“plane',
ip
var constantList = const (1, 2, 3];
// constantList{1] = 1;
1/ B28 Lines dars error porque es constants
Operador spread (...)
final list = [1, 2, 31;
final list2 = (0, ...list);
U1 0,3,2,3
Spread con null-aware operator (...? ), en caso
de que la lista pueda ser nula
final list2 = (0, ...?list);
En Dart es posible colocar ify for dentro dela creacién
dela lista
var nav = ['Home', ‘Furniture’,
"Plants', if (promoActive) ‘Outlet! ];
var listofints = [1, 2, 317
var listofstrings = [
'#0', for (var i in listofints)
1954"
i
Dart getting started docs:
{dev/talles}
Sets
Un set es una coleccién no ordenada de elementos
ricos,
var halogens = {'fluorine’,
‘chlorine’, "bromine", ‘iodine’,
‘astatine'};
Set halogens = {'fluorine',
‘chlorine’, ‘bromine’, ‘iodine’,
‘astatine'};
var names = {};
Métodos comunes de los Sets
var elements = };
elements. add(' fluorine’);
elements.addAll (halogens);
elements.length; // 5 (ya existia)
final constantset
‘fluorine’,
‘chlorine’,
‘bromine’,
‘iodine’,
‘astatine',
ye
// constantSet.add('helium');
// Error, porque es constante
const {
Maps
Es un objeto que asocia pares de valores, (key-value
pairs), as laves y valores pueden ser de cualquier tipo
de dato.
var gifts = {
// Key: Value
‘first’: ‘partridge’,
‘second’: 'turtledoves
‘£ifth': ‘golden rings’
ye
var nobleGases = {
2: ‘helium’,
10: ‘neon’,
18: ‘argon’,
ba
Cursos y cupones en fetnando-herrera.comDart
Guia de atajos
Puedes usar el constructor de mapas y
genéricos para establecer su apariencia.
var gifts = Map();
gifts['first'] = ‘partridge’;
gifte['second’] = ‘turtledoves’
gifte['fifth’] = ‘golden rings’;
var nobleGases = Map();
noblevases|2) = “helium;
noblecases[10] = ‘neon’
nobleGases[18] = ‘argon’;
Determinar el largo del map
var gifts = {‘first': ‘partridge’ };
gifts['fourth'] = ‘calling birds’;
gifts.length; // 2
final constantMap = const {
u
‘argon’,
// constantMap[2]
// Brror debido a que es constante
‘Helium’;
Iterable
La diferencia con una lista, es que con el iterable, tu no
puedes garantizar que leer elementos con indice sera
eficiente
Iterable iterable = (1, 2, 317
iterable[1]; // No HACER
// veer esto
int value = iterable.elementat(1);
Los iterables tienen su propio set de métodos que
ppermiten barrer y controlarlo.
string element =
iterable.firstWhere(
(element) => element.length > 5
iF
{dev/talles}
Operadores
own | Oprder a
stp went oe ot | ee
vinawor | ut
worsgeo | as wa
Programacion Asincrona
Principalmente cuando hablamos de programacion
asincrona estaremas nos referremos a funcones,
‘métodos u objetos que retornan Futures y Streams.
‘Tareas comunes asincronas
+ Leer data sobre internet,
+ Escribir sobre base de datos,
+ Leer y/o eseribic un archivo.
(Cursos y cupones en fetnando-hertera.comDart
Guia de atajos
€stados del Future:
Estado Descripcién
completed Elecutando el Future y
Uncompleted esperando un resultado.
eae El resultado del Future fue
exitoso.
Donde @! value, es el valor
Completing with especificado por ol Future, si
a value no hay nada definido, sera
dynamic.
Completing EI Futuro allo, yes disparada
with an error _[aclausula catch
Si el Future es exitoso, se ejecuta el THEN y si fall
CATCH es disparaco.
myFunc()
«then (processvalue)
scatchError(handleError);
Async - Await
La palabra asyne es usada para transforma une
funcidn o métogo en un Future, en pocas palabras es
una forma corta de convert Ia funcin tracicional en
tna funeiénasinerona
void main() BBYRE { -+- }
RMI ein() aryne ¢ ++
La palabra await, es usada para esperar el resultado
de un Future como si fuera una tarea sincrona,
print (MEM createordertessage());
La palabra await siempre debe de ser usada dentro de
funciones asineronas, sino, no podra ser usada,
createordernessage() HUE {
var order Fetchuserorder()
return 'Your order ist forder'y
,
Streams
* Los Streams proporcionan una secuencia
‘erona de datas.
Las secuencias de datos incluyen eventos
‘generados por el usuario y lectura de datos de
archivos.
+ Puede procesar una transmisién usando await 0
listen() desde el Stream API.
Dart getting started docs:
{dev/talles}
Los Streams proporcionan una forma de responder,
alos errores.
+ Hay dos tipos de transmisiones:
+ Suscripcién énica
Broadcast (miiiples listeners)
Async’ y Yield
Asi como el asyne, transforma una funcién 0 método
fen una funci asinerona que regresa un Futur, et
‘async transforma el etorna aun stream, y en lugar
de un return, se usa yield para emitir un valor de!
Stream, (ovat
Streancstring> Lineo(streancstring> source)
async {
var partial = '';
avait for (final chunk in source) {
yield ine;
>
,
Af (partial-dowotempty) yield partial;
,
Stream transformations
‘Son métodos que ya vienen incluidos en los streams y
permiten transformar las emisiones.
Las transformaciones mas comunes son:
‘map), where(), expand), y take)
‘Streancine>.periodie(
const Duration(seconds: 1),
() => x)
seake(15)3
(Otros ejemplos:
// Filtrar emisiones
swhere((int x) => x.isEven)
// vuplicar cada emisién
vexpand((var x) => (x, x])
// Se detiene a las 5 emisiones
stake(5)
Mas sobre Futures y Streams:
Programacié asinorona, futures. async. await - Dare
(Greando Streams - Dart.dev
y cupones en fernando-herrera.comDart
Guia de atajos
Glosario de términos
Null-Safe
Es un esténdar hoy en dia que se use la versién de
Dart que ayuda a determinar si una variable puede ser
nula ono.
sound null Safety - Mull Safety
Esto es una combinacién ene Flutter y Dat, que dice
ave tu aplcacin tiene la verfacion de nulos
activada
Const - Constantes
Es un espacio en memoria que aloja un valor que no
camara desde su momento de compilacién (Build
time de la aplicacién final)
Final - Variables finales
‘Se asigna un valor (en tiempo de ejecucién), y ese
valor no cambiard desde esa primera asignacion;
Late - Inicializaci6n tardia
Es conocido como inicalizacién tardia, en otras
palabras, late permite decirle a Dart que esa variable
tendrd un valor al momento de usarse, es
responsabilidad del desartollador asegurar que eso se
cumpla.
Void
Void es una palabra reservada para indicar que el
‘método 0 funcién no retomaré ningin valor, cualquier
intento de retorno marcara error.
Iterable
Es una coleccién de elementos que se puede leer de
‘manera secuencial
Es un objeto que puede contar elementos que se
encuentren dentro de él, como listas, sets, areglos,
etc,
Future
Un Future representa principalmente el resultado de
tna operacién asincrona. Es una pramesa de que
ppronto tendras un valor. La promesa puede falla y hay
ue manejar la excepcién. Los futures son un acuerdo
de que en el futuro tenarés un valor para ser usado.
{dev/talles}
Streams
Los streams pueden ser retornados y usados como
bjetos, funciones 0 métodos, son un flujo de
Informacién que puede estar emitiendo valores
pperiédicamente, una tnica vez, o nunca.
Un Stream podria verse como una manguera
cconectada a un tubo de agua, cuando abres el tubo e!
agua fluye, cada gota de agua seria una emisin del
Stream, la manguera puede nunca cerrarse, cerrarse 0
‘nunca abrirse.
Libreria - Library
Le permiten dividir algiin fragmento de eédigo 0
‘médulo en varios archivos y compartros con otros
desartoladores
Otro benefcio de las bibliotecas, ademas de la
estructuracién de! cédigo, es que permiten la
lencapeulacién de bibliotecae (determinar qué ee
visible 0 no para otras bibliotecas). Ejemplo:
import ‘dartimath’ show Point;
Paquetes - Packages
Cada proyecto Dart tiene un paquete Dart
correspondiente.
El principal beneficio de trabajar con paquetes es que
el cédigo que contienen se puede reutlizar y
‘compartir. El envio y extracci6n de dependencias al
sitio web pub dartiang.org y al repositorio se realiza
mediante la herramienta pub.
En Dart, hay dos tipos de packages: Application
Packages y Library Packages.
PUB
Pub es el administrador de paquetes para el lengusle
de programacién Dart, que contiene bibliotecas y
paquetes reutlizables para Flutter y programas