Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

こんな感じ

関数発動には3パターンある

状況によって使い分けてみてはいかがでしょう?

関数名で呼び出す

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('関数発動の3パターン'),
              RaisedButton(
                child: Text('1つ目'),
                onPressed: answerQuestion,
              ),
            ],
          )),
    );
  }
}

名無しで呼び出す その1

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

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('関数発動の3パターン'),
              RaisedButton(
                child: Text('2つ目'),
                // Anonymous Functions
                onPressed: () => print('2つ目が押されたよ'),
              ),
            ],
          )),
    );
  }
}

名無しで呼び出す その2

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

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('関数発動の3パターン'),
             RaisedButton(
                child: Text('3つ目'),
                // Anonymous Functions for long code
                onPressed: () {
                  // 少し長い処理の場合
                  print('3つ目が押されたよ');
                },
              ),
            ],
          )),
    );
  }
}

全部のパターン

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('関数発動の3パターン'),
              RaisedButton(
                child: Text('1つ目'),
                onPressed: answerQuestion,
              ),
              RaisedButton(
                child: Text('2つ目'),
                // Anonymous Functions
                onPressed: () => print('2つ目が押されたよ'),
              ),
              RaisedButton(
                child: Text('3つ目'),
                // Anonymous Functions for long code
                onPressed: () {
                  // 少し長い処理の場合
                  print('3つ目が押されたよ');
                },
              ),
            ],
          )),
    );
  }
}
kokogento
エストニアの電子国民e-Residencyです。2020/09より、東京で人生初の正社員に! 〇活を記録するアプリをIonic + Angularで開発し、運営中。アプリについては下記URLを参照。現在Vueを学習中。。。
https://gengendiary.world/first-app/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away