【发布时间】:2022-01-11 01:18:48
【问题描述】:
我正在使用 VoidCallback 从子小部件调用 setState。但是回调函数根本没有执行。
下面是我的代码。
子小部件:
class TextFormMentorHashtag extends StatefulWidget {
const TextFormMentorHashtag({Key? key, required this.callback}) : super(key: key);
final VoidCallback callback;
@override
_TextFormMentorHashtagState createState() =>
_TextFormMentorHashtagState();
}
class _TextFormMentorHashtagState extends State<TextFormMentorHashtag> {
@override
Widget build(BuildContext context) {
...
TextFormField(
...
onChanged: (value) {
if(_formKey.currentState!.validate()) {
...
print('call callback');
widget.callback;
}
}
)
}
}
父小部件:
class ApplyMentorPage extends StatefulWidget {
const ApplyMentorPage({Key? key}) : super(key: key);
@override
State<ApplyMentorPage> createState() => _ApplyMentorPageState();
}
class _ApplyMentorPageState extends State<ApplyMentorPage> {
...
bool _disabled = true;
@override
Widget build(BuildContext context) {
void callback() {
print('callback called');
setState(() {
_disabled = !_mentorProvider.check();
});
}
return Scaffold(
...
child: Column(
children: [
TextFormMentorHashtag(callback: callback),
...
// _disabled turns submit button on and off in the later code
当我运行代码并按下子小部件终端时会打印“调用回调”但没有“调用回调”。我错过了什么?
【问题讨论】:
-
你应该把 widget.callback 放在下面的 onpressed try 旁边