Flutter 无法从Flatter_声音包成功调用startRecorder(uri:…)

Flutter 无法从Flatter_声音包成功调用startRecorder(uri:…),flutter,audio,dart,Flutter,Audio,Dart,我正试图让颤振声音包的简单功能发挥作用。我通过首先能够开始录音来实现这一点。似乎我当前遇到了一个问题,即使我将Uri包括在我要保存这些文件的位置,以及我希望它导出这些文件的音频格式类型,因为我遇到了一个问题,即: flutter: NoSuchMethodError: The method 'startRecorder' was called on null. Receiver: null Tried calling: startRecorder(codec: Instance of 't_CO

我正试图让颤振声音包的简单功能发挥作用。我通过首先能够开始录音来实现这一点。似乎我当前遇到了一个问题,即使我将Uri包括在我要保存这些文件的位置,以及我希望它导出这些文件的音频格式类型,因为我遇到了一个问题,即:

flutter: NoSuchMethodError: The method 'startRecorder' was called on null.
Receiver: null
Tried calling: startRecorder(codec: Instance of 't_CODEC', uri: "/Users/<user-name>/Library/Developer/CoreSimulator/Devices/CEC7EE26-9400-479B-85EB-06728074F7C0/data/Containers/Data/Application/4C726628-AE3B-42E7-8C6A-4B239AFDFAE6/Library/Caches/audio.aac")
我已经在Info.plist和AndroidManifest.xml中包含了必要的权限

我将张贴,我觉得需要的是下面的代码

class\u录音机状态扩展状态{
字符串_recordedFilePath;
bool _isRecording=false;
bool_isplay=false;
StreamSubscription\u Recorder订阅;
StreamSubscription _dbPeakSubscription;
StreamSubscription _playerSubscription;
颤音颤音;
字符串_recorderText='00:00:00';
字符串_playerText='00:00:00';
双级;
双滑块电流位置=0.0;
双倍最大持续时间=1.0;
@凌驾
void initState(){
super.initState();
颤振声颤振声=新颤振声();
设置订阅持续时间(0.01);
颤振声。设置峰值更新(0.8);
FlatterSound.setDbLevelEnabled(真);
初始化为teformatting();
}
void startRecorder()异步{
试一试{
目录tempDir=await getTemporaryDirectory();
File filePath=File('${tempDir.path}/audio.aac');
字符串路径=等待声音.startRecorder(uri:filePath.path,codec:t_codec.codec_AAC);
打印('startRecorder:$path');
_recorderSubscription=flatterSound.onRecorderStateChanged.listen((e){
DateTime日期=新的DateTime.FromMillisSecondsSinceEpoch(
e、 currentPosition.toInt(),
isUtc:true);
字符串txt=DateFormat('mm:ss:ss','en_US')。格式(日期);
此.setState(){
这个.u recorderText=txt.substring(0,8);
});
});
_dbPeakSubscription=
FlatterSound.OnRecorderDBPakChanged.listen((值){
打印(“获得更新->$value”);
设置状态(){
此值为._dbLevel=值;
});
});
此.setState(){
这是正确的;
});
}捕捉(错误){
打印('startRecorder错误:$err');
}
}

如果您想查看我的
小部件构建(…){…}
或我的代码的任何其他部分,请告诉我。

您没有正确初始化您的FlatterSound实例

 @override
  void initState() {
    super.initState();
    //FlutterSound flutterSound = new FlutterSound();
    //you already created flutterSound at the top
    flutterSound = new FlutterSound();
    flutterSound.setSubscriptionDuration(0.01);
    flutterSound.setDbPeakLevelUpdate(0.8);
    flutterSound.setDbLevelEnabled(true);
    initializeDateFormatting();
  }

嘿,兄弟,如果可能的话,请你在这里发布开始和停止录音的完整代码好吗