我目前正在使用flutter,dart编码android应用程序。我有一个设置页面,使用户可以更改主题。我创建了7个相同的圆形原材料按钮。我一直在阅读根据用户分辨率/ 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的设备上圆圈非常大。
使用设备宽度在一定程度上可行,但是我想知道是否有首选标准来完成此任务。
答案 0 :(得分:2)
Flutter会自动为您处理高dpi;参见devicePixelRatio documentation。
乘以DPI会执行两次(这就是为什么在高dpi的设备上看到它们更大的原因),而如果您只是设置自动发生的宽度。不会自动发生的是将尺寸调整为不同的宽高比,但似乎您已经提出了解决方案。我不确定您是否还有其他尝试无法完成的事情-让我知道,也许我可以帮忙。
对于其他处理此类问题的人,波动的维基has an entry可能会有所帮助。