如何阻止手机默认字体大小影响 Flutter 应用内的字体大小?

问题描述 投票:0回答:2

所以我做了一个 Flutter 应用程序。我将所有字体大小定义为动态(根据屏幕大小正确渲染)。

一切都运行良好,直到我在使用较大字体大小的手机上打开应用程序(在设备设置中更改)。尽管我已经对文本大小进行了编程以动态呈现自身,但如果用户不使用手机的默认字体大小并将其保持在较大的大小,则会失败。

现在的问题是,如何停止手机的字体大小(在“设置”中的“文本大小”中选择)影响我的应用程序内的任何内容?我想渲染与我在 flutter 应用程序中定义的相同的文本大小,无论设置是什么。

有办法做到吗?或者如果没有办法阻止这个影响部分,我这里还有什么其他解决方案?

flutter fonts font-size typography
2个回答
0
投票

您可以像这样覆盖系统提供的文本比例因子:

 MaterialApp(
      builder:  (BuildContext context, Widget child) {
        return MediaQuery(
          data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0, ), //set desired text scale factor here
          child: child,
        );
      },
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );

如果您发现此答案有帮助,请将此答案标记为已接受


0
投票

答案已过时,因为

MediaQueryData.fromWindow
已弃用。此外,
MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
并不总是可取的,因为它会强制频繁重建,例如当显示键盘时。

此解决方案解决了弃用和重建问题:

@override
Widget build(BuildContext context) {
  MediaQueryData windowData = MediaQueryData.fromView(View.of(context));
  windowData = windowData.copyWith(
    textScaleFactor: 1.0, //or whatever you want
  );
  return MediaQuery(
    data: windowData,
    child: MaterialApp(
      useInheritedMediaQuery: true,  //if you need it
      //...
    ),
  );
}
© www.soinside.com 2019 - 2024. All rights reserved.