Code Monkey home page Code Monkey logo

Comments (12)

winsonet avatar winsonet commented on July 20, 2024

咦?我刚发现你的新版已默认设置好了这个初始化的值,那是否表示现在已不需要再在使用中去设置和初始化设备的宽高啦?

from flutter_screenutil.

lizhuoyuan avatar lizhuoyuan commented on July 20, 2024

from flutter_screenutil.

winsonet avatar winsonet commented on July 20, 2024

哦,其实我还有些不太明白,你这个设置了一个固定值,所有设备将按此值去按比例缩放,如果设备本身宽高相差很大,那出来的效果也不一定能保证可适应所有设备,对吗?如我按 320x400 大小设置,那在 iphone 8 plus上看留出来的空间就会大很多了,因此如果我按大设备尺寸设置,在小设备上可能也会显示不全,不知我理解有错吗?

from flutter_screenutil.

winsonet avatar winsonet commented on July 20, 2024

我做了一个小小的测试,分别使用flutter原生数值和ScreenUtil来设置:
设备宽度:360

  1. 设置 container width to 180,这时可以非常正常显示 container 只占用了屏幕一半的空间
  2. 使用 ScreenUtil 设置宽度,由于初始化宽度为 1080,因此我设置其宽度就为 540, 如: ScreenUtil().setWidth(540)
    结果: 方法1使用 flutter 直接设置效果正确,但通过 ScreenUtil 设置后,明显并不是占据了屏幕一半的效果,而是偏左缩小了,感觉大概只是占用了 40% 左右
    疑惑: 其实我也不太确定以上测试逻辑是否正确,因此真心希望作者能解答一下,谢谢啦!

from flutter_screenutil.

lizhuoyuan avatar lizhuoyuan commented on July 20, 2024

不是按照设备大小,是按照设计稿的大小来设置
这个工具可以获取到当前设备的大小 然后根据设计稿的数据来适应
显示最优的效果
至于你说的显示不正确的问题我会再测试
也建议你运行一下事例中的代码查看是否正常

from flutter_screenutil.

lizhuoyuan avatar lizhuoyuan commented on July 20, 2024

不好意思
是调用方式的问题
please use ScreenUtil.getInstance() instead of ScreenUtil() , for example: ScreenUtil.getInstance().setHeight(25) instead of ScreenUtil().setHeight(25)
我在更新日志中做了补充, 是我的失误 。
应该这么用:
根据屏幕宽度适配 width: ScreenUtil.getInstance().setWidth(540),

根据屏幕高度适配 height: ScreenUtil.getInstance().setHeight(200),

可以全局替换
造成的影响深表歉意

from flutter_screenutil.

winsonet avatar winsonet commented on July 20, 2024

哦,謝謝啦!这样就感觉比较合逻辑了,这段时间我也比较忙,所以没去试,现在这样就是明显的单态模式了,但对于 flutter 来说,如果直接使用两点调用,是否也是直接实例化了呢?即写成以下是否同样效果?
height: ScreenUtil..setHeight(200),

这只是我感觉理论上一样,但实际上以上写法出来会有问题,提示类型不正确,以上返回的是 dynamic,但height只能接收 double,不过如果我用 ScreenUtil.getInstance().setHeight(200) 的话,就不会有错误,但实际上 setHeight 方法返回的是一樣的啊,所以这里也不明白...

from flutter_screenutil.

lizhuoyuan avatar lizhuoyuan commented on July 20, 2024

因为那是个对象方法 不是类方法, 所以还是要实例化一个对象
你得加个()来创建一个实例。

再有就是,我测试的话ScreenUtil()和ScreenUtil.getInstance的setWidth结果是一样的,因为好像并没有用到初始化时传入的值 我现在有点蒙 正在调试

其实两种调用方式是一致的,我在内部进行处理了。。。
好久没看代码都忘了

from flutter_screenutil.

winsonet avatar winsonet commented on July 20, 2024

哦,不好意思, 我上面打错了,我是用了height: ScreenUtil()..setHeight(200), 这样写的

你意思是,其实并不需要加 getInstance ,就是按以前的调用也是可以了?呵,其实我也有点晕了,其实你里面获取 width 的时候,就是用了 instance 去计算的对吧(如下代码),所以之后不需再调用 instance了?

get scaleWidth => _screenWidth / instance.width;

from flutter_screenutil.

lizhuoyuan avatar lizhuoyuan commented on July 20, 2024

对的
我当时为了能简化代码 , 在这个地方处理了一下

刚才看到前面调用逻辑发现有点不对 觉得ScreenUtil()和ScreenUtil.getInstance()不应该是一样的
后来看到这里才想起来 内部处理了。 我现在正在想是否改一下

from flutter_screenutil.

lizhuoyuan avatar lizhuoyuan commented on July 20, 2024

根据屏幕宽度适配 width: ScreenUtil.getInstance().setWidth(540),

根据屏幕高度适配 height: ScreenUtil.getInstance().setHeight(200),

也可以使用 ScreenUtil() 替代 ScreenUtil.getInstance(),
例如:ScreenUtil().setHeight(200)

无需使用连接符号一个“.”就够了

from flutter_screenutil.

winsonet avatar winsonet commented on July 20, 2024

明白,关于我之前的测试,应该是初始化设置设备宽高的值有问题,现在我再试一次就可以了,非常感谢你的耐心解答!!

from flutter_screenutil.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.