как передать функцию с типом обратного вызова в Dart?

#flutter #dart

Вопрос:

скажем, например, у меня есть пользовательский класс текстовых полей, подобный этому

 class CustomTextField extends StatelessWidget {
  final Function onSubmit;

  CustomTextField({
    required this.onSubmit,
  });

  @override
  Widget build(BuildContext context) {
    return TextField(
      onSubmitted: (value) => onSubmit(value),
    );
  }
}
 

как вы можете видеть, мне нужно передать функцию, чтобы получить отправленное значение текстовой строки из текстового поля. и я могу использовать его вот так

 CustomTextField (onSubmit: () {
   print("something");
})
 

но у меня нет никаких ошибок, когда я пишу свой код таким образом. чего я хочу, так это вот этого

 CustomTextField (onSubmit: (myValue) { // <--- if I don't write 'myValue' in here it will have error
   print(myValue);
})
 

Я хочу, чтобы мой код выдавал мне ошибку, если я не напишу имя переменной (строку) в круглых скобках

как это сделать?

Ответ №1:

Вам нужно изменить тип onSubmit с общей функции на функцию, которая принимает строковый параметр, например, так.

 final Function(String value) onSubmit;
 

Комментарии:

1. следует также указать возврат как недействительный: