105 lines
2.8 KiB
Dart
105 lines
2.8 KiB
Dart
/*import 'dart:async';
|
|
|
|
import 'package:audioplayers/audioplayers.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
class AudioPlayerContainer extends StatefulWidget {
|
|
const AudioPlayerContainer({Key? key}) : super(key: key);
|
|
|
|
@override
|
|
_AudioPlayerContainerState createState() => _AudioPlayerContainerState();
|
|
}
|
|
|
|
class _AudioPlayerContainerState extends State<AudioPlayerContainer> {
|
|
List<AudioPlayer> players =
|
|
List.generate(4, (_) => AudioPlayer()..setReleaseMode(ReleaseMode.stop));
|
|
int selectedPlayerIdx = 0;
|
|
|
|
AudioPlayer get selectedPlayer => players[selectedPlayerIdx];
|
|
List<StreamSubscription> streams = [];
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
players.asMap().forEach((index, player) {
|
|
streams.add(
|
|
player.onPlayerComplete.listen(
|
|
(it) => toast(
|
|
'Player complete!',
|
|
textKey: Key('toast-player-complete-$index'),
|
|
),
|
|
),
|
|
);
|
|
streams.add(
|
|
player.onSeekComplete.listen(
|
|
(it) => toast(
|
|
'Seek complete!',
|
|
textKey: Key('toast-seek-complete-$index'),
|
|
),
|
|
),
|
|
);
|
|
});
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
streams.forEach((it) => it.cancel());
|
|
super.dispose();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
title: const Text('audioplayers example'),
|
|
),
|
|
body: Column(
|
|
children: [
|
|
Padding(
|
|
padding: const EdgeInsets.all(8.0),
|
|
child: Center(
|
|
child: Tgl(
|
|
options: ['P1', 'P2', 'P3', 'P4']
|
|
.asMap()
|
|
.map((key, value) => MapEntry('player-$key', value)),
|
|
selected: selectedPlayerIdx,
|
|
onChange: (v) => setState(() => selectedPlayerIdx = v),
|
|
),
|
|
),
|
|
),
|
|
Expanded(
|
|
child: Tabs(
|
|
tabs: [
|
|
TabData(
|
|
key: 'sourcesTab',
|
|
label: 'Src',
|
|
content: SourcesTab(player: selectedPlayer),
|
|
),
|
|
TabData(
|
|
key: 'controlsTab',
|
|
label: 'Ctrl',
|
|
content: ControlsTab(player: selectedPlayer),
|
|
),
|
|
TabData(
|
|
key: 'streamsTab',
|
|
label: 'Stream',
|
|
content: StreamsTab(player: selectedPlayer),
|
|
),
|
|
TabData(
|
|
key: 'audioContextTab',
|
|
label: 'Ctx',
|
|
content: AudioContextTab(player: selectedPlayer),
|
|
),
|
|
TabData(
|
|
key: 'loggerTab',
|
|
label: 'Log',
|
|
content: const LoggerTab(),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}*/ |