Questa funzione della classe BsxTag, facente parte della libreria dart_bsx, che genera il codice HTML per questo sito, mostra quanto possano essere espressivi i parametri di funzione in Dart:
void withBsPosition(BsPosition position, {BsSide? xSide, int? xOrigin,
BsSide? ySide, int? yOrigin}) {
if (xSide != null && xSide != BsSide.end && xSide != BsSide.start) {
throw ArgumentError('Invalid x side $xSide for Position');
}
// ... altro codice ...
withClass('position-${position.name}');
if (xSide != null) withClass('${xSide.name}-$xOrigin');
if (ySide != null) withClass('${ySide.name}-$yOrigin');
}
Il parametro position è posizionale e obbligatorio, mentre gli altri parametri, racchiusi in parentesi graffa, sono nominativi. Per i parametri nominativi, l'assenza della parola chiave required indica che sono opzionali. Il fatto che siano valori nullabili (si veda l'articolo sulla null safety) implica che il valore di default è null.
Per convenzione si utilizza un numero limitato di parametri posizionali, per quelli che sono i parametri obbligatori e naturali della funzione, e un elenco di eventuali altri parametri nominativi, ma la possibile casistica è più ricca di così.
Ecco una possibile invocazione della funzione descritta, che mostra come il codice risultante sia particolarmente auto-esplicativo:
var div2 = Div('Fixed position')
..withBsPosition(BsPosition.fixed, xSide: BsSide.start, xOrigin: 50);
Per una descrizione dell'operatore .. si veda l'articolo sulle interfacce fluenti.
Giorgio Barchiesi
Albo degli Ingegneri Sez. A, N. 4027 della Prov. di Trento
P.IVA 02370260222, C.F. BRC GRG 58L26 C794R
Copyright © 2015-2024 Giorgio Barchiesi - Tutti i diritti riservati