📚
Flutter audioplayersのクラス作成したった。
audioplayersのクラス作成
ボタン押下時に音が鳴るようにしたく、なんならプロバイダーで作成しちゃおうということで下記を作成。チートシートである。
import 'package:audioplayers/audioplayers.dart';
class SoundEffect {
///
final AudioPlayer _sePlayer;
// コンストラクタ: _sePlayer を初期化
SoundEffect() : _sePlayer = AudioPlayer();
/// サウンドを再生
Future<void> playSound() async {
await _sePlayer.play(AssetSource('sound/hogehoge.mp3'));
}
/// AudioPlayer を破棄
void dispose() {
_sePlayer.dispose();
}
}
SoundEffectクラスを利用するプロバイダー
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'sound_effect.dart';
part 'sound_effect.g.dart';
(keepAlive: true)
SoundEffect soundEffectProvider(SoundEffectProviderRef ref) {
final service = SoundEffect();
ref.onDispose(() {
service.dispose();
});
return service;
}
使い方
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'sound_effect_provider.dart';
class SoundButtonPage extends ConsumerWidget {
const SoundButtonPage({Key? key}) : super(key: key);
Widget build(BuildContext context, WidgetRef ref) {
final soundEffect = ref.watch(soundEffectProvider);
return Scaffold(
appBar: AppBar(
title: const Text('サウンド再生デモ'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
soundEffect.playSound();
},
child: const Text('サウンドを再生'),
),
),
);
}
}
以上!!!
Discussion