[flutter] 플러터에서 오프라인 오디오 재생 방법

플러터는 Google에서 개발한 크로스 플랫폼 모바일 애플리케이션 개발 프레임워크로, 다양한 기기에서 동작하는 앱을 만들고자 할 때 유용하게 사용됩니다.

만약 플러터 앱에서 오프라인 상태일 때 오디오 파일을 재생하고 싶다면, 로컬에 저장된 오디오 파일을 사용해야 합니다. 이 글에서는 플러터에서 오프라인 상태에서 오디오 파일을 재생하는 방법에 대해 알아보겠습니다.

1. dependecies 추가

플러터 앱에서 오디오를 재생하기 위해 먼저 다음과 같은 의존성을 추가해야 합니다.

dependencies:
  audioplayer: ^0.19.2

위의 코드는 audioplayer 패키지를 사용하도록 프로젝트에 추가하는 것을 의미합니다.

2. 파일 전용 폴더 생성

로컬에 저장된 오디오 파일을 재생하기 위해 앱에서 사용할 전용 폴더를 생성해야 합니다. 앱의 파일 시스템에 접근하기 위해 path_provider 패키지를 사용하겠습니다. 다음과 같이 pubspec.yaml 파일에 path_provider 패키지를 의존성으로 추가합니다.

dependencies:
  path_provider: ^2.0.2

3. 앱에서 오디오 파일 저장

플러터에서 오디오 파일을 재생하려면 해당 파일을 앱의 파일 시스템에 저장해야 합니다. 이를 위해 다음과 같은 코드를 사용하여 앱 파일 시스템의 전용 폴더에 오디오 파일을 저장합니다.

import 'dart:async';
import 'package:flutter/services.dart';
import 'package:path_provider/path_provider.dart';
import 'package:audioplayer/audioplayer.dart';

AudioPlayer audioPlayer = AudioPlayer();

Future<void> saveAudioFile() async {
  Directory appDirectory = await getApplicationSupportDirectory();
  ByteData byteData = await rootBundle.load('assets/audio.mp3');
  final file = File('${appDirectory.path}/audio.mp3');
  await file.writeAsBytes(byteData.buffer.asUint8List(byteData.offsetInBytes, byteData.lengthInBytes));
}

void playAudio() async {
  await saveAudioFile();
  audioPlayer.play('${appDirectory.path}/audio.mp3', isLocal: true);
}

위의 코드에서 saveAudioFile() 함수는 앱의 파일 시스템의 전용 폴더(getApplicationSupportDirectory())에 assets/audio.mp3 파일을 저장합니다. playAudio() 함수는 해당 오디오 파일을 재생합니다.

4. 재생 버튼 추가

마지막으로, 앱의 사용자 인터페이스에 오디오를 재생할 수 있는 버튼을 추가해야 합니다. 예를 들어, 다음과 같은 코드를 사용하여 재생 버튼을 추가할 수 있습니다.

IconButton(
  icon: Icon(Icons.play_arrow),
  onPressed: () {
    playAudio();
  },
)

위의 코드에서는 IconButton 위젯을 사용하여 재생 버튼을 생성하고, 사용자가 버튼을 누를 때 playAudio() 함수를 호출하여 오디오 파일을 재생합니다.

결론

위의 단계를 따르면 플러터 앱에서 오프라인 상태에서 오디오 파일을 재생할 수 있습니다. 이를 통해 사용자는 인터넷 연결이 없는 환경에서도 음악이나 오디오 파일을 즐길 수 있습니다.

참고 문서