Biblioteca Flutter para reprodução de áudio com playlist, controles de reprodução (play/pause), seek, e navegação entre faixas (próxima e anterior). Desenvolvido para ser fácil de integrar em projetos Flutter, inclusive no FlutterFlow.
- Recursos Principais
- Instalação
- Uso Básico
- Exemplo Completo
- Integração com FlutterFlow
- Testes
- Contribuindo
- Licença
- Reprodução de Áudio: Utiliza o pacote
just_audiopara tocar arquivos MP3, entre outros formatos suportados. - Playlist: Suporta lista de músicas, avançando automaticamente para a próxima faixa.
- Controles de Reprodução:
- Play/Pause
- Avanço e retrocesso de tempo (por exemplo, 10 segundos)
- Próxima e anterior faixa
- Barra de Progresso: Mostra a posição atual, permitindo pular para qualquer ponto.
No seu projeto Flutter, adicione a dependência no arquivo pubspec.yaml:
dependencies:
flutter:
sdk: flutter
flutter_audio_player_library: ^<1.0.0>Para começar a usar o AudioPlayerWidget, basta passar uma lista de URLs de áudio para o construtor. O widget cuidará da reprodução, controles e navegação entre as faixas.
import 'package:flutter/material.dart';
import 'package:flutter_audio_player_library/flutter_audio_player_library.dart';
class MyCustomAudioPlayer extends StatelessWidget {
const MyCustomAudioPlayer({
super.key,
this.width,
this.height,
required this.musicUrls,
});
final double? width;
final double? height;
final List<String> musicUrls;
@override
Widget build(BuildContext context) {
return SizedBox(
width: width,
height: height,
child: AudioPlayerWidget(
audioUrls: musicUrls,
),
);
}
}
Aqui está um exemplo completo de como usar o AudioPlayerWidget em um aplicativo Flutter:
import 'package:flutter/material.dart';
import 'package:flutter_audio_player_library/flutter_audio_player_library.dart'; // Importe sua biblioteca
class MyCustomAudioPlayer extends StatelessWidget {
const MyCustomAudioPlayer({
super.key,
this.width,
this.height,
required this.musicUrls,
this.seekInterval,
this.playIcon,
this.pauseIcon,
this.nextIcon,
this.previousIcon,
this.replayIcon,
this.forwardIcon,
this.sliderActiveColor,
this.sliderInactiveColor,
});
final double? width;
final double? height;
final List<String> musicUrls;
final Widget playIcon;
final Widget pauseIcon;
final Widget nextIcon;
final Widget previousIcon;
final Widget replayIcon;
final Widget forwardIcon;
final Color sliderActiveColor;
final Color sliderInactiveColor;
@override
Widget build(BuildContext context) {
return SizedBox(
width: width,
height: height,
child: AudioPlayerWidget(
audioUrls: musicUrls,
seekInterval: seekInterval ?? const Duration(seconds: 10),
playIcon: playIconn ?? const Icon(Icons.play_arrow),
pauseIcon: pauseIconn ?? const Icon(Icons.pause),
nextIcon: nextIconn ?? const Icon(Icons.skip_next),
previousIcon: previousIconn ?? const Icon(Icons.skip_previous),
replayIcon: replayIcon ?? const Icon(Icons.replay_10),
forwardIcon: forwardIcon ?? const Icon(Icons.forward_10),
sliderActiveColor: sliderActiveColor ?? Colors.blue,
sliderInactiveColor: sliderInactiveColor ?? = Colors.grey,
),
);
}
}Para integrar o AudioPlayerWidget no FlutterFlow, siga os passos abaixo:
- Adicione o código do player ao seu projeto: Copie o código do
AudioPlayerWidgetpara o diretóriolibdo seu projeto FlutterFlow. - Crie um componente personalizado: No FlutterFlow, crie um componente personalizado e adicione o
AudioPlayerWidgetcomo um widget customizado. - Passe as URLs de áudio: Configure as URLs de áudio dinamicamente usando variáveis ou dados do backend.
Exemplo de configuração no FlutterFlow:
- Componente Personalizado:
AudioPlayerWidget - Propriedades:
audioUrls: Lista de URLs de áudio (pode ser passada como uma variável ou lista fixa).
Para garantir que o AudioPlayerWidget funcione corretamente, você pode escrever testes unitários e de widget. Aqui está um exemplo básico de teste de widget:
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'audio_player_widget.dart';
void main() {
testWidgets('AudioPlayerWidget test', (WidgetTester tester) async {
final audioUrls = [
'https://example.com/audio1.mp3',
'https://example.com/audio2.mp3',
];
await tester.pumpWidget(MaterialApp(
home: Scaffold(
body: AudioPlayerWidget(audioUrls: audioUrls),
),
));
expect(find.byType(AudioPlayerWidget), findsOneWidget);
});
}Contribuições são bem-vindas! Se você deseja contribuir para este projeto, siga os passos abaixo:
- Faça um fork do repositório.
- Crie uma branch para sua feature (
git checkout -b feature/nova-feature). - Commit suas mudanças (
git commit -m 'Adicionando nova feature'). - Push para a branch (
git push origin feature/nova-feature). - Abra um Pull Request.
Principal autor: Ildo Petri Junior
Se você tiver algum feedback ou sugestão, fico a sua disposição para você me contatar diretamente. Agradeço ao time da Agência BOZ por todo o suporte durante o desenvolvimento desta biblioteca.
Este projeto está licenciado sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.