我目前正在使用 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/