首页 > 移动平台 > 详细

Flutter 在使用MaterialApp之前获取MediaQueryData

时间:2020-03-25 11:40:44      阅读:122      评论:0      收藏:0      [点我收藏+]

在使用 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();
  }
}

 

Flutter 在使用MaterialApp之前获取MediaQueryData

原文:https://www.cnblogs.com/hbolin/p/12564494.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!