En aquest tema, aprendrem sobre les funcions i els mètodes en Dart, que són fonamentals per estructurar i organitzar el codi de manera eficient. Les funcions i els mètodes ens permeten encapsular blocs de codi que poden ser reutilitzats i cridats des de diferents parts del programa.
Què és una Funció?
Una funció és un bloc de codi que realitza una tasca específica i pot ser cridat des de qualsevol part del programa. Les funcions poden rebre paràmetres i retornar valors.
Definició d'una Funció
La sintaxi bàsica per definir una funció en Dart és la següent:
Exemple de Funció
// Funció que suma dos nombres i retorna el resultat int sumar(int a, int b) { return a + b; } void main() { int resultat = sumar(3, 4); print(resultat); // Sortida: 7 }
Explicació
int sumar(int a, int b)
: Aquesta és la capçalera de la funció.int
és el tipus de retorn,sumar
és el nom de la funció, iint a, int b
són els paràmetres.return a + b;
: Aquesta línia retorna la suma dels dos paràmetres.
Tipus de Funcions
Funcions sense Retorn (void)
Les funcions que no retornen cap valor es defineixen amb el tipus de retorn void
.
Funcions amb Paràmetres Opcional
Dart permet definir paràmetres opcionals utilitzant claudàtors []
.
void imprimirNom(String nom, [String cognom]) { if (cognom != null) { print('$nom $cognom'); } else { print(nom); } } void main() { imprimirNom('Joan'); // Sortida: Joan imprimirNom('Joan', 'Pérez'); // Sortida: Joan Pérez }
Funcions amb Paràmetres Nominals
Els paràmetres nominals es defineixen utilitzant claus {}
.
void imprimirNom({String nom, String cognom}) { print('$nom $cognom'); } void main() { imprimirNom(nom: 'Joan', cognom: 'Pérez'); // Sortida: Joan Pérez }
Mètodes
Els mètodes són funcions que estan associades a una classe. Es defineixen dins de la classe i poden accedir als atributs i altres mètodes de la classe.
Definició d'un Mètode
class Persona { String nom; int edat; // Constructor Persona(this.nom, this.edat); // Mètode void saludar() { print('Hola, em dic $nom i tinc $edat anys.'); } } void main() { Persona persona = Persona('Joan', 30); persona.saludar(); // Sortida: Hola, em dic Joan i tinc 30 anys. }
Explicació
class Persona
: Defineix una classe anomenadaPersona
.String nom; int edat;
: Atributs de la classe.Persona(this.nom, this.edat);
: Constructor de la classe.void saludar() { ... }
: Mètode de la classe que imprimeix un missatge de salutació.
Exercicis Pràctics
Exercici 1: Funció de Multiplicació
Escriu una funció anomenada multiplicar
que prengui dos nombres com a paràmetres i retorni el seu producte.
int multiplicar(int a, int b) { return a * b; } void main() { int resultat = multiplicar(3, 4); print(resultat); // Sortida: 12 }
Exercici 2: Mètode de la Classe Cotxe
Defineix una classe Cotxe
amb atributs marca
i model
. Afegeix un mètode descripcio
que imprimeixi la marca i el model del cotxe.
class Cotxe { String marca; String model; Cotxe(this.marca, this.model); void descripcio() { print('Cotxe: $marca $model'); } } void main() { Cotxe cotxe = Cotxe('Toyota', 'Corolla'); cotxe.descripcio(); // Sortida: Cotxe: Toyota Corolla }
Resum
En aquesta secció, hem après sobre les funcions i els mètodes en Dart. Hem vist com definir funcions amb diferents tipus de paràmetres i com utilitzar mètodes dins de les classes. Les funcions i els mètodes són eines essencials per organitzar el codi i fer-lo més modular i reutilitzable. En el proper tema, explorarem la programació orientada a objectes en Dart amb més detall.
Curs de Desenvolupament Flutter
Mòdul 1: Introducció a Flutter
- Què és Flutter?
- Configuració de l'Entorn de Desenvolupament
- Comprensió de l'Arquitectura de Flutter
- Creació de la Teva Primera Aplicació Flutter
Mòdul 2: Conceptes Bàsics de Programació en Dart
- Introducció a Dart
- Variables i Tipus de Dades
- Sentències de Flux de Control
- Funcions i Mètodes
- Programació Orientada a Objectes en Dart
Mòdul 3: Widgets de Flutter
- Introducció als Widgets
- Widgets Stateless vs Stateful
- Widgets Bàsics
- Widgets de Disseny
- Widgets d'Entrada i Formulari
Mòdul 4: Gestió de l'Estat
Mòdul 5: Navegació i Enrutament
- Introducció a la Navegació
- Navegació Bàsica
- Rutes Nomenades
- Passar Dades Entre Pantalles
- Deep Linking
Mòdul 6: Xarxes i APIs
- Obtenir Dades d'Internet
- Analitzar Dades JSON
- Gestió d'Errors de Xarxa
- Ús d'APIs REST
- Integració de GraphQL
Mòdul 7: Persistència i Emmagatzematge
- Introducció a la Persistència
- Preferències Compartides
- Emmagatzematge de Fitxers
- Base de Dades SQLite
- Ús de Hive per a l'Emmagatzematge Local
Mòdul 8: Conceptes Avançats de Flutter
- Animacions en Flutter
- Pintura Personalitzada i Canvas
- Canals de Plataforma
- Isolates i Concurrència
- Optimització del Rendiment
Mòdul 9: Proves i Depuració
- Introducció a les Proves
- Proves Unitàries
- Proves de Widgets
- Proves d'Integració
- Tècniques de Depuració
Mòdul 10: Desplegament i Manteniment
- Preparació per al Llançament
- Construcció per a iOS
- Construcció per a Android
- Integració i Desplegament Continu (CI/CD)
- Manteniment i Actualització de la Teva Aplicació