【发布时间】:2021-05-26 05:05:50
【问题描述】:
我收到一条错误消息,提示 使用 MediaQuery.of(context) 时未找到 MediaQuery 小部件祖先。这是我的代码,我在 MaterialApp 中使用 MediaQuery.of(context) 但它仍然给我错误。有人可以帮忙吗?
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
final mediaQuery = MediaQuery.of(context);
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Responsive'),
),
body: SingleChildScrollView(
child: Column(
children: [
Container(
color: Colors.red,
height: mediaQuery.size.height,
),
Container(
color: Colors.amber,
height: 200,
),
],
),
),
),
);
}
}
错误
【问题讨论】:
-
您只能为
context调用MediaQuery.of,它是MaterialApp的子(直接或间接) - 例如:runApp(MaterialApp(body: MyApp(), ...)) -
不明白。您能否提供一个工作代码 sn-p 以便我理解?
-
我已经给了你:而不是
void main() => runApp(MyApp());做void main() => runApp(MaterialApp(body: MyApp()));(当然从MyApp中删除MaterialApp) -
哎呀,对不起,应该是
home:,当然不是body: -
是的!我试过这个
void main() => runApp(MaterialApp(home: Scaffold(body: MyApp())));并且成功了,但是在主函数中包含这么多东西是一个好习惯吗?