Flutter ボタンを押した際の３つの関数発動パターン 

#こんな感じ
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Flutter<br>３つの関数発動パターン <a href="https://t.co/S9yf7CnKmv">pic.twitter.com/S9yf7CnKmv</a></p>&mdash; げん げんと (@gento34165638) <a href="https://twitter.com/gento34165638/status/1277549409840988161?ref_src=twsrc%5Etfw">June 29, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

#関数発動には３パターンある
状況によって使い分けてみてはいかがでしょう？

##関数名で呼び出す

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  void answerQuestion() {
    print('押されましたね');
  }

  @override
  Widget build(BuildContext context) {
    var questions = ['何が食べたい？', 'どこに行きたい？'];
    return MaterialApp(
      home: Scaffold(
          appBar: AppBar(
            title: Text('My First....'),
          ),
          body: Column(
            children: [
              Text('関数発動の３パターン'),
              RaisedButton(
                child: Text('１つ目'),
                onPressed: answerQuestion,
              ),
            ],
          )),
    );
  }
}
```

##名無しで呼び出す　その１
一度しか呼び出すことがなく、尚且つ短いコードで完結する場合に便利

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    var questions = ['何が食べたい？', 'どこに行きたい？'];
    return MaterialApp(
      home: Scaffold(
          appBar: AppBar(
            title: Text('My First....'),
          ),
          body: Column(
            children: [
              Text('関数発動の３パターン'),
              RaisedButton(
                child: Text('２つ目'),
                // Anonymous Functions
                onPressed: () => print('２つ目が押されたよ'),
              ),
            ],
          )),
    );
  }
}
```

##名無しで呼び出す　その２
その１と同じで、一度しか呼び出すことがない場合に便利。
**そしてこの書き方は、長いコードでも書くことができる。**

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    var questions = ['何が食べたい？', 'どこに行きたい？'];
    return MaterialApp(
      home: Scaffold(
          appBar: AppBar(
            title: Text('My First....'),
          ),
          body: Column(
            children: [
              Text('関数発動の３パターン'),
             RaisedButton(
                child: Text('３つ目'),
                //　Anonymous Functions for long code
                onPressed: () {
                  // 少し長い処理の場合
                  print('３つ目が押されたよ');
                },
              ),
            ],
          )),
    );
  }
}
```

#全部のパターン

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  void answerQuestion() {
    print('押されましたね');
  }

  @override
  Widget build(BuildContext context) {
    var questions = ['何が食べたい？', 'どこに行きたい？'];
    return MaterialApp(
      home: Scaffold(
          appBar: AppBar(
            title: Text('My First....'),
          ),
          body: Column(
            children: [
              Text('関数発動の３パターン'),
              RaisedButton(
                child: Text('１つ目'),
                onPressed: answerQuestion,
              ),
              RaisedButton(
                child: Text('２つ目'),
                // Anonymous Functions
                onPressed: () => print('２つ目が押されたよ'),
              ),
              RaisedButton(
                child: Text('３つ目'),
                //　Anonymous Functions for long code
                onPressed: () {
                  // 少し長い処理の場合
                  print('３つ目が押されたよ');
                },
              ),
            ],
          )),
    );
  }
}
```