提交 70c0b90d authored 作者: yueweilu's avatar yueweilu

多条播放依次时 显示时间问题

上级 5c24764d
......@@ -4,5 +4,5 @@ keyPassword=123456
keyAlias=zijing
#storeFile=/Users/apple/zijiing_key.jks
storeFile=zijiing_key.jks
\ No newline at end of file
storeFile=/Users/apple/zijiing_key.jks
#storeFile=zijiing_key.jks
\ No newline at end of file
......@@ -367,11 +367,15 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
// 本地音频
audioPlayer.setFilePath(audioModel.path);
audioPlayer.play();
audioPlayer.positionStream.listen((position) {
StreamSubscription? positionSubscription;
positionSubscription =audioPlayer.positionStream.listen((position) {
String temp = Tools.formatDuration(position);
Console.log('播放时间---------------------$temp');
Console.log('播放时间---------------------$temp------id-------------${audioModel.path}');
audioModel.currentDuration = temp;
if(position >= audioPlayer.duration!){
Console.log('---------播放结束-----------');
positionSubscription?.cancel();
}
update();
});
// currentPlayMediaModel = mediaModel;
......
......@@ -14,6 +14,8 @@ class NoteController extends GetxController {
late TextEditingController searchInput = TextEditingController();
just_audio.AudioPlayer audioPlayer = just_audio.AudioPlayer();
final int _limit = 10;
int _page = 1;
bool _noMore = false;
......@@ -39,6 +41,7 @@ class NoteController extends GetxController {
void onClose() {
refreshController.dispose();
searchInput.dispose();
audioPlayer.dispose();
super.onClose();
}
......@@ -47,6 +50,47 @@ class NoteController extends GetxController {
update();
}
void delNotes({required String notesId,required String bookId}) async {
final result = await MineAPI.delNotes(notesId: notesId, bookId: bookId);
if (result){
Toast.show('删除笔记成功');
onRefresh();
}
}
// 播放音频
void playAudio(MediaModel mediaModel){
if(audioPlayer.playerState.playing){
audioPlayer.stop();
mediaModel.currentDuration = '0:00:00';
// if(currentPlayMediaModel.id == mediaModel.id){
// return;
// }
}
// 本地音频
if (mediaModel.id == 0){
audioPlayer.setFilePath(mediaModel.path);
}
// 远程音频
else {
audioPlayer.setUrl(mediaModel.content??'');
}
audioPlayer.play();
StreamSubscription? positionSubscription;
positionSubscription =audioPlayer.positionStream.listen((position) {
String temp = Tools.formatDuration(position);
Console.log('播放时间---------------------$temp------id-------------${mediaModel.id}');
mediaModel.currentDuration = temp;
if(position >= audioPlayer.duration!){
Console.log('---------播放结束-----------');
positionSubscription?.cancel();
}
update();
});
// currentPlayMediaModel = mediaModel;
}
/// 搜全文
Future<void> searchAll([bool isRefresh = false]) async {
if (isRefresh) _searchPage = 1;
......
......@@ -111,7 +111,15 @@ class _ReadNotePageState extends State<ReadNotePage> {
}
// 笔记
else if(model.types == 3){
return BuildNote(model: model,);
return BuildNote(
model: model,
onTapAudio: (MediaModel mediaModel){
controller.playAudio(mediaModel);
},
onTapDel: (){
controller.delNotes(notesId: model.notesId.toString(), bookId:widget.bookDetailModel.bookId.toString());
},
);
}
},
itemCount: controller.notes.length,
......
......@@ -157,10 +157,15 @@ class UserEditNoteController extends GetxController {
audioPlayer.setUrl(mediaModel.content??'');
}
audioPlayer.play();
audioPlayer.positionStream.listen((position) {
StreamSubscription? positionSubscription;
positionSubscription =audioPlayer.positionStream.listen((position) {
String temp = Tools.formatDuration(position);
Console.log('播放时间---------------------$temp');
Console.log('播放时间---------------------$temp------id-------------${mediaModel.id}');
mediaModel.currentDuration = temp;
if(position >= audioPlayer.duration!){
Console.log('---------播放结束-----------');
positionSubscription?.cancel();
}
update();
});
// currentPlayMediaModel = mediaModel;
......
......@@ -49,10 +49,15 @@ class UserNotesDesController extends GetxController {
audioPlayer.setUrl(mediaModel.content??'');
}
audioPlayer.play();
audioPlayer.positionStream.listen((position) {
StreamSubscription? positionSubscription;
positionSubscription =audioPlayer.positionStream.listen((position) {
String temp = Tools.formatDuration(position);
Console.log('播放时间---------------------$temp');
Console.log('播放时间---------------------$temp------id-------------${mediaModel.id}');
mediaModel.currentDuration = temp;
if(position >= audioPlayer.duration!){
Console.log('---------播放结束-----------');
positionSubscription?.cancel();
}
update();
});
// currentPlayMediaModel = mediaModel;
......
library user_notes_des;
import 'dart:async';
import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/material.dart';
import 'package:flutter_book/widgets/index.dart';
......
......@@ -203,7 +203,7 @@ class BuildNote extends StatelessWidget {
},
child: Image.asset('assets/images/audio.png')
),
Text('0:00/${mediaModel.duration}',style: TextStyle(fontSize: 10.w,height: 1.4,color: Colours.c9),)
Text('${mediaModel.currentDuration}/${mediaModel.duration}',style: TextStyle(fontSize: 10.w,height: 1.4,color: Colours.c9),)
],
),
),
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论