提交 0e69056c authored 作者: yueweilu's avatar yueweilu

1、阅读页加入loading

2、写笔记时,语音可以删除 可以播放
上级 d2547a76
......@@ -156,6 +156,7 @@ abstract class LibraryAPI {
'book_id': bookId,
'chapter_id': chapterId
},
showLoading: true
);
if (result.data is! Map && result.data['list'] is! List) return [];
return List.generate(result.data['list'].length, (index) {
......@@ -178,6 +179,7 @@ abstract class LibraryAPI {
'book_id': bookId,
'chapter_id': chapterId
},
showLoading: true,
);
if (result.data is! Map && result.data['list'] is! List) return [];
return List.generate(result.data['list'].length, (index) {
......
......@@ -322,7 +322,7 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
final path = await _mRecorder.stopRecorder();
var duration = await audioPlayer.setFilePath(path!);
Console.log('-----duration---------------------$duration------');
AudioModel audioModel = AudioModel(path: path,duration: Tools.formatDuration(duration!));
AudioModel audioModel = AudioModel(path: path,duration: Tools.formatDuration(duration!),currentDuration: '0:00:00');
discussInputAudios.add(audioModel);
update();
}
......@@ -357,6 +357,8 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
// 播放音频
void playAudio(AudioModel audioModel){
Console.log('-------------播放开始-------------------');
if(audioPlayer.playerState.playing){
audioPlayer.stop();
audioModel.currentDuration = '0:00:00';
......@@ -366,7 +368,7 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
}
// 本地音频
audioPlayer.setFilePath(audioModel.path);
audioPlayer.play();
StreamSubscription? positionSubscription;
positionSubscription =audioPlayer.positionStream.listen((position) {
String temp = Tools.formatDuration(position);
......@@ -414,6 +416,11 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
Console.log('clearAllDiscussInput--------------------------------');
update();
}
// 删除音频
void delAudio(AudioModel audioModel){
discussInputAudios.remove(audioModel);
update();
}
// 上传文件
......@@ -897,8 +904,8 @@ class ToolModel {
}
class AudioModel {
AudioModel({required this.path, required this.duration});
AudioModel({required this.path, required this.duration,required this.currentDuration});
String path;
String duration;
late String currentDuration;
String currentDuration;
}
......@@ -89,6 +89,7 @@ class _ReadPageState extends State<ReadPage> {
)
),
onWebViewCreated: (InAppWebViewController controller){
CustomToast.loading();
readController.webViewController = controller;
},
onConsoleMessage: (controller, consoleMessage) {
......@@ -96,6 +97,7 @@ class _ReadPageState extends State<ReadPage> {
Console.log("Received message from WebView-----------------------------: ${consoleMessage.message}");
},
onLoadStop: (controller, url) {
CustomToast.dismiss();
// flutter 主动给 js 传参数
Map<String, dynamic> param = {
'book_id': readController.bookId,
......
......@@ -126,29 +126,44 @@ class _ReadInputDiscussState extends State<ReadInputDiscuss> {
shrinkWrap: true,
itemBuilder: (BuildContext context, int index){
AudioModel audioModel= widget.controller.discussInputAudios[index];
return GestureDetector(
onTap: (){
widget.controller.playAudio(audioModel);
},
child: Container(
height: 20.w,
margin: EdgeInsets.only(right: 130.w),
child: Container(
margin: EdgeInsets.only(top: 5.w),
padding: EdgeInsets.only(right:20.w,left: 10.w),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.w),
color: Colours.cF9,
return Container(
// height: 20.w,
margin: EdgeInsets.only(right: 130.w,),
child: Stack(
children: [
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.w),
color: Colors.white,
),
padding: EdgeInsets.only(right:20.w,left: 10.w),
margin: EdgeInsets.only(top: 10.w,right: 10.w),
height: 20,
child: Row(
// mainAxisSize: MainAxisSize.min,
mainAxisAlignment:MainAxisAlignment.spaceBetween,
children: [
GestureDetector(
onTap:(){
widget.controller.playAudio(audioModel);
},
child: Image.asset('assets/images/audio.png')
),
Text('${audioModel.currentDuration}/${audioModel.duration}',style: TextStyle(fontSize: 10.w,height: 1.4,color: Colours.c9),)
],
),
),
child: Row(
// mainAxisSize: MainAxisSize.min,
mainAxisAlignment:MainAxisAlignment.spaceBetween,
children: [
Image.asset('assets/images/audio.png'),
// Text('0:00/1:52',style: TextStyle(fontSize: 10.w,height: 1.4,color: Colours.c9),)
],
),
),
Positioned(
right: 6,
top: 6,
child: GestureDetector(
onTap: (){
widget.controller.delAudio(audioModel);
},
child: Image.asset('assets/images/media_del.png',width: 12.w,height: 12.w,)
)
)
],
),
);
},
......
......@@ -98,7 +98,7 @@ class _ReadNotePageState extends State<ReadNotePage> {
child: MediaQuery.removePadding(
context: context,
removeTop: true,
child: ListView.builder(
child:ListView.builder(
itemBuilder: (BuildContext context,int index){
NoteModel model = controller.notes[index];
// 划线
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论