Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

调试包正常,正式包高度无法计算 #153

Closed
silentchild opened this issue Sep 23, 2020 · 25 comments
Closed

调试包正常,正式包高度无法计算 #153

silentchild opened this issue Sep 23, 2020 · 25 comments

Comments

@silentchild
Copy link

调试包正常,正式包由于高度无法计算页面空白

@silentchild
Copy link
Author

3.0.2 flutter 1.20.4

@silentchild
Copy link
Author

正式包返回的值都是0.0

@lizhuoyuan
Copy link
Collaborator

晚上我用装有1.20的电脑调试一下

@lizhuoyuan
Copy link
Collaborator

image
我运行了示例代码,么有问题
你看一下是不是初始化少了步骤?
另外机型是什么

@silentchild
Copy link
Author

image
我运行了示例代码,么有问题
你看一下是不是初始化少了步骤?
另外机型是什么
360截图20200923220156612
机型是红米k20

@lizhuoyuan
Copy link
Collaborator

运行一下我刚上传的apk? 我刚拿一个mate30尝试了一下,硬该不存在手机性能太好导致拿不到数据的问题

@silentchild
Copy link
Author

silentchild commented Sep 23, 2020 via email

@silentchild
Copy link
Author

silentchild commented Sep 23, 2020 via email

@silentchild
Copy link
Author

运行一下我刚上传的apk? 我刚拿一个mate30尝试了一下,硬该不存在手机性能太好导致拿不到数据的问题

测试了,全是0 硬件再不好运行这个肯定没问题啊,毕竟也是2000的手机 才买了一年 运行个小demo应该没啥问题吧,是不是方法不兼容

@lizhuoyuan
Copy link
Collaborator

之前有过机器性能太好加载过快拿不到屏幕数据的问题,但是flutter新版其实解决了.

你这问题 ...
我现在复现不出来.

你试试v2版本呢?

@silentchild
Copy link
Author

之前有过机器性能太好加载过快拿不到屏幕数据的问题,但是flutter新版其实解决了.

你这问题 ...
我现在复现不出来.

你试试v2版本呢?

v2版本因为有context 所以没啥问题

@silentchild
Copy link
Author

之前有过机器性能太好加载过快拿不到屏幕数据的问题,但是flutter新版其实解决了.

你这问题 ...
我现在复现不出来.

你试试v2版本呢?

调试模式是好的 这就很诡异,哎呦好烦

@lizhuoyuan
Copy link
Collaborator

lizhuoyuan commented Sep 23, 2020

看一下flutter doctor -v 的输出

@silentchild
Copy link
Author

看一下flutter doctor 的输出
PS D:\work\flutter_base_framework> flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 1.20.3, on Microsoft Windows [Version 10.0.18363.1110], locale zh-CN)

[√] Android toolchain - develop for Android devices (Android SDK version 30.0.0)
[√] Android Studio (version 4.0)
[√] VS Code (version 1.49.1)
[√] Connected device (1 available)

• No issues found!

@silentchild
Copy link
Author

看一下flutter doctor -v 的输出

顺便说一下 手机的安卓版本是10

@lizhuoyuan
Copy link
Collaborator

lizhuoyuan commented Sep 23, 2020

刚刚的mate 30 就是安卓10的...
你看看别的手机呢

@fine1021
Copy link

我也遇到了,经过一系列的排查,初步确定了原因,我把你那个screenutil.dart下载下来了,加了一些日志,在Profile模式下运行!!!
修改如下:
image
打印的结果如下:
image
项目初始化代码如下:
image
但是我在某个Route的build函数中WidgetsBinding.instance.window,是可以获取到屏幕相关参数的,测试机型华为Mate20 Pro Android 10,在iPhone 8 Plus上测试也是有这个问题,之前一直使用v2版本,任何模式下都一切正常

得出的初步结论:初始化接口依旧过早,WidgetsFlutterBinding.ensureInitialized()并不能保证window信息已经拿到,debug模式下没问题,在profile或者release模式下,window信息如截图所示

运行环境如下:

image

另外说一下 作者提供的demo测试结果,第一次安装的时候启动能拿到屏幕信息展示,后续再启动就全部是0了

@fine1021
Copy link

如果使用v3,我这边测试的一种可行方案就是把初始化调换下位置,以demo为例
image

移动到MaterialApp初始化的地方

@silentchild
Copy link
Author

如果使用v3,我这边测试的一种可行方案就是把初始化调换下位置,以demo为例
image

移动到MaterialApp初始化的地方

这样就失去了3.0的意义,我就是希望在build之前使用,不依赖context

@fine1021
Copy link

如果使用v3,我这边测试的一种可行方案就是把初始化调换下位置,以demo为例
image
移动到MaterialApp初始化的地方

这样就失去了3.0的意义,我就是希望在build之前使用,不依赖context

这是顶级的MaterialApp的build函数,一般来说也只会执行一次,主要还是要延迟等window拿到屏幕信息。
初始化方式的话暂时可以沿用3.0不需要context

@LaoHuan
Copy link

LaoHuan commented Sep 24, 2020

我也遇到了。今天打包了有些机型显示不行

@lizhuoyuan
Copy link
Collaborator

现在看还是不依赖context很难保证能获取到屏幕数据,
建议使用v2,
我会继续寻找办法来解决

@JarvanMo
Copy link
Member

emmm,我也遇到了这个问题。debug好用,release算不出来。

@lizhuoyuan
Copy link
Collaborator

emmm,我也遇到了这个问题。debug好用,release算不出来。

用v2吧, 看来v3还是不成熟

@seekcx
Copy link

seekcx commented Sep 26, 2020

几天前装的 beta 版本,一直在debug,没打release包,今天打了release 包全乱了,都不知道发生了啥,一个 commit 一个 commit 的排查,才排到这个插件的问题。

建议把 V3 撤回吧,或者提醒一下,这个太难排了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants