如何在构建方法之外访问mediaquery.of(context).width.height?

时间:2019-02-27 01:12:32

标签: flutter

我不需要访问mediaquery方法,只需返回本地设备高度和宽度的任何内容即可。我要实现的是一个反应式主题,该主题将根据设备的大小缩放文本大小。

3 个答案:

答案 0 :(得分:0)

这正是我在应用程序中所做的事情,我也不想使用mediacontext(因为有时我没有上下文),请看以下示例:

https://github.com/lhcdims/statemanagement02

尝试查看lib / ScreenVariables.dart中的“ sv”类

然后在main.dart中调用sv.init(),然后可以在任何dart文件中的任何位置使用sv.screenwidth,sv.defaultfontsize ...等。

答案 1 :(得分:0)

这样做很简单。这是我在StatefulWidget中执行的操作:

class MyPage extends StatefulWidget {
 
  @override
  _MyPageState createState() => _MyPageState();
}

class _MyPageState extends State<MyPage> {
 
   var screenHeight = window.physicalSize.height / window.devicePixelRatio;
   var screenWidth = window.physicalSize.width / window.devicePixelRatio;
   .    .    .    .
   .    .    .    .
   .    .    .    .

答案 2 :(得分:-1)

您不能直接在build方法之外访问Context对象。您可以将Context对象从build方法内部传递到单独的build函数。

Widget build(BuildContext context){
  return Container(
    children: buildChildren(context)
  );
}

Widget buildChildren(BuildContext context){
  ...
}