gpt4 book ai didi

Flutter:以毫米为单位创建标尺

转载 作者:行者123 更新时间:2023-12-03 16:47:43 30 4
gpt4 key购买 nike

我正在创建一个标尺应用程序,我可以在其中以毫米为单位测量任何东西。
类似于这个应用程序的东西 https://play.google.com/store/apps/details?id=org.nixgame.ruler&hl=en_IN但非常基本。
我在重复 分隔线 小部件变成 栏目 小部件并保持 的差距6.299 如给定。

class Ruler extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
child: Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: rulerPin(350),
),
);
}

List<Divider> rulerPin(int count) {
return List.generate(count, (i) {
return Divider(
height: 6.299,
thickness: 1,
);
}).toList();
}
}
但问题是当我用手机上的物理标尺测量时,数值不匹配。检查给定的屏幕截图。
enter image description here
我正在使用此引用 Calculate logical pixels from millimeters
请建议我是否遵循正确的方法。

最佳答案

您必须找出设备的像素频率。然后用 MediaQuery您必须以计算的相等间隔添加引脚。固定数字的计算可能总是有变化。
如果不再发生,则肯定是在提供信息的部分存在错误。(如像素频率信息)。
我会为你研究并编辑这个答案。
结果:您可以分 3 个阶段进行计算;
1) 获取 DPI(每公司点数)

double dpi = _getDpi(); 
安卓: getting the screen density programmatically in android?method channel
iOS : 您可以创建一个苹果设备型号的 dpi 列表。( device list ) 它们不会太多。然后您可以通过 device_info 获取设备型号
2 ) 计算像素大小
Flutter 使用逻辑像素。
所以我们需要知道有多少逻辑像素和多少物理像素

大小逻辑大小 = MediaQuery.of(context).size;
///How many physical pixel for 1 logical pixel
double pixelRatio = MediaQuery.of(context).devicePixelRatio;

///How many logical pixel for 1 mm.
double pixelCountInMm = dpi / pixelRatio / 25.4;
//e.g output = 7.874015748031496
3 ) 计算
      ///I am not sure thickness include height
/// if yes you can set divider height : pixelCountInMm - tickness
List<Divider> rulerPin(int count) {
return List.generate(count, (i) {
return Divider(
height: pixelCountInMm,
thickness: 1,
);
}).toList();
}

关于Flutter:以毫米为单位创建标尺,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64494991/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com