Skip to content

Instantly share code, notes, and snippets.

View devjaime's full-sized avatar
😉
My job is to make your experience the best

Jaime Hernández devjaime

😉
My job is to make your experience the best
View GitHub Profile
@devjaime
devjaime / .dart
Created March 21, 2021 04:43
Aquí hay un programa simple que muestra cómo imprimir un árbol de Navidad
void main() {
for (var i = 1; i <= 5; i++) {
print('🎄' * i);
}
}
// Output:
// 🎄
// 🎄🎄
// 🎄🎄🎄
// 🎄🎄🎄🎄
@devjaime
devjaime / .dart
Created March 21, 2021 04:45
Considere esta clase de API simulada que nos dice los últimos números de casos de COVID:
// Mock API class
class CovidAPI {
Future<int> getCases() => Future.value(1000);
Future<int> getRecovered() => Future.value(100);
Future<int> getDeaths() => Future.value(10);
}
@devjaime
devjaime / .dart
Created March 21, 2021 04:47
Para ejecutar todos estos futuros al mismo tiempo, utilice Future.wait. Esto toma una lista o futuros y devuelve un futuro de listas
final api = CovidAPI();
final values = await Future.wait([
api.getCases(),
api.getRecovered(),
api.getDeaths(),
]);
print(values); // [1000, 100, 10]
@devjaime
devjaime / .dart
Last active March 21, 2021 04:49
Aquí hay una PasswordValidatorclase de ejemplo
class PasswordValidator {
bool call(String password) {
return password.length > 10;
}
}
@devjaime
devjaime / .dart
Last active March 21, 2021 04:52
Debido a que el método tiene un nombre call, podemos declarar una instancia de clase y usarla como si fuera un método
final validator = PasswordValidator();
//puede usarlo así:
validator('test');
validator('test1234');
// no es necesario usarlo así:
validator.call('not-so-frozen-arctic');
@devjaime
devjaime / .dart
Created March 21, 2021 04:54
Supongamos que tenemos una clase de widget personalizada que debería llamar a una onDragCompleteddevolución de llamada cuando se produce un evento determinado
class CustomDraggable extends StatelessWidget {
const CustomDraggable({Key key, this.onDragCompleted}) : super(key: key);
final VoidCallback? onDragCompleted;
void _dragComplete() {
// TODO: Implement me
}
@override
Widget build(BuildContext context) {/*...*/}
}
@devjaime
devjaime / .dart
Created March 21, 2021 04:55
forma más sencilla (tenga en cuenta el uso de ?.):
Future<void> _dragComplete() async {
onDragCompleted?.call();
}
@devjaime
devjaime / .dart
Created March 21, 2021 04:58
Aquí hay un código que define una función anónima y la asigna a una variable sayHi (di hola)
void main() {
final sayHi = (name) => 'Hi, $name';
welcome(sayHi, 'Jaime');
}
void welcome(String Function(String) greet,
String name) {
print(greet(name));
print('Bienvenido al curso');
}
@devjaime
devjaime / .dart
Created March 21, 2021 05:03
Por ejemplo, aquí hay una función simple para calcular el cuadrado de un número
int square(int value) {
// solo un simple ejemplo
// podría ser una función compleja con mucho código
return value * value;
}
// Dada una lista de valores, podemos mapearlos para obtener los cuadrados:
const values = [1, 2, 3];
values.map(square).toList();
@devjaime
devjaime / .dart
Created March 21, 2021 05:06
Collection-if y spreads son muy útiles cuando escribe su interfaz de usuario como código
const restaurant = {
'name' : 'Pizza Mario',
'cuisine': 'Italian',
if (addRatings) ...{
'avgRating': 4.3,
'numRatings': 5,
}
};