Flutter中如何获取图标默认大小并设置为2倍尺寸?
Flutter图标默认大小获取及倍数设置方案
为什么Theme.of(context).iconTheme.size返回null?
Flutter默认的ThemeData里,iconTheme.size本身就是null。框架绘制Icon时,如果没显式传size参数,也没最近的IconTheme指定尺寸,会自动用24.0作为兜底默认值——这个值是框架内部的 fallback,不是存在Theme里的。
正确获取默认图标大小
用IconTheme.of(context)获取当前上下文的图标主题,它会向上查找最近的IconTheme配置(包括继承自全局Theme的),如果拿到的size是null,就用24.0补全:
double getDefaultIconSize(BuildContext context) { return IconTheme.of(context).size ?? 24.0; }
设置图标为默认大小的2倍
调用上面的方法拿到默认值,直接乘以倍数即可:
// 拿到当前上下文的图标默认大小 double defaultSize = getDefaultIconSize(context); // 创建2倍大小的图标 Icon( Icons.star, size: defaultSize * 2, )
补充说明
- 如果页面里有自定义的
IconTheme(比如用IconTheme组件包裹了部分页面),IconTheme.of(context).size会自动获取到自定义的尺寸,不用手动调整默认值。 - 比起
Transform.scale()缩放图标,直接设置size是让图标以指定尺寸重新绘制,不会出现缩放导致的模糊,更适合需要精确尺寸的场景。
内容的提问来源于stack exchange,提问作者Chris Nadovich
相关产品推荐
相关产品推荐

