Flutter 颤振:如何编码和解码Base64格式的音频文件?

Flutter 颤振:如何编码和解码Base64格式的音频文件?,flutter,base64,Flutter,Base64,我正在使用Dialogflow构建聊天机器人应用程序,我想在我的应用程序中实现语音识别功能。正如您所知,Dialogflow为我们提供了一种基于音频检测意图的功能,但它只接受base64形式的音频。我的问题是无法将音频文件编码到Base64。我是新来的颤振发展,所以如果我错过了什么或做了一个错误的方式,那么请让我知道。谢谢 我尝试过这种方法,但它没有给我正确的输出: Future<String> makeBase64(String path) async { try {

我正在使用Dialogflow构建聊天机器人应用程序,我想在我的应用程序中实现语音识别功能。正如您所知,Dialogflow为我们提供了一种基于音频检测意图的功能,但它只接受base64形式的音频。我的问题是无法将音频文件编码到Base64。我是新来的颤振发展,所以如果我错过了什么或做了一个错误的方式,那么请让我知道。谢谢

我尝试过这种方法,但它没有给我正确的输出:

  Future<String> makeBase64(String path) async {
    try {
      if (!await fileExists(path)) return null;
      File file = File(path);
      file.openRead();
      var contents = await file.readAsBytes();
      var base64File = base64.encode(contents);

      return base64File;
    } catch (e) {
      print(e.toString());

      return null;
    }
  }
Future makeBase64(字符串路径)异步{
试一试{
如果(!await fileExists(path))返回null;
文件=文件(路径);
openRead()文件;
var contents=wait file.readAsBytes();
var base64File=base64.encode(内容);
返回base64File;
}捕获(e){
打印(如toString());
返回null;
}
}
您可以这样做:

List<int> fileBytes = await file.readAsBytes();
String base64String = base64Encode(fileBytes);

没有,但我想我得到的编码输出是不完整的,因为当我尝试解码输出时,它会给我一个不兼容的音频文件。我正在使用这个网站进行解码:它成功了!非常感谢@xion。我犯了一个错误,在调试控制台中打印输出,然后使用它进行解码,而不知道如果字符串很大,调试控制台不会向我们提供整个字符串。
final fileString = 'data:audio/mp3;base64,$base64String';