如果我们不特意设置,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函数中,设置builder MaterialApp(home:Home(),builder: (context, widget) {return MediaQuery(///设置文字大小不随系统设置改变data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),child: widget,);}, ),
方案三:直接修改Text组件
因为在发现这个问题的时候,代码已经比较庞大并且多处使用Text,挨个替换肯定是不合理的,因此我直接修改了Text的源代码,设置textScaleFactor默认值为1.0
因为我肯定是整体都不能让他随着系统改变而改变,所以直接干脆修改源代码,默认不能改变,简单、粗暴且有效。