前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >flutter - 如何在 dart/flutter 中收听流值

flutter - 如何在 dart/flutter 中收听流值

原创
作者头像
徐建国
修改于 2021-08-31 02:45:23
修改于 2021-08-31 02:45:23
1.1K00
代码可运行
举报
文章被收录于专栏:个人路线个人路线
运行总次数:0
代码可运行

任何人帮助追踪音频的位置(即)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   if(durationtoOne(position==5)){
FlutterToast.Showtoast(msg:"I am At 5 sec");
}

如果在 initstate 中添加出现错误,我会被困在何处添加此代码,

我想通过音频平台收听位置

代码从这里开始

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  import 'dart:async';
    import 'package:assets_audio_player/assets_audio_player.dart';
    import 'package:flutter/material.dart';
    import 'package:fluttertoast/fluttertoast.dart';

    class SmartMantra extends StatefulWidget {
    @override
  _SmartMantraState createState() => _SmartMantraState();
}

class _SmartMantraState extends State<SmartMantra> {
  StreamSubscription _positionSubscription;
  Duration position;
  AssetsAudioPlayer _assetsAudioPlayer;


  stream() {
    _positionSubscription = _assetsAudioPlayer.currentPosition
        .listen((p) => setState(() => position = p),);
  }

  @override
  void initState() {
    _assetsAudioPlayer.open("assets/shivamantra.mp3");
    stream();
    _assetsAudioPlayer.finished.listen((finished) {
      print(finished);
//      print(count);
    });
    super.initState();
  }

  @override
  void dispose() {
    _positionSubscription.cancel();
    super.dispose();
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Column(
          children: <Widget>[
            SizedBox(
              height: 70,
            ),
            Center(
              child: Text(
               durationToone(position).toString(),
                style: TextStyle(color: Colors.black, fontSize: 12),
              ),
            ),
            //getTextContainer()
          ],
        ));
  }
int durationToone(Duration duration) {
  int twoDigits(int n) {
    if (n >= 10) return n;
    return n;
  }

  int twoDigitSeconds =
      twoDigits(duration.inSeconds.remainder(Duration.secondsPerMinute));
  return twoDigitSeconds;
}
}

代码到此结束

总结:在特定位置需要在位置变化时触发一些函数(即)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if(durationtoOne(position==5)){
FlutterToast.Showtoast(msg:"I am At 5 sec");
}

通过音频播放或应用程序在前台

最佳答案

如果流不是广播流,则您只能收听一次。 请参阅此 Medium post 以了解有关 Streams 的更多信息。 收听 stream 时,您需要在 _assetsAudioPlayer.currentPosition 函数中添加您的代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import 'dart:async';
import 'package:assets_audio_player/assets_audio_player.dart';
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';

class SmartMantra extends StatefulWidget {
    @override
    _SmartMantraState createState() => _SmartMantraState();
}

class _SmartMantraState extends State<SmartMantra> {
    StreamSubscription _positionSubscription;
    Duration position;
    AssetsAudioPlayer _assetsAudioPlayer;

    stream() {
        _positionSubscription = _assetsAudioPlayer.currentPosition
            .listen((p) {
                setState(() => position = p));
                // You should add your code here
                if(durationtoOne(position==5)){
                    FlutterToast.Showtoast(msg:"I am At 5 sec");
                }
            }
    }

    @override
    void initState() {
        _assetsAudioPlayer.open("assets/shivamantra.mp3");
        stream();
        _assetsAudioPlayer.finished.listen((finished) {
            print(finished);
//          print(count);
        });
        super.initState();
    }

    @override
    void dispose() {
        _positionSubscription.cancel();
        super.dispose();
    }

    @override
    Widget build(BuildContext context) {
        return Scaffold(
            body: Column(
                children: <Widget>[
                SizedBox(
                    height: 70,
                ),
                Center(
                    child: Text(
                        durationToone(position).toString(),
                        style: TextStyle(color: Colors.black, fontSize: 12),
                    ),
                ),
                //getTextContainer()
            ],
        ));
    }
    int durationToone(Duration duration) {
        int twoDigits(int n) {
            if (n >= 10) return n;
            return n;
        }

        int twoDigitSeconds =
            twoDigits(duration.inSeconds.remainder(Duration.secondsPerMinute));
        return twoDigitSeconds;
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
flutter自定义弹窗_app加弹窗
1.在pubspec.yaml中配置fluttertoast库,通过Pub get 获取fluttertoast的版本,通过Pub upgrade更新,eg:
全栈程序员站长
2022/11/08
2.1K0
「 flutter 必知必会 」最强事件发布/订阅框架方案 event_bus 全局事件总线使用解析
一、前言 EventBus是全局事件总线,底层通过Stream来实现;它可以实现不同页面的跨层访问,通过Stream的机制来实现不同widget之间的状态共享. 二、作用 举个例子: 你有一个主界面,里面有一些信息可能会修改,但触发源不在该界面,是在其他的界面触发了一些事件后,首页的内容需要做修改。如果没有EventBus,也有很多的方式可以实现,譬如定义全局静态变量、或者定义个CallBack接口传出去等等。不管怎样,总是要把主页和触发源关联起来,这是相当难受的,这不但会导致代码量暴涨,同时还会导致耦合
圆号本昊
2021/09/24
1.2K0
Flutter 登录页面
Simulator Screen Shot - iPhone 11 Pro Max - 2019-09-26 at 14.03.32.png
赵哥窟
2019/09/27
2.7K0
Flutter 登录页面
「 Flutter 项目实战 」设计企业级项目入口 main.dart 设计与实现 ( GSYGithubApp 源码解读·二 )
???? 提示:温馨提示一下哈,这篇文章主要是针对 GitHub 上 12+k 顶级项目「 CarGuo/gsy_github_app_flutter 」 的源码解读,因为这是我目前见过最棒、最具有企
圆号本昊
2021/09/24
9760
「 Flutter 项目实战 」设计企业级项目入口 main.dart 设计与实现 ( GSYGithubApp 源码解读·二 )
Flutter ——状态管理 | StreamBuild
StreamBuild从字面意思来讲是数据流构建,是一种基于数据流的订阅管理。Stream可以接受任何类型的数据,值、事件、对象、集合、映射、错误、甚至是另一个Stream,通过StreamController中的sink作为入口,往Stream中插入数据,然后通过你的自定义监听StreamSubscription对象,接受数据变化的通知。如果你需要对输出数据进行处理,可以使用StreamTransformer,它可以对输出数据进行过滤、重组、修改、将数据注入其他流等等任何类型的数据操作。
CatEatFish
2020/07/09
3K0
Flutter ——状态管理 | StreamBuild
flutter 自定义播放器进度条
FijkPlayer 第三方的一个视频播放器,这是一个大佬基于比利比利播放器封装的,有常用的API 可自定义样式 pub传送门
全栈程序员站长
2022/11/17
1.2K0
Flutter - 检查 Internet 连接示例[Flutter专题14]
有时,您可能想要检查运行您的应用程序的设备的互联网连接。如果应用程序是使用 Flutter 开发的,您可以阅读本教程中的示例。
徐建国
2021/12/07
2.1K0
Flutter中各种对话框的使用
Flutter提供了多种对话框组件供开发者使用,以下代码中演示了常见对话框的实现,供大家参考,欢迎大家复制粘贴和吐槽。
越陌度阡
2021/12/14
1.6K0
Flutter中各种对话框的使用
Flutter中使用connectivity实现网络检测
https://pub.flutter-io.cn/packages/connectivity
越陌度阡
2021/01/29
1.7K0
使用Flutter开发微信小程序:构建一个简单的天气预报小程序
微信小程序是一种快速、高效的开发方式,Flutter则是一款强大的跨平台开发框架。结合二者,可以轻松地开发出功能丰富、用户体验良好的微信小程序。
Onegun
2023/07/04
5.5K2
使用Flutter开发微信小程序:构建一个简单的天气预报小程序
Flutter中使用chewie实现视频播放
注意:chewie插件依赖于video_player,所以video_player必须一起安装。
越陌度阡
2021/01/29
3.6K0
Flutter 入门指北之输入处理(登录界面实战)
这边需要提下的是 setState 方法,该方法只有 StatefulWidget 才有,当需要修改某个值的内容的时候,通过该方法进行修改,最后的效果图如下,当输入框文字发生变化的时候,监听的 Text 内容会随之改变,获取内容的 Text 当点击按钮了才发生变化
陈宇明
2020/12/16
2K1
自研flutter3.x实战仿抖音app短视频直播FlutterLive
flutter3.x_douyin基于flutter3+dart3+getx+meidaKit等技术开发抖音版app视频直播项目。
andy2018
2024/03/25
9760
【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 在 Flutter 端实现 EventChannel 通信 )
EventChannel 一般用于持续的通信 , 如 : 将 Android 应用中采集的陀螺仪 , GPS 等信息 , 持续的发送给 Flutter 应用 ;
韩曙亮
2023/03/29
1.4K0
Flutter跨平台移动端开发丨自定义 Banner Widget
移动端开发过程中 Banner 组件非常常见,项目中用的到就封装一个,主要用到 Timer + PageView,采用定时轮播的方法实现
码脑
2019/07/04
8920
《Flutter》-- 8.动画
不管是什么视图框架,动画的实现原理都是相同的,即在一段时限的时间内,多次、快速地改变视图外观来实现连续播放的效果。
爱学习的程序媛
2022/04/07
1.2K0
《Flutter》-- 8.动画
Flutter入门(五)
国际化方案http://bbs.itying.com/topic/5cfb2a12f322340b2c90e764
用户3112896
2019/12/30
9430
【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 完整代码示例 )
执行效果 : 在 Android 端嵌入 FlutterFragment , 通过
韩曙亮
2023/03/29
2.3K0
【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 完整代码示例 )
仿写新闻客户端
拉取新包:flutter pub get 获取直接安装 flutter pub add flutter_screenutil。
Jimmy_is_jimmy
2022/09/21
1.4K0
仿写新闻客户端
【Flutter实战】六大布局组件
老孟导读:Flutter中布局组件有水平 / 垂直布局组件( Row 和 Column )、叠加布局组件( Stack 和 IndexedStack )、流式布局组件( Wrap )和 自定义布局组件(Flow)。
老孟Flutter
2020/09/11
1.9K0
【Flutter实战】六大布局组件
推荐阅读
相关推荐
flutter自定义弹窗_app加弹窗
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验