flutter doctor
[✓] Flutter (Channel stable, 3.0.0, on macOS 12.3.1 21E258 darwin-x64, locale
zh-Hans-CN)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 13.3.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2021.2)
[✓] VS Code (version 1.71.2)
Severity
Result is not what expected
Cannot build my App ?
Minor issue ?
Platforms you faced the error
iOS [x]
Android ?
Flutter Web ?
Emulator ?
Real device ?
Describe the bug
A clear and concise description of what the bug is.
class SoundAnimationWidgetController extends GetxController {
final _state = RecordPlayState.record.obs;
RecordPlayState get state => _state.value;
set state(RecordPlayState value) {
_state.value = value;
}
late final StreamSubscription _recorderSubscription;
// StreamSubscription _dbPeakSubscription;
late final FlutterSoundRecorder flutterSound;
// 获取录音时长
final _recorderTxt = '00:00:00'.obs;
set recorderTxt(String value) {
_recorderTxt.value = value;
}
// 录音还是播放 true 录音 false 播放
final _isRecorder = true.obs;
bool get isRecorder => _isRecorder.value;
set isRecorder(bool value) {
_isRecorder.value = value;
}
String get recorderTxt => _recorderTxt.value;
final _dbLevel = 0.5.obs;
double get dbLevel => _dbLevel.value;
set dbLevel(double value) {
_dbLevel.value = value;
}
late final FlutterSoundRecorder recorderModule;
late final FlutterSoundPlayer playerModule;
final _path = "".obs;
String get path => _path.value;
set path(String value) {
_path.value = value;
}
// 暂停还是继续
final _isPause = false.obs;
bool get isPause => _isPause.value;
set isPause(bool value) {
_isPause.value = value;
}
(This is very important. Most of the time we cannot do anything if we do not have information on your bug).
To activate the logs, you must instantiate your modules with the Log Level set to Level.debug :
Flutter Sound Version : 9.2.13
Severity
Result is not what expected
Cannot build my App ?
Minor issue ?
Platforms you faced the error
iOS [x]
Android ?
Flutter Web ?
Emulator ?
Real device ?
Describe the bug A clear and concise description of what the bug is.
To Reproduce Steps to reproduce the behavior:
See error
Logs!!!!
flutter: ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── flutter: │ #0 new FlutterSoundRecorder flutter: │ #1 SoundAnimationWidgetController.onInit flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ flutter: │ 🐛 ctor: FlutterSoundRecorder() flutter: └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── flutter: ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── flutter: │ #0 new FlutterSoundPlayer flutter: │ #1 SoundAnimationWidgetController.onInit flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ flutter: │ 🐛 ctor: FlutterSoundPlayer() flutter: └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── [GETX] Instance "SoundAnimationWidgetController" has been initialized flutter: ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── flutter: │ #0 FlutterSoundRecorder.openRecorder flutter: │ #1 SoundAnimationWidgetController.init flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ flutter: │ 🐛 FS:---> openAudioSession flutter: └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── flutter: ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── flutter: │ #0 FlutterSoundRecorder._openAudioSession flutter: │ #1 FlutterSoundRecorder.openRecorder.
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 ---> openAudioSession
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundRecorder._openAudioSession
flutter: │ #1 FlutterSoundRecorder.openRecorder.
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 Resetting flutter_sound Recorder Plugin
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
iOS: resetPlugin
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundPlayer._closeAudioSession
flutter: │ #1 FlutterSoundPlayer.closePlayer.
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 FS:---> closeAudioSession
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundPlayer._closeAudioSession
flutter: │ #1 FlutterSoundPlayer.closePlayer.
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 Player already close
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundPlayer._openAudioSession
flutter: │ #1 FlutterSoundPlayer.openPlayer.
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 FS:---> openAudioSession
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundPlayer._openAudioSession
flutter: │ #1 FlutterSoundPlayer.openPlayer.
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 Resetting flutter_sound Player Plugin
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
iOS: resetPlugin
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundPlayer.log
flutter: │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 IOS:<-- releaseFlautoPlayer
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundPlayer.log
flutter: │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 IOS:<-- reset (Player)
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundRecorder.openRecorderCompleted
flutter: │ #1 MethodChannelFlutterSoundRecorder.channelMethodCallHandler
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 ---> openRecorderCompleted: true
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundRecorder.openRecorderCompleted
flutter: │ #1 MethodChannelFlutterSoundRecorder.channelMethodCallHandler
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 <--- openRecorderCompleted: true
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundRecorder._openAudioSession
flutter: │ #1
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 <--- openAudioSession
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundRecorder.openRecorder
flutter: │ #1
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 FS:<--- openAudioSession
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundPlayer.log
flutter: │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 IOS:--> initializeFlautoPlayer
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundPlayer.log
flutter: │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 iOS: invokeMethod openPlayerCompleted - state=0
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundPlayer.openPlayerCompleted
flutter: │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 ---> openPlayerCompleted: true
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundPlayer.openPlayerCompleted
flutter: │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 <--- openPlayerCompleted: true
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundPlayer._openAudioSession
flutter: │ #1
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 FS:<--- openAudioSession
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundPlayer.setSubscriptionDuration
flutter: │ #1 SoundAnimationWidgetController._initializeExample
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 FS:---> setSubscriptionDuration
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundPlayer.log
flutter: │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 IOS:<-- initializeFlautoPlayer
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundPlayer.log
flutter: │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 IOS:--> setSubscriptionDuration
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundPlayer.log
flutter: │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 IOS:--> setSubscriptionDuration
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundPlayer.log
flutter: │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 IOS:<-- setSubscriptionDuration
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundPlayer.setSubscriptionDuration
flutter: │ #1
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 FS:<---- setSubscriptionDuration
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundRecorder.setSubscriptionDuration
flutter: │ #1 SoundAnimationWidgetController._initializeExample
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 FS:---> setSubscriptionDuration
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundPlayer.log
flutter: │ #1 MethodChannelFlutterSoundPlayer.channelMethodCallHandler
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 IOS:<-- setSubscriptionDuration
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundRecorder.setSubscriptionDuration
flutter: │ #1
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 FS:<--- setSubscriptionDuration
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[log] ===> 准备开始录音
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundRecorder.startRecorder
flutter: │ #1 SoundAnimationWidgetController.startRecorder
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 FS:---> startRecorder
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundRecorder._startRecorder
flutter: │ #1 FlutterSoundRecorder.startRecorder.
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 FS:---> _startRecorder.
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
CreateDataFile failed
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundRecorder.startRecorderCompleted
flutter: │ #1 MethodChannelFlutterSoundRecorder.channelMethodCallHandler
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
[log] ===> 开始录音
[log] path == /var/mobile/Containers/Data/Application/77879C65-E0A6-4189-BD67-37D74A7034C5/Library/Caches/audio/1664500898.mp4
flutter: │ 🐛 ---> startRecorderCompleted: true
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundRecorder.startRecorderCompleted
flutter: │ #1 MethodChannelFlutterSoundRecorder.channelMethodCallHandler
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 <--- startRecorderCompleted: true
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundRecorder._startRecorder
flutter: │ #1
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 FS:<--- _startRecorder.
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: ┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
flutter: │ #0 FlutterSoundRecorder.startRecorder
flutter: │ #1
flutter: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
flutter: │ 🐛 FS:<--- startRecorder
flutter: └───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
[WJ] WeJeson: 录音监听打印的数据-----duration: 0:00:00.000000 decibels: 0.00015999999999999999
[log] 当前振幅:0.0000016
[WJ] WeJeson: 录音监听打印的数据-----duration: 0:00:00.000000 decibels: 0.00015999999999999999
[log] 当前振幅:0.0000016
[WJ] WeJeson: 录音监听打印的数据-----duration: 0:00:00.000000 decibels: 0.00015999999999999999
[log] 当前振幅:0.0000016
[WJ] WeJeson: 录音监听打印的数据-----duration: 0:00:00.000000 decibels: 0.00015999999999999999
[log] 当前振幅:0.0000016
[WJ] WeJeson: 录音监听打印的数据-----duration: 0:00:00.000000 decibels: 0.00015999999999999999
[log] 当前振幅:0.0000016
[WJ] WeJeson: 录音监听打印的数据-----duration: 0:00:00.000000 decibels: 0.00015999999999999999
[log] 当前振幅:0.0000016
[WJ] WeJeson: 录音监听打印的数据-----duration: 0:00:00.000000 decibels: 0.00015999999999999999
[log] 当前振幅:0.0000016
[WJ] WeJeson: 录音监听打印的数据-----duration: 0:00:00.000000 decibels: 0.00015999999999999999
[log] 当前振幅:0.0000016
[WJ] WeJeson: 录音监听打印的数据-----duration: 0:00:00.000000 decibels: 0.00015999999999999999
[log] 当前振幅:0.0000016
[WJ] WeJeson: 录音监听打印的数据-----duration: 0:00:00.000000 decibels: 0.00015999999999999999
[log] 当前振幅:0.0000016
[WJ] WeJeson: 录音监听打印的数据-----duration: 0:00:00.000000 decibels: 0.00015999999999999999
[log] 当前振幅:0.0000016
[WJ] WeJeson: 录音监听打印的数据-----duration: 0:00:00.000000 decibels: 0.00015999999999999999
[log] 当前振幅:0.0000016
[WJ] WeJeson: 录音监听打印的数据-----duration: 0:00:00.000000 decibels: 0.00015999999999999999
[log] 当前振幅:0.0000016
[WJ] WeJeson: 录音监听打印的数据-----duration: 0:00:00.000000 decibels: 0.00015999999999999999
[log] 当前振幅:0.0000016
[WJ] WeJeson: 录音监听打印的数据-----duration: 0:00:00.000000 decibels: 0.00015999999999999999
[log] 当前振幅:0.0000016
[WJ] WeJeson: 录音监听打印的数据-----duration: 0:00:00.000000 decibels: 0.00015999999999999999
[log] 当前振幅:0.0000016
this is my code
import 'dart:async'; import 'dart:developer'; import 'dart:io'; import 'package:audio_session/audio_session.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:flutter_sound/flutter_sound.dart'; import 'package:get/get.dart'; import 'package:intl/date_symbol_data_local.dart'; import 'package:intl/intl.dart'; import 'package:path_provider/path_provider.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:scfile/app/utils/common.dart';
import '../../routes/app_pages.dart'; import '../../utils/common_network_request.dart'; import '../../utils/global_enum.dart';
enum RecordPlayState { record, recording, play, playing, pause, }
class SoundAnimationWidgetController extends GetxController { final _state = RecordPlayState.record.obs; RecordPlayState get state => _state.value; set state(RecordPlayState value) { _state.value = value; }
late final StreamSubscription _recorderSubscription;
// StreamSubscription _dbPeakSubscription; late final FlutterSoundRecorder flutterSound; // 获取录音时长 final _recorderTxt = '00:00:00'.obs; set recorderTxt(String value) { _recorderTxt.value = value; }
// 录音还是播放 true 录音 false 播放 final _isRecorder = true.obs; bool get isRecorder => _isRecorder.value; set isRecorder(bool value) { _isRecorder.value = value; }
String get recorderTxt => _recorderTxt.value;
final _dbLevel = 0.5.obs; double get dbLevel => _dbLevel.value; set dbLevel(double value) { _dbLevel.value = value; }
late final FlutterSoundRecorder recorderModule; late final FlutterSoundPlayer playerModule;
final _path = "".obs; String get path => _path.value; set path(String value) { _path.value = value; }
// 暂停还是继续 final _isPause = false.obs; bool get isPause => _isPause.value; set isPause(bool value) { _isPause.value = value; }
// 开始时间 late String beginTime;
// 结束时间 late String endTime;
late String unitGuid;
@override void onInit() { super.onInit(); recorderModule = FlutterSoundRecorder(); playerModule = FlutterSoundPlayer(); init(); }
@override void onClose() { log("是否销毁"); cancelRecorderSubscriptions(); // cancelPlayerSubscriptions(); releaseFlauto(); super.onClose(); }
Future _initializeExample(bool withUI) async {
await playerModule.closePlayer();
}
Future init() async {
final session = await AudioSession.instance;
await session.configure(AudioSessionConfiguration(
avAudioSessionCategory: AVAudioSessionCategory.playAndRecord,
avAudioSessionCategoryOptions:
AVAudioSessionCategoryOptions.allowBluetooth |
AVAudioSessionCategoryOptions.defaultToSpeaker,
avAudioSessionMode: AVAudioSessionMode.spokenAudio,
avAudioSessionRouteSharingPolicy:
AVAudioSessionRouteSharingPolicy.defaultPolicy,
avAudioSessionSetActiveOptions: AVAudioSessionSetActiveOptions.none,
androidAudioAttributes: const AndroidAudioAttributes(
contentType: AndroidAudioContentType.speech,
flags: AndroidAudioFlags.none,
usage: AndroidAudioUsage.voiceCommunication,
),
androidAudioFocusGainType: AndroidAudioFocusGainType.gain,
androidWillPauseWhenDucked: true,
));
recorderModule.openRecorder();
initializeDateFormatting();
await _initializeExample(false);
}
// 开始录音 startRecorder() async { if (await Permission.microphone.request() == PermissionStatus.granted&&await Permission.storage.request() == PermissionStatus.granted) { try { if (await Permission.microphone.request() != PermissionStatus.granted) { EasyLoading.showToast("未获取到麦克风权限"); throw RecordingPermissionException("未获取到麦克风权限"); } if (await Permission.storage.request() != PermissionStatus.granted) { EasyLoading.showToast("未获取到存储权限"); throw RecordingPermissionException("未获取到存储权限"); } Directory tempDir = await getTemporaryDirectory(); var time = DateTime.now().millisecondsSinceEpoch ~/ 1000; String path = '${tempDir.path}/audio/$time${ext[Codec.aacMP4.index]}'; log('===> 准备开始录音'); beginTime = DateTime.now().toString().substring(0, 19); await recorderModule.startRecorder( toFile: path, codec: Codec.aacMP4, bitRate: 8000, sampleRate: 8000, ); log('===> 开始录音'); _path.value = path; log("path == $path"); } catch (err) { log("录音报错-----$err"); stopRecorder(); _state.value = RecordPlayState.record; cancelRecorderSubscriptions(); } } else { openAppSettings(); } }
/// 结束录音 stopRecorder() async { try { await recorderModule.stopRecorder(); endTime = DateTime.now().toString().substring(0, 19); log('stopRecorder'); // cancelRecorderSubscriptions(); _isRecorder.value = false; // _getDuration(); } catch (err) { log('stopRecorder error: $err'); } _dbLevel.value = 0.5; _state.value = RecordPlayState.play; }
//暂停录音 pauseRecorder() async { try { await recorderModule.pauseRecorder(); _state.value = RecordPlayState.pause; _isPause.value = true; } catch (error) { log('pauseRecorder error: $error'); } }
// 恢复录音 resumeRecorder() async { try { await recorderModule.resumeRecorder(); _state.value = RecordPlayState.recording; _isPause.value = false; } catch (error) { log('resumeRecorder error: $error'); } }
/// 取消录音监听 void cancelRecorderSubscriptions() { _recorderSubscription.cancel(); // _recorderSubscription = null; }
// /// 取消播放监听 // void cancelPlayerSubscriptions() { // _playerSubscription.cancel(); // // _playerSubscription = null; // }
/// 释放录音和播放 Future releaseFlauto() async {
try {
await playerModule.closePlayer();
await recorderModule.closeRecorder();
} catch (e) {
log('Released unsuccessful');
log("释放录音和播放 == $e");
}
}
// 重新录制 reRecord() async { _isRecorder.value = true; _recorderTxt.value = '00:00:00'; _state.value = RecordPlayState.record; if (!recorderModule.isStopped) { await recorderModule.stopRecorder(); } if (!playerModule.isStopped) { await playerModule.stopPlayer(); } }
/// 开始播放 Future startPlayer() async {
try {
if (await _fileExists(_path.value)) {
await playerModule.openPlayer();
await playerModule.startPlayer(
fromURI: _path.value,
codec: Codec.aacADTS,
whenFinished: () {
log('==> 结束播放');
stopPlayer();
});
_isPause.value = true;
} else {
EasyLoading.showToast("未找到文件路径");
throw RecordingPermissionException("未找到文件路径");
}
// _playerSubscription = playerModule.onProgress!.listen((e) {
// });
// cancelPlayerSubscriptions();
_state.value = RecordPlayState.playing;
log('===> 开始播放');
} catch (err) {
log('==> 错误: $err');
}
}
/// 结束播放 stopPlayer() async { _state.value = RecordPlayState.record; _dbLevel.value = 0.0; try { await playerModule.stopPlayer(); log('===> 结束播放'); // cancelPlayerSubscriptions(); } catch (err) { log('==> 错误: $err'); } _state.value = RecordPlayState.play; }
/// 暂停/继续播放 void pauseResumePlayer() { if (playerModule.isPlaying) { playerModule.pausePlayer(); _state.value = RecordPlayState.play; log('===> 暂停播放'); } else { playerModule.resumePlayer(); _state.value = RecordPlayState.playing; log('===> 继续播放'); } }
/// 判断文件是否存在 Future _fileExists(String path) async {
return await File(path).exists();
}
// 立即存证 void rightNowNotyfication() { addOrder(4, beginTime, callBack: (value) { if (value != null) { Get.toNamed(AppRoutes.giveUp, arguments: { 'type': WJDataType.audio, 'filePath': path, 'beginTime': beginTime, 'endTime': endTime, 'unitGuid': value }); } }); } }
(This is very important. Most of the time we cannot do anything if we do not have information on your bug). To activate the logs, you must instantiate your modules with the Log Level set to
Level.debug
:See this