foo*_*ist 6 dart flutter statelesswidget
我总是在这里把代码放在我的问题中,但是这一次是不可能的,因为该错误可能在数千行代码中的任何地方。然而:
我注意到,主屏幕(StatelessWidget
)的构建方法是MaterialApp
(home属性)的后代,在调试模式下通常被调用一次,而在释放模式下则被调用一次。
在什么情况下会发生这种情况?我已经尝试过多次复制,但是失败了。
编辑:
问题是我将从媒体查询中获得的屏幕尺寸存储为全局变量,以便可以从任何地方访问它。现在,我需要在树的更下方的有状态小部件的init方法内部访问该变量。在调试模式下似乎没有问题,但是在发布模式下,使媒体查询(必须在内部)的窗口小部件的生成方法被怪异地调用了一次,媒体查询的结果为Size(0.0,0.0) ,然后调用该树下方的小部件的init方法,然后再调用两次带有媒体查询的build方法(这次使用正确的屏幕尺寸)。结果是我在init方法中没有正确的屏幕尺寸。
bun*_*nny 11
https://docs.flutter.io/flutter/widgets/FutureBuilder-class.html
未来必须更早获得,例如在 State.initState、State.didUpdateConfig 或 State.didChangeDependencies 期间。在构造 FutureBuilder 时,它不能在 State.build 或 StatelessWidget.build 方法调用期间创建。如果future和FutureBuilder同时创建,那么每次重建FutureBuilder的parent时,异步任务都会重新启动。
一般准则是假设每个构建方法都可以在每一帧调用,并将省略的调用视为优化。
(摘自https://github.com/flutter/flutter/issues/27847#issuecomment-462868299)
归档时间: |
|
查看次数: |
2508 次 |
最近记录: |