::
demoVariables(){
// - todo son objetos en Dart
// - las variables contienen referencias a objetos
// - las variables solo pueden referirse a variables del tipo concordante
print('hola mundo');
int n= 7;
double x =0.05;
String s = 'hola';
String s2="hola3";
bool r = false;
print(s2);
}
demoVarDynamicNum(){
// - Si declaramos con var infiere el tipo de dato que le asignemos al declararla
// - dynamic es un tipo especial para "cualquier cosa"
// - num es el tipo base de double e int
var a =7.7;
dynamic c;
c= 1234;
c="soy c";
// a= "hola soy a";
num x=6;
num y = a;
print (a);
print (c);
print (x);
print (y);
}
demoConversion(){
//conversión entero -> String con el metodo toString
int a =5;
double b =3.141592;
String sa= a.toString();
String sb= b.toString();
String sc = 56562.toString();
print(sa);
print(sb);
print(sc);
//alternativa sin usar el metodo toString
String sa2= '$a';
print(sa2);
// conversión de string a numero con el metodo parse
String sd ='954';
String sf='3.1416';
// print(sf+3);
int num = int.parse(sd);
double num2 = double.parse(sf);
print(num+3);
print(num2*6);
}
interpolacionStrings(){
// interpolación de strings
num euros= 45.52;
print(euros);
String mensaje='Tengo $euros euros';
String mensaje2 ='Si me dieras 12 euros más tendía ${euros + 12} euros';
print(mensaje);
print(mensaje2);
}
stringsLargos(){
// literales de strings seguidos
var texto='en un lugar de la mancha '
'de cuyo nombre no quiero acordarme '
'vivía un hidalgo ..';
//literals con lineas por el medio
var texto2="""
soy un texto
de varias líneas
respeta los saltos de
linea
""";
print (texto);
print (texto2);
// Concatenar strings con +
var nombre = 'james ' + 'bond';
print(nombre);
}
condicionesBoleanas(){
var a ;
if(a != null){
print('a no es null');
};
var s='';
if(s.isEmpty){
print('s está vacio');
};
}
demoListas(){
List<int> primos =[2,3,4,55,33];
List<dynamic> cosas =[2,true,'hola',[],3.1416,null];
var cosas2=[3,false,'adios'];
print(primos);
print(cosas);
var nums=[1,2,3];
nums.add(4);
cosas2.add(7);
print(nums);
print(cosas2);
print(nums.length);
print(primos.length);
print(cosas.length);
//cómo especificar el tipo de un literal cuano no hay una variable
//indicamos que es string ya que dart no puede inferrir el tpo de una lista vacia
var palabras = <String>[];
palabras.add('hola');
palabras.add('jose');
print(palabras);
//acceder a los elementos de la lista
print(primos[2]); //posicion 3
print(primos[primos.length-1]); //último elemento de la lista
print(cosas[2]);
print (cosas2[2]);
}
coleccionesIfFor(){
//añadir un elemento a la lista de manera condicional
bool larga = true;
var Lista = [
1,
2,
3,
if(larga) 4, //el elementop se pone o no dependiendo del boleano
5,
6
];
print(Lista);
//rellenar una lista con un for
int max =10;
var M =[ for( int i=1; i<=max; i++)i];
var K =[3, for( int i=1; i<=max; i++)i, 3];
print(M);
print(K);
}
demoSets(){
// los sets son un tipo de listas con elementos que no se repiten
// los sets están optimzados para busquedas
Set<int> primos ={2,3,5,7,11,13};
Set<dynamic> cosas ={null, 2, 'hola', true, [],[2]};
var numeros ={1,2,3,4}; //conjunto de numeros
var map_vacio ={}; // esto es un map!!!!, no un conjunto vacio
var conjuntoStringsVacio = <String> {}; // esto es un Set<String>
// tanto Map como Set utilizan llaves, asi que así se desace la ambiguedad
print(primos);
print(cosas);
print(numeros);
numeros.add(5);
numeros.addAll({6,7,8,9});
numeros.addAll([10,11,12]);
//busquedas en los Sets
if(numeros.contains(7)){
print('tiene el 7 !!!!!${numeros.length}');
};
print(numeros);
print(numeros.length);
print('Numero de elementos en el set: ${numeros.length}');
}
demoMaps(){
var M ={
'nombre': 'James',
'apellido':'Bond',
'edad':30
};
//forzamos a un map de int y strings
Map<int,String> numeros ={
1:'uno',
2:'dos',
3:'tres',
};
//mapa dynamic dynamic
Map<dynamic, dynamic> cosas ={
1:'uno',
'dos':2,
true:'verdad',
'falso':false
};
//añadir elementos al mapa
numeros[4]='cuatro';
print(M);
print(numeros);
print(numeros[3]);
print(cosas);
print(cosas.length);
}
void main() {
}