如果我们不特意设置,flutter开发的app他的字体大小是会跟着系统设置的字体大小而改变,这样就会导致页面出现布局错乱问题,那么如何解决这个问题呢?我也搜索了相关资料,有两个常用也是网络上搜集到比较多的方法,还有一个是我自己使用的比较简单粗暴但是我认为方便快捷的方法。
先来看常用方法
方案一、自定义组件继承Text组件,在使用的时候直接使用FixedText来定义
import 'package:flutter/material.dart';import 'package:flutter_app2/View/FixedSizeText.dart';class FixedText extends Text { const FixedText(String data, { Key key, TextStyle style, StrutStyle strutStyle, TextAlign textAlign, TextDirection textDirection, Locale locale, bool softWrap, TextOverflow overflow, double textScaleFactor = 1.0, int maxLines, String semanticsLabel, }) : super(data, key:key, style:style, strutStyle:strutStyle, textAlign:textAlign, textDirection:textDirection, locale:locale, softWrap:softWrap, overflow:overflow, textScaleFactor:textScaleFactor, maxLines:maxLines, semanticsLabel:semanticsLabel);}
方案二、修改全局配置
在main函数中设置MediaQuery.of(context).copyWith(textScaleFactor: 1.0),就可以使得文本不随着系统改变
//在main函数中,设置builderMaterialApp( home:Home(), builder: (context, widget) { return MediaQuery( ///设置文字大小不随系统设置改变 data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0), child: widget,); },),
方案三:直接修改Text组件
因为在发现这个问题的时候,代码已经比较庞大并且多处使用Text,挨个替换肯定是不合理的,因此我直接修改了Text的源代码,设置textScaleFactor默认值为1.0
因为我肯定是整体都不能让他随着系统改变而改变,所以直接干脆修改源代码,默认不能改变,简单、粗暴且有效。
来源地址:https://blog.csdn.net/wuguidian1114/article/details/131986077