Flutter 显示“材质”对话框,未找到材质本地化

Flutter 显示“材质”对话框,未找到材质本地化,flutter,dialog,Flutter,Dialog,我尝试在我的应用程序上创建对话功能。 但是“找不到MaterialLocalizations”错误出现了,它没有打开弹出窗口。 我不知道如何解决这个问题,即使我试图找到其他参考。 请让我知道如何解决这个问题 import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; void main() { runApp(OverApp()); } class OverApp extends Stat

我尝试在我的应用程序上创建对话功能。 但是“找不到MaterialLocalizations”错误出现了,它没有打开弹出窗口。 我不知道如何解决这个问题,即使我试图找到其他参考。 请让我知道如何解决这个问题

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();
                  },
                )
              ],
            ));
  }
}