1. Вы должны создать один метод внутри вызывающего класса
void _setTextValue(String value) {
// Submitted text should appear here from value
}
TextFieldWidget(_setTextValue)
2. Используйте это внутри TextFormField, затем
final Function _setValue;
TextFieldWidget(this._setValue);
3. Внутри onSubmitted Call
widget._setValue(value);
Наконец, вы получите значение внутри вызывающего класса
Отредактировано:
Мы можем добавить обратные вызовы в вызов сам виджеты с именованными параметрами, что является правильным способом сделать это
Пример:
class _TextFieldWidgetState extends State<TextFieldWidget> {
TextEditingController _textEditingController;
InputDecoration _inputdecoration;
@override
void initState() {
super.initState();
_textEditingController = TextEditingController();
_inputdecoration = InputDecoration(hintText: 'UserName',floatingLabelBehavior: FloatingLabelBehavior.always);
}
@override
Widget build(BuildContext context) {
return TextField(
autocorrect: true,
controller: _textEditingController,
keyboardType: TextInputType.text,
enableSuggestions: true,
decoration: _inputdecoration,
onSubmitted: (value){
widget.getUserName(value);
// somehow return data
// I want to access this part..
},
);
}
}
Вызовите код выше, например
TextFieldWidget(getUserName: (value) {
// Get the username here
print(value);
}),
Примечание: мы можем добавить столько именованных параметров, как этот