Flutter 显示“材质”对话框,未找到材质本地化
我尝试在我的应用程序上创建对话功能。 但是“找不到MaterialLocalizations”错误出现了,它没有打开弹出窗口。 我不知道如何解决这个问题,即使我试图找到其他参考。 请让我知道如何解决这个问题Flutter 显示“材质”对话框,未找到材质本地化,flutter,dialog,Flutter,Dialog,我尝试在我的应用程序上创建对话功能。 但是“找不到MaterialLocalizations”错误出现了,它没有打开弹出窗口。 我不知道如何解决这个问题,即使我试图找到其他参考。 请让我知道如何解决这个问题 import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; void main() { runApp(OverApp()); } class OverApp extends Stat
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
void main() {
runApp(OverApp());
}
class OverApp extends StatefulWidget {
@override
_OverAppState createState() => _OverAppState();
}
class _OverAppState extends State<OverApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('List'),
),
body: RaisedButton(
child: Text('Show Material Dialog'),
onPressed: _showMaterialDialog,
),
),
);
}
_showMaterialDialog() {
showDialog(
context: context,
builder: (_) => new AlertDialog(
title: new Text("Material Dialog"),
content: new Text("Hey!"),
actions: <Widget>[
FlatButton(
child: Text('Close me!'),
onPressed: () {
Navigator.of(context).pop();
},
)
],
));
}
}
import'包装:flift/cupertino.dart';
进口“包装:颤振/材料.省道”;
void main(){
runApp(OverApp());
}
类OverApp扩展了StatefulWidget{
@凌驾
_OverAppState createState()=>\u OverAppState();
}
类_OverAppState扩展状态{
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
appBar:appBar(
标题:文本(“列表”),
),
主体:升起按钮(
子项:文本(“显示材质对话框”),
按下按钮:_showMaterialDialog,
),
),
);
}
_showMaterialDialog(){
显示对话框(
上下文:上下文,
生成器:()=>新建警报对话框(
标题:新文本(“材料对话框”),
内容:新文本(“嘿!”),
行动:[
扁平按钮(
孩子:文本(“关闭我!”),
已按下:(){
Navigator.of(context.pop();
},
)
],
));
}
}
您需要将MaterialApp
放入runApp
(或者制作另一个小部件,将Scaffold
放入其构建中,并将此新小部件用作MaterialApp
的主页)
import'包装:flift/cupertino.dart';
进口“包装:颤振/材料.省道”;
void main(){
runApp(MaterialApp(home:OverApp());
}
类OverApp扩展了StatefulWidget{
@凌驾
_OverAppState createState()=>\u OverAppState();
}
类_OverAppState扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(
标题:文本(“列表”),
),
主体:升起按钮(
子项:文本(“显示材质对话框”),
按下按钮:_showMaterialDialog,
),
);
}
_showMaterialDialog(){
显示对话框(
上下文:上下文,
生成器:()=>新建警报对话框(
标题:新文本(“材料对话框”),
内容:新文本(“嘿!”),
行动:[
扁平按钮(
孩子:文本(“关闭我!”),
已按下:(){
Navigator.of(context.pop();
},
)
],
));
}
}
谢谢您的回答。它工作得很好。但我有一个问题,为什么我应该把MaterialApp放在runApp中,即使我已经在构建小部件中添加了它。你也用另一种方式评论。你能告诉我怎么做吗?非常感谢。很乐意帮忙!此错误背后的原因是根目录中的上下文(其中MaterialApp
不是用于显示对话框的上下文),因此它是错误的上下文。通过将MaterialApp
放在外部或制作另一个小部件,传递到showDialog
的上下文将是正确的@김동현
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(home: OverApp()));
}
class OverApp extends StatefulWidget {
@override
_OverAppState createState() => _OverAppState();
}
class _OverAppState extends State<OverApp> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('List'),
),
body: RaisedButton(
child: Text('Show Material Dialog'),
onPressed: _showMaterialDialog,
),
);
}
_showMaterialDialog() {
showDialog(
context: context,
builder: (_) => new AlertDialog(
title: new Text("Material Dialog"),
content: new Text("Hey!"),
actions: <Widget>[
FlatButton(
child: Text('Close me!'),
onPressed: () {
Navigator.of(context).pop();
},
)
],
));
}
}