LoginSignup
0
0

More than 3 years have passed since last update.

Dart:関数の書き方

Posted at

これは何か

以下のコードを書いていて、見慣れない書き方があったのでいつでも振り替えられるようにメモ。

main.dart
import 'package:flutter/material.dart';
import 'package:audioplayers/audio_cache.dart';

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

class XylophoneApp extends StatelessWidget {
  void playSound(int soundNumber) {
    final player = AudioCache();
    player.play('note$soundNumber.wav');
  }

  Expanded buildKey({Color color, int soundNumber}) {
    return Expanded(
      child: FlatButton(onPressed: () {
        playSound(soundNumber);
      },
        color: color),
    );
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: SafeArea(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: [
              buildKey(color: Colors.red, soundNumber: 1),
              buildKey(color: Colors.blue, soundNumber: 2),
              buildKey(color: Colors.yellow, soundNumber: 3)
            ],
          ),
        ),
      ),
    );
  }
}

関数を定義する

Dartは関数の返り値の型を定義することもできるし(ここではExpandedを指す)

main.dart
Expanded buildKey({Color color, int soundNumber}) {
    return Expanded(
      child: FlatButton(onPressed: () {
        playSound(soundNumber);
      },
        color: color),
    );

型を定義しなくても良い。型を定義した方が視認性が良い。

main.dart
buildKey({Color color, int soundNumber}) {
    return Expanded(
      child: FlatButton(onPressed: () {
        playSound(soundNumber);
      },
        color: color),
    );

名前付き引数

引数に{}をいれる記述を名前付き引数と呼ぶみたい。
個人的にあまり見ない書き方だったのでメモ。

main.dart
Expanded buildKey({Color color, int soundNumber}) {
    return Expanded(
      child: FlatButton(onPressed: () {
        playSound(soundNumber);
      },
        color: color),
    );

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0