以下做法debug模式下是有效的,但是在realease模式下会有bug:
请使用以下做法:
Flutter 在使用MaterialApp之前获取MediaQueryData 2
在使用 flutter_screenutil 这个插件的时候,需要注册
ScreenUtil.init(context, 750, height: 1560, allowFontScaling: true);
这句话,需要放那里呢?一般情况下都是放到MaterialApp之后的HomePage上。
这样子就出现一个问题了。我需要在MaterialApp配置主题上就需要用到 flutter_screenutil 插件
ScreenUtil().setSp(getPrimaryTextSize())
所以必须需要将 ScreenUtil.init 放到MaterialApp之前。
代码如下:
void main() { runApp(RunApp()); } class RunApp extends StatefulWidget { @override _RunAppState createState() => _RunAppState(); } class _RunAppState extends State<RunApp> { @override Widget build(BuildContext context) { return MediaQuery( data: MediaQueryData.fromWindow(ui.window), child: ScreenApp(), ); } } class ScreenApp extends StatefulWidget { @override _ScreenAppState createState() => _ScreenAppState(); } class _ScreenAppState extends State<ScreenApp> { @override Widget build(BuildContext context) { // 注册 ScreenUtil.init(context, 750, height: 1560, allowFontScaling: true); return MyApp(); } }