我不会为Flutter应用完全禁用iOS动态类型,因为当用户将全局文本大小设置得太大时,它会完全破坏我的某些布局。
我问了如何实现here的问题,并得到了我想要实现的答案。
return MediaQuery(
child: your-widget-here,
data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
);
只是对使用DRY原理实现该方法的最佳方法感到好奇,因此我可以在我的代码中重复使用它。此刻,我只是创建了一个Utils类,编写了这样的方法
Widget unscaledWidget(Widget widget, BuildContext context){
return MediaQuery(
child: widget,
data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
);
}
,然后在我的应用程序页面的构建方法中,而不是调用
return Scaffold(...);
做
Scaffold scaf = Scaffold(...);
return Utils().unscaledWidget(scaf, context);
是否应该有更好的方法来实现这一目标?只是不确定这是Dart的最佳做法。
答案 0 :(得分:0)
没有理由您的方法需要成为类的成员。如果将其设为顶级功能(在类之外),则会保存几个字符(以及不必要的Utils
构造-尽管也可以将其设为static
来实现)。>
在类之外,声明以下内容:
Widget unscaledWidget(Widget widget, BuildContext context) => MediaQuery(
child: widget,
data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
);
并像这样使用它
return unscaledWidget(Scaffold(...), context);