Flutter 例外:未找到任何材质本地化。尝试显示AlertDialog时
试图通过从父窗口小部件调用函数来显示警报对话框 代码如下:Flutter 例外:未找到任何材质本地化。尝试显示AlertDialog时,flutter,Flutter,试图通过从父窗口小部件调用函数来显示警报对话框 代码如下: void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: Center( child: RaisedButt
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: RaisedButton(
onPressed: () {
popUp(context);
},
child: Text("Click"),
),
),
),
);
}
void popUp(BuildContext context) {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(title: Text("ok"),);
},
);
}
}
但有以下例外:
I/颤振(4041):══╡ 用手势捕捉异常╞═══════════════════════════════════════════════════════════════════
I/flatter(4041):在处理手势时抛出以下断言:
I/颤振(4041):未发现材料定位。
I/flatter(4041):MyApp小部件需要本地化小部件祖先提供MaterialLocalization。
I/flatter(4041):本地化用于生成许多不同的消息、标签和缩写
I/颤振(4041):由材料库提供。
I/flatter(4041):要引入MaterialLocalization,可以在应用程序的根目录下使用MaterialApp
I/flatter(4041):自动包含它们,或者添加带有MaterialLocalizations委托的本地化小部件。
I/flatter(4041):找不到MaterialLocalizations祖先的特定小部件是:
I/颤振(4041):MyApp
I/flatter(4041):这个小部件的祖先是:
I/颤振(4041):[根]
它的内容是
在应用程序的根目录下使用MaterialApp
,我已经这样做了。我在这里做错了什么?问题是,传递给弹出式
函数的上下文
变量实际上来自根。如果有意义,则它不包含在材料PP
中
要解决这个问题,您可以重构小部件,使其具有自己的小部件的主体,或者使用生成器,如:
@覆盖
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
body:Builder(Builder:(上下文)=>Center(
孩子:升起按钮(
已按下:(){
弹出窗口(上下文);
},
子项:文本(“单击”),
),
)),
),
);
}