Parametry funkcji w Dart
Required
'Dart parameters', tj. parametry funkcji... Nic ciekawego, co? Nic bardziej mylnego! No, chyba że mówimy o pierwszym rodzaju, czyli ‚required’ - jest to najzwyklejszy rodzaj parametru, który na pewno znasz z innych języków. ```dart void func(int i, int j) {} ``` Wywołując powyższą metodę, musisz podać i oraz j.Positional & Optional
Tu się zaczyna robić ciekawiej. Spójrz na deklarację metody: ```dart void func([String name]) {} ``` Wywołując ją, możesz, ale nie musisz podać wartości ,name’. Jeśli jej nie podasz, zostanie jej przypisany domyślnie ‚null’. ```dart void func([String name = 'Dawid']) {} ``` Teraz gdy wywołasz funkcję ‚func’ bez podania ‚name’, nie zostanie jej przypisany ‚null’, ale tekst ‚Dawid’.Można mieć kilka parametrów typu ‚positional’:
void func([String name = 'Dawid', int year]) {}
‚name’ i ‚year’ są tu opcjonalne, ale jeśli chcesz podać ‚year’ to musisz podać również ‚name’ - kolejność ma znaczenie!
func('Tomek', 2020); // Poprawne użycie
func(2020); // Niepoprawne użycie
Parametry ‚required’ i ‚positional’ mogą występować razem, o ile ‚required’ znajdą się przed ‚positional’
void func(String surname, [String name = 'Dawid', int year]) {}
Named parameters
Teraz moje ulubione. Masowo wykorzystywane przez widgety Flutter. ```dart void func({String name, String surname}) {} ``` W tym przypadku oba parametry są opcjonalne z domyślną wartością ‚null’. Magia dzieje się jednak przy wywoływaniu metody: ```dart func( name: 'Dawid', surname: 'Wnukowski', // Mały tip: przy ostatnim parametrze można dopisać ',' // i dzięki temu wymusić dodanie nowej lini przy formatowaniu ); ``` Czy to nie jest piękne!? To znaczy czytelne?Parametry ‚named’ również można łączyć z ‚required’ oraz przypisywać im domyślne wartości, na tej samej zasadzie co w ‚optional’. Przykładzik:
void func(int currentYear, {String name, String surname = 'Abc'}) {}
func(2020, name: 'Robert');
W tym przypadku, wartości zmiennych będą następujące: year -> 2020 name -> Robert surname -> Abc
To by było na tyle. Artykuł ten znajdziesz na mojej stronie, gdzie dodatkowo dowiesz się o adnotacji required używanej we Flutterze: https://dawidwnukowski.pl/dart-parameters-required-positional-optional-named-functions/



