android - Flutter,根据屏幕分辨率/dpi 优化 Material 尺寸的最佳方法?

标签 android dart flutter

我目前正在使用 flutter、dart 编写一个 android 应用程序。我有一个设置页面,使用户能够更改主题。我创建了 7 个相同的圆形原 Material 按钮。我一直在阅读根据用户分辨率/dpi 调整圆圈大小的最佳方法。

themeButton.dart:

final _themeColour;
final VoidCallback _onPressed;

ThemeButton(this._themeColour, this._onPressed);

@override
Widget build(BuildContext context) {
  double width = MediaQuery.of(context).size.width;
  double height = MediaQuery.of(context).size.height;
  double ratio = width/height;

  return RawMaterialButton (
    shape: CircleBorder(),
    fillColor: _themeColour,
    elevation: 0.0,
    highlightElevation: 0.0,
    onPressed: () => _onPressed(),
    splashColor: Colors.transparent,  
    highlightColor: Colors.transparent,
    constraints: BoxConstraints(minHeight: width * ratio * 0.2),
  );
}

目前,我正在获取用户设备的宽度,然后据此调整按钮的大小。当我尝试查找时,到处都在谈论像素密度,但是我们尝试使用 dpi 值作为乘数,在高 dpi 设备上圆圈非常大。

使用设备宽度在一定程度上起作用,但我想知道是否有一个首选标准来完成此任务。

最佳答案

Flutter 会自动为您处理高 dpi;查看devicePixelRatio documentation .

乘以 DPI 会执行两次(这就是为什么您会看到它们在高 dpi 设备上更大),而如果您只是设置自动发生的宽度。不会自动发生的是根据不同的宽高比调整大小,但您似乎已经想出了一个解决方案。我不确定您是否还有其他未完成的尝试 - 让我知道,也许我可以提供帮助。

对于处理此类问题的任何其他人,flutter wiki has an entry这可能会有帮助。

关于android - Flutter,根据屏幕分辨率/dpi 优化 Material 尺寸的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54118157/

相关文章:

flutter - 如何使用自定义类进行装饰?

java - 如何通过单击菜单项来更改布局?

android - 以编程方式将标准小部件添加到主屏幕

dart - Dart 中的 for-in 循环顺序

android - 将 flutter CameraImage 转换为文件

Flutter - 在 CustomScrollView 中如何防止滚动的 Widget 被绘制在固定的 Widget 后面

android - 如何检查Android中是否存在表?

android - 一次包含多个项目的水平回收器 View

dart - Flutter - 遍历对象键和值

testing - Flutter Mockito 验证传递给小部件的回调被调用