我有一个GoogleMap小部件夹在屏幕上的其他小部件之间。如果我导航离开,Flutter不会在新页面加载之前处理Map。这是双倍烦人的,因为我用一个英雄小部件动画了一张个人资料图片,飞越屏幕&“爵士乐”页面过渡。但是由于Map工件需要几个额外的节拍才能消失,整个过渡看起来很粗制滥造。这种情况发生在Android模拟器和Android设备上。
我尝试过使用Google和Stackoverflow来处理Map小部件的控制器,但这似乎不是一件事。final Completer<GoogleMapController> myGoogleMapController = new Completer<GoogleMapController>();
有点时髦的控制器对吧?
如果Map小部件是全屏的话,这不会是一个问题,它只需要几个额外的节拍来改变屏幕。但它不是全屏的,它是许多小部件中的一个。
我希望谷歌Map小部件消失迅速,或至少更迅速。任何想法的perf-ing它?
1条答案
按热度按时间cgfeq70w1#
我通过将GoogleMap小部件 Package 在一个Visibility小部件中解决了这个问题。
screenOpen是一个类变量:
当用户试图弹出屏幕时,我首先翻转Visibility的visible bool,然后弹出屏幕。
也许它成功的关键是为GoogleMap Widget提供了一个SizedBox父控件,并定义了高度。因此,当它的子控件消失时,SizedBox会将其下的每个Widget保持在适当的位置,防止Widget向下跳时主要屏幕重绘。相反,我相信Flutter只需在MapWidget的位置绘制背景即可。
额外:我在Visibility小部件上使用了一个键,以防万一。
欢迎改进。
如果GoogleMap插件开始自行处理,请立即在屏幕上退出请发布警报作为此问题的答案。