我总是将代码放在我的问题中,但这一次是不可能的,因为错误可能存在于一千行代码中的任何地方。然而:
我注意到我的主屏幕 ( StatelessWidget
) 的构建方法,它是MaterialApp
(home 属性) 的后代,在调试模式下像往常一样调用一次,但在发布模式下调用三次。
在什么情况下会发生这样的事情?我已经尝试过多次复制,但都失败了。
编辑:
问题是我将从媒体查询中获得的屏幕大小存储为全局变量,以便我可以从任何地方访问它。现在我需要在树的下方访问有状态小部件的 init 方法中的该变量。在调试模式下似乎没有问题,但在发布模式下,使媒体查询(必须在内部构建)的小部件的构建方法奇怪地被调用一次,媒体查询的结果是 Size(0.0, 0.0) ,然后调用树更下方的小部件的 init 方法,然后再调用带有媒体查询的 build 方法两次(这次使用正确的屏幕尺寸)。结果是我在 init 方法中没有正确的屏幕尺寸。