我們知道悴务,在原生iOS開發(fā)中享幽,一旦文字設(shè)置了font之后铲掐,是不會(huì)隨著系統(tǒng)設(shè)置中的字體大小的改變而發(fā)生改變的≈底可是摆霉,在flutter開發(fā)中,我們使用的Text widget卻會(huì)隨著改變奔坟,這就會(huì)導(dǎo)致布局錯(cuò)亂携栋,使得整個(gè)頁面異常難看。
首先咳秉,如果是針對(duì)單獨(dú)的Text widget婉支,系統(tǒng)提供了textScaleFactor屬性,用于設(shè)置文字的縮放倍率
Text(
'(model.reason)',
textScaleFactor: 1.0,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: _isMine ? ColorResource.COLOR_FF7576 : ColorResource.COLOR_999999,
fontSize: 12,
),
)
But,項(xiàng)目中要使用到那么多的Text澜建,如果每個(gè)都添加這個(gè)屬性的話向挖,光是添加這個(gè)我就得禿了 o( ̄︶ ̄)o蝌以。 那有沒有一勞永逸的辦法呢?那必須是得有的何之!
其實(shí)也很簡(jiǎn)單跟畅,我們需要在入口文件main.dart文件中修改:
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Container(color: Colors.white),
builder: (context, widget) {
return MediaQuery(
//設(shè)置文字大小不隨系統(tǒng)設(shè)置改變
data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
child: widget,
);
},
);
}
}
我們通過在state的build函數(shù)中,builder屬性設(shè)置MediaQuery的textScaleFactor固定為1.0溶推,這樣整個(gè)flutter項(xiàng)目中的文字的縮放率都變成了1.0徊件,不會(huì)再隨系統(tǒng)改變