据我所知,Flutter使用逻辑像素来调整大小,它以Flutter应用程序运行的特定设备指定的比例转换为物理像素。因此,我的问题是像flutter_screenutil这样的库的目的是什么,为什么这个库特别受欢迎?
qf9go6mv1#
请不要使用flutter_screenutil和类似的工具。查看Pixeltoast关于Flutter布局基础的总结,包括MediaQuery:https://notes.tst.sh/flutter/media-query/
flutter_screenutil
wnavrhmk2#
flutter_screenutil包考虑了UI原型工具(如Figma)的屏幕大小,而常规的Flutter大小调整无法访问该信息。例如,看看这个包的实现,在lib/src/screen_util.dart中你可以找到这样的代码:
lib/src/screen_util.dart
double get scaleWidth => screenWidth / _uiSize.width;
实际屏幕宽度与UI设计宽度的比率用于缩放实现中使用的宽度。UI原型工具的屏幕尺寸由用户在初始化时给出:
ScreenUtilInit( designSize: const Size(360, 690), // the screen dimension from Figma ... )
vaqhlq813#
你问“flutter_screenutil这样的库的目的是什么”,并接受了一个只是说不要使用它的答案,还有一个链接告诉你为什么不应该使用它。这里的问题是,并不是每个应用程序都需要或可以以链接文章的方式响应。例如,在链接的文章中,一组筹码在小屏幕上显示为4行和3行,但在大屏幕上作为一行7行进行响应。在该应用程序的上下文中,这是完全正确的设计,我支持那里列出的方法,以及那里列出的这种方法的原因。但它不是绝对的-它只适用于某些类型的应用程序。我请你考虑一个鲜为人知的应用程序称为糖果粉碎。如果一个关卡在iPhone 6的纵向屏幕上有一个8x 12的糖果网格,它是否应该“响应”,并在iPad的横向屏幕上显示一个24 x4的糖果网格?显然不是,无论屏幕大小或方向如何,它仍然需要呈现8x 12网格。此外,虽然它可以在更大的屏幕上保持相同的物理尺寸,但这样看起来会很奇怪,迷失在一个黑色环绕的岛屿中!像Candy Crush这样的应用程序有一个“固定”的布局,通过缩放它来适应它所呈现的设备的视口来处理这个问题。为了回答你的问题,这就是为什么像flutter_screenutil这样的库可以帮助你实现这一点,对于特定的应用程序设计模式。开发人员是否在每个示例中都适当地使用了该库?可能不会,肯定会有这样的情况,即该库被用作一种捷径,以避免Flutter能够为您提供的周到的响应式设计。即使在Candy Crush示例中,您仍然可以混合并匹配响应与缩放,例如基于设备方向的不同布局等。作为开发人员,我们应该始终拥有各种各样的工具,如果有人说我们应该只使用一种特定的工具,请保持警惕。如果你只有一把锤子,一切看起来都像钉子,但相反,那些只处理钉子的人会告诉你只用锤子。
3条答案
按热度按时间qf9go6mv1#
请不要使用
flutter_screenutil
和类似的工具。查看Pixeltoast关于Flutter布局基础的总结,包括MediaQuery:https://notes.tst.sh/flutter/media-query/wnavrhmk2#
flutter_screenutil
包考虑了UI原型工具(如Figma)的屏幕大小,而常规的Flutter大小调整无法访问该信息。例如,看看这个包的实现,在
lib/src/screen_util.dart
中你可以找到这样的代码:实际屏幕宽度与UI设计宽度的比率用于缩放实现中使用的宽度。
UI原型工具的屏幕尺寸由用户在初始化时给出:
vaqhlq813#
你问“flutter_screenutil这样的库的目的是什么”,并接受了一个只是说不要使用它的答案,还有一个链接告诉你为什么不应该使用它。这里的问题是,并不是每个应用程序都需要或可以以链接文章的方式响应。
例如,在链接的文章中,一组筹码在小屏幕上显示为4行和3行,但在大屏幕上作为一行7行进行响应。在该应用程序的上下文中,这是完全正确的设计,我支持那里列出的方法,以及那里列出的这种方法的原因。
但它不是绝对的-它只适用于某些类型的应用程序。我请你考虑一个鲜为人知的应用程序称为糖果粉碎。如果一个关卡在iPhone 6的纵向屏幕上有一个8x 12的糖果网格,它是否应该“响应”,并在iPad的横向屏幕上显示一个24 x4的糖果网格?显然不是,无论屏幕大小或方向如何,它仍然需要呈现8x 12网格。此外,虽然它可以在更大的屏幕上保持相同的物理尺寸,但这样看起来会很奇怪,迷失在一个黑色环绕的岛屿中!
像Candy Crush这样的应用程序有一个“固定”的布局,通过缩放它来适应它所呈现的设备的视口来处理这个问题。为了回答你的问题,这就是为什么像flutter_screenutil这样的库可以帮助你实现这一点,对于特定的应用程序设计模式。
开发人员是否在每个示例中都适当地使用了该库?可能不会,肯定会有这样的情况,即该库被用作一种捷径,以避免Flutter能够为您提供的周到的响应式设计。即使在Candy Crush示例中,您仍然可以混合并匹配响应与缩放,例如基于设备方向的不同布局等。
作为开发人员,我们应该始终拥有各种各样的工具,如果有人说我们应该只使用一种特定的工具,请保持警惕。如果你只有一把锤子,一切看起来都像钉子,但相反,那些只处理钉子的人会告诉你只用锤子。