zoukankan      html  css  js  c++  java
  • Flutter 在使用MaterialApp之前获取MediaQueryData realease模式下会失效

    以下做法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();
      }
    }
  • 相关阅读:
    Bzoj1597 [Usaco2008 Mar]土地购买
    Bzoj1500 [NOI2005]维修数列
    模拟7 题解
    模拟6 题解
    模拟5 题解
    远古杂题 2
    远古杂题 1
    [NOIP2013]华容道 题解
    奇袭 CodeForces 526F Pudding Monsters 题解
    图论杂题
  • 原文地址:https://www.cnblogs.com/hbolin/p/12564494.html
Copyright © 2011-2022 走看看