Flutter Doc JPのSimpleDialogで詰まる、 AppBarが表示されなかった


![simple_dialog.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/308088/06bb4fbf-80dd-5d7c-1a2f-3595b9aac62c.gif)

詰まっていたのは以下の部分
AppBarが表示されない
チュートリアルの写経をメインでやっていたので、
各ウィジェットの関係などがわからなかった

```main.dart
return new Container(
      padding: new EdgeInsets.all(32.0),
      child: new Center(
        child: new Column(
          children: <Widget>[
            new Text(_value, style: TextStyle(fontSize: 50, color: Colors.blueAccent, fontWeight: FontWeight.w600),),
            new RaisedButton(onPressed: () {openDialog(context);}, child: new Text('ダイアログを開く'),)
          ],
        ),
      ),
    );
```

初心者がerrorに悩んで時間を浪費するのは無駄やと思い
基礎から学ぼうとUdemyで以下の2つを購入
セールで1800円くらいやった、私は世界に愛されている

https://www.udemy.com/course/ft-fb-mk/

https://www.udemy.com/course/flutter-bootcamp-with-dart/



とりあえず基礎がないので、日本語のこちらからやることにした。

https://www.udemy.com/course/ft-fb-mk/

Dartの文法やFlutterのWidgetやStateなど何回も5秒巻き戻して理解するまで聞いて
メモをコードにコメントアウトしてnotionで管理するようにした、いつでも見返せるように

演習がてら Flutter Doc JPのSimpleDialogで詰まってたの解消しようと
自分であれやこれや頑張ったが、結局答えは

https://www.udemy.com/course/ft-fb-mk/

セクション3: Flutterのウィジェット レイアウトにあった

以下解消したコード

```main.dart
return new Scaffold(
          appBar:new AppBar(
            title:new Text('Dialog'),
          ),
          body:new Center(
           child:new Container(
            padding: new EdgeInsets.all(32.0),
              child: new Column(
                children: <Widget>[
                  new Text(_value, style: TextStyle(fontSize: 50, color: Colors.blueAccent, fontWeight: FontWeight.w600),),
                  new RaisedButton(onPressed: () {openDialog(context);}, child: new Text('ダイアログを開く'),)
              ],
            ),
          )
        ),
      );
```


SimpleDialogできちんと動作したコード
以下全文

```main.dart
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget{
  @override
  Widget build(BuildContext context){
    return MaterialApp(
        home:MainPage()
    );
  }
}

class MainPage extends StatefulWidget{
  @override
  _MainPageState createState () => _MainPageState();

}

enum Answers{
  YES,
  NO
}
class _MainPageState extends State<MainPage> {

  String _value = '';

  void _setValue(String value) => setState(() => _value = value);

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
          appBar:new AppBar(
            title:new Text('Dialog'),
          ),
          body:new Center(
           child:new Container(
            padding: new EdgeInsets.all(32.0),
              child: new Column(
                children: <Widget>[
                  new Text(_value, style: TextStyle(fontSize: 50, color: Colors.blueAccent, fontWeight: FontWeight.w600),),
                  new RaisedButton(onPressed: () {openDialog(context);}, child: new Text('ダイアログを開く'),)
              ],
            ),
          )
        ),
      );
  }

  void openDialog(BuildContext context) {
    showDialog<Answers>(
      context: context,
      builder: (BuildContext context) => new SimpleDialog(
        title: new Text('SimpleDialog'),
        children: <Widget>[
          createDialogOption(context, Answers.YES, 'Yes'),
          createDialogOption(context, Answers.NO, 'No')
        ],
      ),
    ).then((value) {
      switch(value) {
        case Answers.YES:
          _setValue('Yes');
          break;
        case Answers.NO:
          _setValue('No');
          break;
      }
    });
  }


  createDialogOption(BuildContext context, Answers answer, String str) {
    return new SimpleDialogOption(child: new Text(str),onPressed: (){Navigator.pop(context, answer);},);
  }
}

```