當(dāng)前位置:
首頁 >
flutter - 如何在 dart/flutter 中收听流值
發(fā)布時(shí)間:2025/3/19
38
豆豆
生活随笔
收集整理的這篇文章主要介紹了
flutter - 如何在 dart/flutter 中收听流值
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
flutter - 如何在 dart/flutter 中收聽流值
任何人幫助追蹤音頻的位置(即)
if(durationtoOne(position==5)){ FlutterToast.Showtoast(msg:"I am At 5 sec"); }如果在 initstate 中添加出現(xiàn)錯(cuò)誤,我會(huì)被困在何處添加此代碼,
我想通過音頻平臺(tái)收聽位置
代碼從這里開始
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),);}@overridevoid initState() {_assetsAudioPlayer.open("assets/shivamantra.mp3");stream();_assetsAudioPlayer.finished.listen((finished) {print(finished); // print(count);});super.initState();}@overridevoid dispose() {_positionSubscription.cancel();super.dispose();}@overrideWidget 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; } }代碼到此結(jié)束
總結(jié):在特定位置需要在位置變化時(shí)觸發(fā)一些函數(shù)(即)
if(durationtoOne(position==5)){ FlutterToast.Showtoast(msg:"I am At 5 sec"); }通過音頻播放或應(yīng)用程序在前臺(tái)
最佳答案
如果流不是廣播流,則您只能收聽一次。
請(qǐng)參閱此 Medium post 以了解有關(guān) Streams 的更多信息。
收聽 stream 時(shí),您需要在 _assetsAudioPlayer.currentPosition 函數(shù)中添加您的代碼。
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 hereif(durationtoOne(position==5)){FlutterToast.Showtoast(msg:"I am At 5 sec");}}}@overridevoid initState() {_assetsAudioPlayer.open("assets/shivamantra.mp3");stream();_assetsAudioPlayer.finished.listen((finished) {print(finished); // print(count);});super.initState();}@overridevoid dispose() {_positionSubscription.cancel();super.dispose();}@overrideWidget 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;} }總結(jié)
以上是生活随笔為你收集整理的flutter - 如何在 dart/flutter 中收听流值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: encoding - 如何将 Dart
- 下一篇: 项目中常见问题