如何在 Flutter 应用中播放 .mp3 文件?

2024-02-26

我写了一个Dart从服务器检索 .mp3 文件并播放它们的 Web 应用程序;我正在尝试使用 Flutter 编写移动版本。我知道dart:web_audio是 Web 应用程序的主要选项,但 Flutter 在我的 SDK 中找不到它。我知道它在那里,因为我可以将以下内容编译为 Javascript:

import 'dart:html';
import 'dart:convert';
import 'dart:web_audio';
AudioContext audioContext;

main() async {
  audioContext = new AudioContext();
  var ul = (querySelector('#songs') as UListElement);
  var signal = await HttpRequest.getString('http://10.0.0.6:8000/api/filelist');
 //  Map json = JSON.decode(signal);
 //  for (Map file in json['songs']) {
   print("signal: $signal");
   Map json = JSON.decode(signal);
   for (Map file in json['songs']) {
     var li = new LIElement()
       ..appendText(file['title']);
     var button = new ButtonElement();
     button.setAttribute("id", "#${file['file']}");
     button.appendText("Play");

     li.append(button);
     new Song(button, file['file']);
     ul.append(li);

  }

}

class Song {
  ButtonElement button;
  bool _playing = false;
  // AudioContext _audioContext;
  AudioBufferSourceNode _source;
  String title;

  Song(this.button, this.title) {

    button..onClick.listen((e) => _toggle());
  }

  _toggle() {
    _playing = !_playing;
    _playing ? _start() : _stop();
  }

  _start() {
    return HttpRequest
         .request("http://10.0.0.6:8000/music/$title", responseType: "arraybuffer")
         .then((HttpRequest httpRequest) {
            return audioContext
              .decodeAudioData(httpRequest.response)
         .then((AudioBuffer buffer) {
              _source = audioContext.createBufferSource();
              _source.buffer = buffer;
              _source.connectNode(audioContext.destination);
              _source.start(0);
              button.text = "Stop";
              _source.onEnded.listen((e){
                 _playing = false;
                 button.text = "Play";
          });
       });
    });
  }

  _stop() {
     _source.stop(0);
     button.text = "Play";
  }
} 

我将如何重写dart:web_audioFlutter 应用程序的部分代码? Flutter可以访问MediaPlayer吗?如果是这样,我将如何在其中引用它pubspec.yaml?


正如 raju-bitter 上面指出的,Flutter 曾经在其核心引擎中提供一些内置的音频包装器,但后来这些已被删除:https://github.com/flutter/flutter/issues/1364 https://github.com/flutter/flutter/issues/1364.

使用 Flutter 的应用程序只是 iOS 或 Android 应用程序,因此可以使用 hello_services 模型中的一些 Java 或 Obj-C 代码通过 Flutter 执行底层 iOS/Android 可以执行的任何操作(https://github.com/flutter/flutter/tree/master/examples/hello_services https://github.com/flutter/flutter/tree/master/examples/hello_services)。该模型记录在https://flutter.io/platform-services https://flutter.io/platform-services。这还远没有我们希望的那么容易。许多改进即将推出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Flutter 应用中播放 .mp3 文件? 的相关文章

随机推荐

  • 如何使用CSS动画移动文本?

    有什么想法为什么这个动画不起作用吗 div move from top to bottom div http jsfiddle net vdb3ofmL 1 http jsfiddle net vdb3ofmL 1 你应该position正
  • Rails:如何访问应用程序控制器中的方法?

    我想这是菜鸟范围问题 class ApplicationController lt ActionController Base protect from forgery locations get locations def get loc
  • 获取体式项目 ID

    我试图找出如何从主网络应用程序获取工作区和项目 ID 我似乎无法在任何地方找到它们 我正在尝试编写一个 VB Net 应用程序 并尝试从 API 中获取除 400 Bad request 之外的一些信息 如果我有这些 ID 我可能会走得更远
  • Sencha vs Ionic vs Jquery Mobile vs Appcelerator Titanium [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我在 HTML5 Javascript jQuery AngularJS 方面有很好的经验 我即将开发一个混合移动应用程序 我只是想知道其中哪一
  • FROM 子句中的 JPA 子查询可能吗?

    我在 JPA 方面遇到了一些问题 考虑这种情况 表 A id a 表B id b id a 我需要的是这样的查询 Select a c quantity from A as a Select Count as quantity from B
  • Symfony2 DoctrineFixturesBundle 命名空间错误

    我的灯具捆绑有一个大问题 我无法解决 我 按照预期的步骤进行操作 将行添加到 deps 文件 安装它们 在自动加载中注册它们并 应用程序内核 当我尝试只跑步时app console 它打破了 Fatal error Class Doctri
  • Soundcloud (Oauth2) API 获取访问令牌失败

    我正在尝试根据 Soundcloud 登录对我的网站上的用户进行授权 它使用 Oauth 身份验证 用户必须单击我网站上的按钮 然后重定向到 Soundcloud 网站并登录 之后 用户被重定向回我的网站 我必须在其中获取 accessTo
  • 在自定义转场转换期间,视图的导航栏项目错位

    我有一个自定义 Segue 它使用 UIViewAnimationOptionTransitionFlipFromLeft 在视图之间进行转换 当新视图出现在屏幕上时 由于导航栏元素从左对齐状态跳转到适当的位置 会出现短暂但明显的 闪烁 以
  • Windows Phone 7 WebBrowser 控件吞下操作事件?

    如果我将 WebBrowser 控件放置在任何页面上 该页面将不再响应 WebBrowser 下的操作事件 页面的其他区域工作正常 通过覆盖很容易确认OnManipulationCompleted在页面中 然后将 WebBrowser 控件
  • 用C#解析并执行JS

    我有一个简单的爬虫 可以爬行和搜索页面 但现在我遇到了如何执行和解析该页面的 js 链接的问题 有谁知道如何解析和执行js页面吗 example some url 很容易用 webhtmltoolktit 解析 JAVASCRIPT run
  • OCR 解决方案可以检测数字手写体吗?

    有没有一种解决方案可以很好地书写数字 1 10 我尝试了超正方体 但我只得到垃圾 理想情况下是 OSS 但商业也可以 OpenCV 现在附带手写数字识别 OCR 示例 你可以参考一下 http code opencv org project
  • iPhone核心数据“自动轻量级迁移”

    我正在尝试更新一个实现核心数据存储的应用程序 我正在向其中一个实体添加属性 我将以下代码添加到我的委托类中 NSPersistentStoreCoordinator persistentStoreCoordinator if persist
  • 不用Gforth 就可以编译Gforth 吗?

    当我尝试编译 Gforth 0 7 0 时 出现以下错误 configure make compiling Undefined symbols main referenced from start in crt1 10 6 o ld sym
  • 使用 Monit 监控 Laravel 队列工作线程

    我目前正在考虑从 Supervisor 迁移到 Monit 以监视 Laravel 队列工作人员 主要原因是能够监视 CPU 内存和设置电子邮件警报 据主管说 我必须安装另一个软件包 因为我希望尽快监视其他内容 例如 Redis 或许还有
  • 我的 java 线程占用了多少内存?

    有没有办法找出我的java线程在VM中占用了多少内存 例如 使用堆栈跟踪转储或其他一些方法 Thanks Java 线程使用堆作为共享内存 各个线程都有自己的堆栈 您可以通过 Xss命令行选项 默认为 512KB 但所有其他内存 堆 不属于
  • Symfony 数据库教程代码错误

    我已经成功安装和设置了 Symfony 2 并且一直在遵循文档 我目前正在做http symfony com doc 2 0 book doctrine html http symfony com doc 2 0 book doctrine
  • 跟踪 C++ 内存分配

    我正在寻找一种方法来跟踪 C 程序中的内存分配 我是not对内存泄漏感兴趣 这似乎是大多数工具试图找到的 而是为应用程序创建内存使用情况配置文件 理想的输出是函数名称的大列表加上随时间变化的最大分配字节数 或者更好的是随时间变化的堆的图形表
  • ASP.NET Core 3.0 策略重定向

    我们有这部分代码来控制一些服务高级页面 对于没有高级会员资格的用户 拒绝 方法会重定向到升级页面 该代码在asp NET core 2上运行完美 但在asp NET core 3上失败 context Resource 不再是 Author
  • 多个特定于目标的变量值

    按照文档管理特定于目标的变量值 https www gnu org software make manual html node Target 002dspecific html prog CFLAGS g prog prog o foo
  • 如何在 Flutter 应用中播放 .mp3 文件?

    我写了一个Dart从服务器检索 mp3 文件并播放它们的 Web 应用程序 我正在尝试使用 Flutter 编写移动版本 我知道dart web audio是 Web 应用程序的主要选项 但 Flutter 在我的 SDK 中找不到它 我知