Las funciones en Dart son bloques de código reutilizables que realizan tareas específicas. Son fundamentales para organizar y estructurar tu código en Flutter.
Una función es un conjunto de instrucciones que se ejecutan cuando la llamas. Puede recibir datos (parámetros) y devolver un resultado.
// Estructura básica de una función
TipoRetorno nombreFuncion(parametros) {
// Código a ejecutar
return valor; // Si devuelve algo
} Las funciones sin retorno no devuelven ningún valor. Se utilizan para realizar acciones, como imprimir mensajes o modificar variables.
void saludar() {
print('¡Hola mundo!');
}
void main() {
saludar(); // Llama la función
// Salida: ¡Hola mundo!
} Las funciones con parámetros permiten pasar datos a la función para su uso dentro del bloque de código.
void saludarPersona(String nombre) {
print('Hola, $nombre');
}
void main() {
saludarPersona('Ana');
saludarPersona('Carlos');
// Salida:
// Hola, Ana
// Hola, Carlos
} Las funciones con retorno permiten devolver un valor al llamador. Esto es útil para obtener resultados de cálculos o operaciones.
int sumar(int a, int b) {
return a + b;
}
void main() {
int resultado = sumar(5, 3);
print('La suma es: $resultado');
// Salida: La suma es: 8
} Las funciones con retorno de texto permiten devolver una cadena de caracteres. Esto es útil para generar mensajes, nombres o cualquier otro tipo de texto dinámico.
String crearSaludo(String nombre) {
return 'Bienvenido, $nombre!';
}
void main() {
String mensaje = crearSaludo('María');
print(mensaje);
// Salida: Bienvenido, María!
} Las funciones con múltiples parámetros permiten pasar más de un valor a la función. Esto es útil para realizar cálculos o operaciones que dependen de varios factores.
double calcularArea(double largo, double ancho) {
return largo * ancho;
}
void main() {
double area = calcularArea(5.0, 3.0);
print('El área es: $area m²');
// Salida: El área es: 15.0 m²
} Las funciones con parámetros opcionales permiten pasar valores opcionales a la función. Esto es útil cuando no siempre se necesitan todos los parámetros.
String presentarse(String nombre, [int? edad]) {
if (edad != null) {
return 'Soy $nombre y tengo $edad años';
}
return 'Soy $nombre';
}
void main() {
print(presentarse('Juan'));
print(presentarse('Ana', 25));
// Salida:
// Soy Juan
// Soy Ana y tengo 25 años
} Las funciones con parámetros con nombre permiten pasar valores a los parámetros por su nombre, lo que hace el código más legible y flexible.
String crearPerfil({required String nombre, String? ciudad}) {
if (ciudad != null) {
return '$nombre vive en $ciudad';
}
return '$nombre no especificó ciudad';
}
void main() {
print(crearPerfil(nombre: 'Luis'));
print(crearPerfil(nombre: 'Sara', ciudad: 'Madrid'));
// Salida:
// Luis no especificó ciudad
// Sara vive en Madrid
} Las funciones con retorno booleano permiten devolver un valor verdadero o falso. Esto es útil para realizar comprobaciones o validaciones.
bool esMayorDeEdad(int edad) {
return edad >= 18;
}
void main() {
bool resultado1 = esMayorDeEdad(20);
bool resultado2 = esMayorDeEdad(15);
print('20 años: ${resultado1 ? 'Mayor' : 'Menor'}');
print('15 años: ${resultado2 ? 'Mayor' : 'Menor'}');
// Salida:
// 20 años: Mayor
// 15 años: Menor
} Las funciones arrow (función flecha) permiten escribir funciones más concisas, especialmente para funciones simples de una línea.
// Función tradicional
int multiplicar(int a, int b) {
return a * b;
}
// Función arrow (más corta)
int multiplicarArrow(int a, int b) => a * b;
void main() {
// Llamadas a las funciones
print(multiplicar(4, 5)); // 20
print(multiplicarArrow(4, 5)); // 20
} Las funciones pueden ser utilizadas para crear componentes reutilizables y mejorar la organización del código.
import 'package:flutter/material.dart';
class MiApp extends StatelessWidget {
// Función que crea un botón personalizado
Widget crearBoton(String texto, VoidCallback accion) {
return ElevatedButton(
onPressed: accion,
child: Text(texto),
);
}
// Función que muestra un mensaje
void mostrarMensaje(BuildContext context, String mensaje) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(mensaje)),
);
}
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Funciones en Flutter')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
crearBoton('Saludar', () {
mostrarMensaje(context, '¡Hola desde una función!');
}),
SizedBox(height: 20),
crearBoton('Despedirse', () {
mostrarMensaje(context, '¡Hasta luego!');
}),
],
),
),
);
}
} void cuando no devuelvas nadareturn en funciones que devuelven valoresvoid: Para acciones que no devuelven nadaString: Para generar textoint/double: Para cálculos numéricosbool: Para validacionesWidget: Para crear componentes de UI en FlutterLas funciones son la base de la programación en Dart. Dominarlas te permitirá escribir código más limpio, reutilizable y fácil de mantener en tus apps de Flutter.