Функции в Dart можно записывать как в стандартном представлении, так и используя краткую форму описания (если позволяет код).
Также как и других языках функции могут содержать позиционные и именные параметры, среди которых могут быть необязательные и с заданными значением по-умолчанию.
Рассмотрим всё в коде:
void printValue ( String value ) { print ( 'Value: $value' ); } printValue ( 'Test!' ); // Value: Test! var listValue = <String>[ 'Hello' , 'world' , 'Dart' ]; listValue.forEach ( printValue ); // Value: Hello // Value: world // Value: Dart // Стандартная запись функции listValue.forEach ( ( v ) { print ( 'Value Full: $v' ); } ); // Value Full: Hello // Value Full: world // Value Full: Dart // Краткая запись функции listValue.forEach ( ( v ) => print ( 'Value Short: $v' ) ); // Value Short: Hello // Value Short: world // Value Short: Dart // Функция в переменной var toUp = ( v ) => print ( 'Value toUpperCase: ${v.toUpperCase()}' ); toUp ( 'Lesson' ); // Value toUpperCase: LESSON listValue.forEach ( toUp ); // Value toUpperCase: HELLO // Value toUpperCase: WORLD // Value toUpperCase: DART // Функция с именными параметрами String getPeople ( { String lastname , String firstname , int age , bool isMan = true } ) { return "${lastname.toUpperCase()} $firstname, $age y.o., ${isMan ? 'Man' : 'Women'}"; } print ( getPeople ( age : 31 , lastname : 'Marchenko' , firstname : 'Alexey' ) ); // MARCHENKO Alexey, 31 y.o., Man // Функция с позиционными параметрами, в том числе необязательными void printChat ( String username , String message , [ bool isModer , bool isAdmin = false ] ) { // Если мы объявили значение по-умолчанию, проверка на null не нужна if ( isAdmin == true ) username = 'Admin ${username.toUpperCase()}'; // Если мы не объявили значение по-умолчанию, проверка на null необходима для избежания ошибок else if ( isModer != null && isModer == true ) username = 'Moder $username'; print ( '$username: $message' ); } printChat ( 'fioru' , 'Hello, people!' , true , true ); // Admin FIORU: Hello, people! printChat ( 'user' , 'Hi, fioru!' ); // user: Hi, fioru! printChat ( 'Alex' , ':)' , true ); // Moder Alex: :) // Функция со сложными параметрами void printScoreAndLang ( { List<int> scores = const [1,2,3,4,5,6,7,8,9,10], Map lang = const { 'php' : 'PHP' , 'dart' : 'Dart' , 'js' : 'JavaScript' } } ) { print ( 'Scores: $scores' ); print ( 'Lang: $lang' ); } printScoreAndLang ( ); // Scores: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] // Lang: {php: PHP, dart: Dart, js: JavaScript}