原因是调用MediaQuery.of(context)后,点击TextField组件时会导致调用build方法。
解决方法:
例如: MediaQueryData mqd = MediaQuery.of(context); var size = mqd.size; // 获取大小 var padding = mqd.padding; // 获取内间距 换成下面这样 Size size = MediaQuery.sizeOf(context); double padding = MediaQuery.paddingOf(context);
另外升级到Flutter 3.24.2 后路由传参的时候如果是使用
var args = ModalRoute.of(context)?.settings.arguments;
来获取前个路由传递的参数也会出现多次调用build方法问题,解决方法跟前面的例如MediaQuery.sizeOf()类似。
换成:var args = ModalRoute.settingsOf(context)?.arguments; 即可。