Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当分辨率对于屏幕尺寸来说太高时,我可以缩放一个完整的颤振应用程序吗?_Android_Flutter - Fatal编程技术网

Android 当分辨率对于屏幕尺寸来说太高时,我可以缩放一个完整的颤振应用程序吗?

Android 当分辨率对于屏幕尺寸来说太高时,我可以缩放一个完整的颤振应用程序吗?,android,flutter,Android,Flutter,我有一个斑马CC600运行安卓奥利奥 屏幕分辨率:1280x720,屏幕大小:5英寸 问题是一切都太小了。有没有一种方法可以通过颤振来扩展整个应用程序 我确实试过MediaQuery.textScaleFactorOf(上下文) 但这只是文本大小,而不是其他所有内容 第三张照片比较了TC51(顶部)和CC600(底部)。CC600的字母几乎不可读。我认为制造商没有正确配置设备。这就是我想缩放整个应用程序的原因。颤振应用程序实际上看起来完全正常。它已缩放到设备的DPI 但是如果你想扩展这个

我有一个斑马CC600运行安卓奥利奥

屏幕分辨率:1280x720,屏幕大小:5英寸

问题是一切都太小了。有没有一种方法可以通过颤振来扩展整个应用程序

我确实试过MediaQuery.textScaleFactorOf(上下文)

但这只是文本大小,而不是其他所有内容


第三张照片比较了TC51(顶部)和CC600(底部)。CC600的字母几乎不可读。我认为制造商没有正确配置设备。这就是我想缩放整个应用程序的原因。

颤振应用程序实际上看起来完全正常。它已缩放到设备的DPI

但是如果你想扩展这个应用程序,下面是我的建议。(我们为生产应用程序所做的工作,请注意,主要步骤中的某些步骤在发行版中被跳过。)

我们使用另一种技术的原因是,它比MediaQuery/LayoutBuilder解决方案简单得多,也不那么混乱(我认为这很糟糕)

简单的解决办法

在main.dart中,将其放在类之前的顶部,这样它就可以在全球范围内使用

/// Used to scale smaller devices.
/// Font and sizes. Not used everywhere. Used for tweaking smaller device.
double deviceScale = 1.0;
把这个函数放到某个地方

setDeviceScaler() {
    // You can tweak this so scale for different devices. For example tiny iPhone SE can by super smaller or big :-)
    double deviceHeightInPoints = (window.physicalSize.height / window.devicePixelRatio);
    if (deviceHeightInPoints < 700.0) {
      deviceScale = 0.90;
    }
    if (deviceHeightInPoints < 600.0) {
      deviceScale = 0.80;
    }
    print('Device scale: ' + deviceScale.toString());
  }
另外,将此添加到您的第一个屏幕。因为有时候在第一个scaffold小部件出现之前,
窗口.devicePixelRatio
没有正确初始化。您可能需要在第一个屏幕初始化中添加
setDeviceScaler()

现在,无论您在何处设置文本样式或小部件维度,只需调用
*deviceScale

TextStyle titleStyle({bool darkText = false}) {
  return TextStyle(
    color: darkText ? AppColors.darkFont : AppColors.lightFont,
    fontSize: 20 * deviceScale,
    fontWeight: FontWeight.w700,
  );
}

如果您在任何地方都对维度进行硬编码,则无法将其放大。否则,您可以通过使用MediaQuery或LayoutBuilder检查可用屏幕空间来轻松完成。我没有在任何地方对尺寸进行硬编码。那么,是什么让您陷入麻烦呢?我在设备上添加了默认颤振应用程序的屏幕截图。一切都太小了,我同意你的看法。但是为什么不尝试使用MediaQuery/LayoutBuilder来计算每个小部件的动态大小呢?嗨@oliver dixon,谢谢你的帮助。我添加了一张照片,比较了两台设备。两者都有标准字体大小/分辨率设置。在我看来,CC600显然有问题。但我同意这一点,不是因为Flutter应用程序本身按照预期的操作系统来调整大小。正如我从你的回答中了解到的那样,没有什么神奇的方法可以让你将应用程序作为一个整体进行扩展,而是对单个文本和小部件进行手动调整。
TextStyle titleStyle({bool darkText = false}) {
  return TextStyle(
    color: darkText ? AppColors.darkFont : AppColors.lightFont,
    fontSize: 20 * deviceScale,
    fontWeight: FontWeight.w700,
  );
}