import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'info.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() => MyAppState();
}
class MyAppState extends State<MyApp> {
List<info> li = [
info(name: 'text1', length: 170, date: DateTime.now()),
info(name: 'text2', length: 175, date: DateTime.now()),
info(name: 'text3', length: 180, date: DateTime.now()),
info(name: 'text4', length: 180, date: DateTime.now()),
info(name: 'text5', length: 180, date: DateTime.now()),
info(name: 'text6', length: 180, date: DateTime.now()),
info(name: 'text7', length: 180, date: DateTime.now()),
info(name: 'text8', length: 180, date: DateTime.now()),
info(name: 'text9', length: 180, date: DateTime.now()),
];
void x (BuildContext ctx){
showModalBottomSheet(context: ctx, builder: (ctx){
return ListView.builder(
itemCount: li.length,
itemBuilder: (cx , index){
return Padding(
padding: EdgeInsets.all(10.0),
child: Card(
shadowColor: Colors.red,
elevation: 10.0,
color: Colors.blue,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Column(
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
Text(
li[index].name,
style: TextStyle(color: Colors.white, fontSize: 20),
),
Text(
'${li[index].length}',
style: TextStyle(color: Colors.white, fontSize: 20),
),
],
),
Text(
'${li[index].date}',
style: TextStyle(color: Colors.white, fontSize: 20),
),
],
),
),
),
);
},
);
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'App name',
home: Scaffold(
appBar: AppBar(
title: Text('This is the App bar'),
),
body: Container(
padding: EdgeInsets.all(10.0),
height: double.infinity,
color: Colors.black,
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.add),
onPressed: () => x(context)
),
),
);
}
}
错误:
处理手势时引发了以下Assert:未找到MediaQuery小部件祖先。
MyApp小部件需要MediaQuery小部件祖先。找不到MediaQuery祖先的特定小部件为:我的应用程序状态:MyAppState#7e07c受影响小部件的所有权链为:"我的应用程序← [根目录]"
- 从传递给MediaQuery. of()的上下文开始,**找不到MediaQuery祖先。发生这种情况的原因可能是您尚未添加WidgetsApp、CupertinoApp或MaterialApp小部件(这些小部件引入了MediaQuery),或者您使用的上下文来自这些小部件之上的小部件。
我的代码有什么问题?我已经使用了scaffold和MaterialApp小部件,讲师没有使用MediaQuery,我甚至不知道这意味着什么,但对他来说很有效!
3条答案
按热度按时间qoefvg9y1#
这是一个常见的错误,当使用继承的小部件,如
MediaQuery
。现在你可能没有明确使用它,但从你的描述似乎Flutters的showModalBottomSheet
方法可能使用它。该错误告诉您在
context
之上找不到MediaQuery祖先(即WidgetsApp
、CupertinoApp
或MaterialApp
)。这意味着在此context
之上:这是正确的,因为您已经将
MaterialApp
小部件放置在此上下文的正下方,当您调用x(context)
时,它将在build
方法上方查找WidgetsApp
、CupertinoApp
或MaterialApp
。有两种简单的方法来解决这个问题:
1.创建新的无状态/有状态小部件并将其传递给
home
参数,或者1.使用
Builder
小部件并将其传递给home
参数。这两个解决方案都将为您提供一个新的
context
,它将有一个MediaQuery小部件作为它的祖先。在小部件检查器中查看小部件树总是很有帮助的。7xzttuei2#
你也许想这么做
void main() {runApp(const MaterialApp(home: RandomName() ,));}
''
5kgi1eie3#
您需要使用MaterialApp对其进行 Package 。