| flutter dialog异常Another exception was thrown: No MaterialLocalizations found  
 import 'package:flutter/material.dart';
import 'package:scoped_model/scoped_model.dart';
void main() {
  runApp(new RootLayout());
}
class RootLayout extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return new RootLayoutM();
  }
}
class RootLayoutM extends State<RootLayout> {
  _showMyMaterialDialog(BuildContext context) {
    print("_showMyMaterialDialog");
    showDialog(
        context: context,
        builder: (context) {
          return new AlertDialog(
            title: new Text("title"),
            content: new Text("内容内容内容内容内容内容内容内容内容内容内容"),
            actions: <Widget>[
              new FlatButton(
                onPressed: () {
                  Navigator.of(context).pop();
                },
                child: new Text("确认"),
              ),
              new FlatButton(
                onPressed: () {
                  Navigator.of(context).pop();
                },
                child: new Text("取消"),
              ),
            ],
          );
        });
  }
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
        body: new Center(
          child: new Text("show simple dialog",
              style: new TextStyle(color: Color(0xFF00FF00))),
        ),
        floatingActionButton: new FloatingActionButton(
            child: new Text("showDialog"),
            onPressed: () {
              _showMyMaterialDialog(context);
            }),
      ),
    );
    ;
  }
}  这里顶层的context所在的Widget的顶层Widget属于StatefulWidget为什么还不能显示dialog呢 这里发现  
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
        body: new Center(
          child: new Text("show simple dialog",
              style: new TextStyle(color: Color(0xFF00FF00))),
        ),
        floatingActionButton: new FloatingActionButton( child: new Text("showDialog"), onPressed: () { _showMyMaterialDialog(context); }), ),
    );
    ;
  } 这个FloatingActionButton在外面包一层就可以了  
 class MyFloat extends StatelessWidget{
  _showMyMaterialDialog(BuildContext context) {
    print("_showMyMaterialDialog");
    showDialog(
        context: context,
        builder: (context) {
          return new AlertDialog(
            title: new Text("title"),
            content: new Text("内容内容内容内容内容内容内容内容内容内容内容"),
            actions: <Widget>[
              new FlatButton(
                onPressed: () {
                  Navigator.of(context).pop();
                },
                child: new Text("确认"),
              ),
              new FlatButton(
                onPressed: () {
                  Navigator.of(context).pop();
                },
                child: new Text("取消"),
              ),
            ],
          );
        });
  }
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return new FloatingActionButton(
        child: new Text("showDialog"),
        onPressed: () {
          _showMyMaterialDialog(context);
        });
  }   完整代码如下  
 import 'package:flutter/material.dart';
import 'package:scoped_model/scoped_model.dart';
void main() {
  runApp(new RootLayout());
}
class RootLayout extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return new RootLayoutM();
  }
}
class RootLayoutM extends State<RootLayout> {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
        body: new Center(
          child: new Text("show simple dialog",
              style: new TextStyle(color: Color(0xFF00FF00))),
        ),
        floatingActionButton: new MyFloat(),
      )
    );
  }
 
}
class MyFloat extends StatelessWidget{
  _showMyMaterialDialog(BuildContext context) {
    print("_showMyMaterialDialog");
    showDialog(
        context: context,
        builder: (context) {
          return new AlertDialog(
            title: new Text("title"),
            content: new Text("内容内容内容内容内容内容内容内容内容内容内容"),
            actions: <Widget>[
              new FlatButton(
                onPressed: () {
                  Navigator.of(context).pop();
                },
                child: new Text("确认"),
              ),
              new FlatButton(
                onPressed: () {
                  Navigator.of(context).pop();
                },
                child: new Text("取消"),
              ),
            ],
          );
        });
  }
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return new FloatingActionButton(
        child: new Text("showDialog"),
        onPressed: () {
          _showMyMaterialDialog(context);
        });
  }
}   |