提交 8adc506a authored 作者: yueweilu's avatar yueweilu

文字朗读

上级 853322d2
......@@ -60,10 +60,14 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
// 当前html名称 0-318.html
late String currentHtmlName = '';
// 朗读组件
late FlutterTts flutterTts;
///------------------------------------------ 页面 生命周期--------------------------------------------------------
@override
void onInit() {
initTts();
discussTitleFocusNode.addListener(_onCommentFocusChanged);
super.onInit();
}
......@@ -104,6 +108,7 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
discussTitleFocusNode.dispose();
titleInput.dispose();
contentInput.dispose();
flutterTts.stop();
super.onClose();
}
///------------------------------------------ 页面 生命周期--------------------------------------------------------
......@@ -154,7 +159,75 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
}
// 初始化朗读组件
initTts() {
flutterTts = FlutterTts();
_setAwaitOptions();
if (Platform.isAndroid) {
_getDefaultEngine();
_getDefaultVoice();
}
flutterTts.setStartHandler(() {
Console.log('-------------Playing-------------------');
});
if (Platform.isAndroid) {
flutterTts.setInitHandler(() {
Console.log('-------------TTS Initialized-------------------');
});
}
flutterTts.setCompletionHandler(() {
Console.log('-------------TTS Complete-------------------');
});
flutterTts.setCancelHandler(() {
Console.log('-------------TTS Cancel-------------------');
});
flutterTts.setPauseHandler(() {
Console.log('-------------TTS Paused-------------------');
});
flutterTts.setContinueHandler(() {
Console.log('-------------TTS Continued-------------------');
});
flutterTts.setErrorHandler((msg) {
Console.log('-------------TTS error-------------------$msg');
});
}
Future _setAwaitOptions() async {
await flutterTts.awaitSpeakCompletion(true);
}
Future _getDefaultEngine() async {
var engine = await flutterTts.getDefaultEngine;
if (engine != null) {
Console.log('engine--------------------------------$engine');
}
}
Future _getDefaultVoice() async {
var voice = await flutterTts.getDefaultVoice;
if (voice != null) {
Console.log('voice--------------------------------$voice');
}
}
Future speak(String text) async {
await flutterTts.setVolume(0.5);
await flutterTts.setSpeechRate(0.5);
await flutterTts.setPitch(1.0);
if (text != null) {
if (text!.isNotEmpty) {
await flutterTts.speak(text!);
}
}
}
// 初始化录音组件
Future<void> openTheRecorder() async {
......
......@@ -18,6 +18,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_sound/public/flutter_sound_recorder.dart';
import 'package:flutter_sound_platform_interface/flutter_sound_platform_interface.dart';
import 'package:flutter_sound_platform_interface/flutter_sound_recorder_platform_interface.dart';
import 'package:flutter_tts/flutter_tts.dart';
import 'package:get/get.dart';
import 'package:go_router/go_router.dart';
import 'package:intl/intl.dart';
......
......@@ -53,8 +53,6 @@ class _ReadPageState extends State<ReadPage> {
onTap: (){
readController.setShowChat(true);
readController.setChatType(0);
context.pushNamed(Routes.baiDict,queryParameters: {'keyword':'蹦'});
},
child: Image.asset('assets/images/chat.png'),
):null,
......@@ -126,6 +124,13 @@ class _ReadPageState extends State<ReadPage> {
// 监听朗读回调
controller.addJavaScriptHandler(handlerName: 'readCallBack', callback: (args){
Console.log('监听朗读回调------------------------------------------------$args');
readController.speak(args.first.toString());
// readController.speak('中国共产党(英文名:the Communist Party of China,简写CPC),'
// '创建于1921年7月23日,1921年中国共产党成立后,确立了新民主主义革命的正确道路,让灾难深重的中'
// '国人民看到了新的希望、有了新的依靠。我们党探索出农村包围城市、武装夺取政权的正确革命道路,“唤起工'
// '农千百万”“夺过鞭子揍敌人”,经过土地革命战争、抗日战争、解放战争,推翻了压在中国人民头上的帝国主义、'
// '封建主义、官僚资本主义“三座大山”,建立了人民当家作主的中华人民共和国,彻底结束了近代以来中国内忧外患、积贫积弱的悲惨境地,开启了中华民族发展进步的新纪元'
// );
});
// 监听讨论回调
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论