您在build方法中调用showDialogIfFirstLoaded,在textfield onChange方法中调用setState。每次您再次调用setState构建方法re-build,它会在每个setState上调用showDialogIfFirstLoaded。 我不知道您的要求,但在TextField的onChange方法中调用setState是不好的。如果需要更新文本字段中每个字符类型的UI部分,可以使用ValueListenableBuilder 如果希望只打开该对话框一次,请创建一个方法来获取它是否是第一次启动,如果是,请调用showDialogIfFirstLoaded方法。 有关更多详细信息,请参阅以下代码- @override void initState() { super.initState(); _controller = TabController(length: 3, vsync: this); _isFirstLaunch(); } _isFirstLaunch()async{ final prefs = await SharedPreferences.getInstance(); final bool? isfirstLaunch = prefs.getBool('first_launch'); if(!isfirstLaunch ?? tr