Flutter 在使用MaterialApp之前获取MediaQueryData realease模式下会失效
以下做法debug模式下是有效的,但是在realease模式下会有bug:
请使用以下做法:
Flutter 在使用MaterialApp之前获取MediaQueryData 2
在使用 flutter_screenutil 这个插件的时候,需要注册
ScreenUtil.init(context, width: 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, width: 750, height: 1560, allowFontScaling: true); return MyApp(); } }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步