Мой код предназначен для воспроизведения песни, когда пользователь нажимает кнопку воспроизведения, и мне нужна кнопка, чтобы остановить воспроизведение музыки c. Я выбрал воспроизведение музыки c следующим образом, потому что функция аудио-кэша почему-то не работала в моем коде (я получал сообщение об ошибке, что мой файл не может быть загружен), хотя этот метод работает, я понятия не имею, как чтобы не дать музы c играть вот так.
import 'dart:io';
import 'package:audioplayers/audio_cache.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:path_provider/path_provider.dart';
import 'package:audioplayers/audioplayers.dart';
import 'dart:io';
class bodyscan extends StatefulWidget {
@override
_bodyscanState createState() => _bodyscanState();
}
enum PlayerState {stopped,playing,paused}
class _bodyscanState extends State<bodyscan> {
String mp3Uri = "";
void _playsound(){
AudioPlayer player = AudioPlayer();
player.play(mp3Uri);
}
void _loadsound() async {
final ByteData data = await rootBundle.load("audio/doomed.m4a");
Directory tempDir = await getTemporaryDirectory();
File tempFile = File('${tempDir.path}/doomed.m4a');
await tempFile.writeAsBytes(data.buffer.asUint8List(), flush:true);
mp3Uri = tempFile.uri.toString();
}
@override
void initState() {
_loadsound();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
InkWell(
enableFeedback: false,
child :Container (
color: Colors.blue,
padding: const EdgeInsets.all(20.0),
child: Text('PlaySound', style: TextStyle(color: Colors.white),) ,
),
onTap: _playsound,
),
],
),
)
);
}
}