Значение по умолчанию для параметра типа функции в Dart - PullRequest
3 голосов
/ 06 августа 2020

Рассмотрим функцию в файле Dart

void myFunction({int input = 1, Function(int, String) callback}) {
// ...
}

Итак, мне интересно, можно ли вообще указать значение по умолчанию для параметра callback, например, это может быть что-то вроде (_, _) => { }.

PS Я знаю, что по умолчанию null и ?? может помочь избежать NPE, мне просто любопытно, возможно ли это вообще. Ура.

Ответы [ 2 ]

3 голосов
/ 06 августа 2020

Вы можете сделать что-то вроде:

dynamic func(int i, String s) {
  print(i.toString() + s);
}

void myFunction({int input = 1, Function(int, String) callback = func}) {
  callback(input, " .");
}

void main() {
  myFunction(input: 2);
}
0 голосов
/ 06 августа 2020

Значение по умолчанию необязательного параметра должно быть постоянным.

Это то, что говорится в документах

Эту вещь можно обойти следующим образом:

 dynamic myCallback(int a,String b) {
      
  }
  
 void myFunction({int input = 1, Function(int, String) callback }) {
    if (callback == null) callback = myCallback;
  }

Изменить:

В качестве альтернативы вы можете использовать функцию анонима без функции myCallback, например:

void myFunction({int input = 1, Function(int, String) callback }) {
   if (callback == null) callback = (a,b){};
  }
...