これは何か
以下のコードを書いていて、見慣れない書き方があったのでいつでも振り替えられるようにメモ。
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),
);