如何禁用Flutter中iOS辅助功能设置的粗体文本设置?

ruyhziif  于 2023-02-13  发布在  Flutter
关注(0)|答案(2)|浏览(250)

我知道我不应该禁用设备上设置的任何文本和粗体设置,但我这样做是有原因的。我通过在全局级别将textScaleFactor设置为1来禁用文本大小。但这无法避免用户设置粗体文本选项,该选项也会更改文本大小。我如何覆盖该函数,这样即使用户在设备上设置它,也不会对应用程序产生影响?我曾尝试使用TextStyle在文本项上设置fontweitgh,但这也无法阻止粗体。

vcirk6k6

vcirk6k61#

检查Text小部件后,我发现它正在使用MediaQuery中的boldTextOverride来更改提供给它的默认文本样式的字体粗细。因此,我猜您可以通过将您的MeterialApp Package 在MediaQuery中并将false赋给boldText,然后将MaterialApp上的useInheritedMediaQuery设置为true来覆盖它,以防止它创建另一个MediaQuery。就像这样:

return MediaQuery(
  data: MediaQueryData.fromWindow(WidgetsBinding.instance!.window).copyWith(boldText: false),
  child: MaterialApp(
    useInheritedMediaQuery: true,
  ),
);
g9icjywg

g9icjywg2#

Amir_P's answer很不错,但在测试时,我发现它会中断系统中暗模式和亮模式之间的切换,因为Flutter应用程序只会在iOS上关闭并重新打开应用程序后应用系统亮度,而不是在应用程序打开时立即应用。因此,我认为与其将MaterialApp Package 在MediaQuery中,不如做以下事情:

return MaterialApp(
    builder: (context, child) => MediaQuery(
          data: MediaQuery.of(context).copyWith(boldText: false),
          child: child!,
    ),
);

材质应用程序的builder属性专门用于覆盖此类内容-请参见https://api.flutter.dev/flutter/material/MaterialApp/builder.html

相关问题