📚

Flutter audioplayersのクラス作成したった。

に公開

audioplayersのクラス作成

ボタン押下時に音が鳴るようにしたく、なんならプロバイダーで作成しちゃおうということで下記を作成。チートシートである。
https://pub.dev/packages/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