Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
book-app
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
book-app
Commits
86c3f94d
提交
86c3f94d
authored
12月 12, 2023
作者:
yueweilu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
tts
上级
f04d0b10
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
166 行增加
和
52 行删除
+166
-52
index.dart
lib/pages/main/index.dart
+3
-2
test_tts.dart
lib/pages/test_tts.dart
+0
-50
controller.dart
lib/pages/tts/controller.dart
+86
-0
index.dart
lib/pages/tts/index.dart
+12
-0
view.dart
lib/pages/tts/view.dart
+65
-0
没有找到文件。
lib/pages/main/index.dart
浏览文件 @
86c3f94d
...
...
@@ -4,10 +4,10 @@ import 'package:flutter/material.dart';
import
'package:flutter_book/pages/home/index.dart'
;
import
'package:flutter_book/theme.dart'
;
import
'package:get/get.dart'
;
import
'package:get/get_state_manager/src/simple/get_controllers.dart'
;
import
'package:ionicons/ionicons.dart'
;
import
'../test_tts.dart'
;
import
'../tts/index.dart'
;
part
'view.dart'
;
part
'controller.dart'
;
\ No newline at end of file
lib/pages/test_tts.dart
deleted
100644 → 0
浏览文件 @
f04d0b10
import
'package:flutter/material.dart'
;
import
'package:flutter_tts/flutter_tts.dart'
;
import
'package:flutter_book/utils/index.dart'
;
class
TestTTSPage
extends
StatefulWidget
{
const
TestTTSPage
({
Key
?
key
})
:
super
(
key:
key
);
@override
State
<
TestTTSPage
>
createState
()
=>
_TestTTSPageState
();
}
class
_TestTTSPageState
extends
State
<
TestTTSPage
>
{
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
appBar:
AppBar
(
title:
const
Text
(
'测试语音'
),
centerTitle:
true
,
),
body:
Column
(
mainAxisAlignment:
MainAxisAlignment
.
start
,
// crossAxisAlignment: CrossAxisAlignment.start,
children:
[
Container
(
color:
Colors
.
yellow
,
height:
150
,
width:
double
.
infinity
,
// padding: const EdgeInsets.fromLTRB(10, 10, 10, 10),
child:
const
Text
(
'你好我是小助手'
,
textAlign:
TextAlign
.
start
,
style:
TextStyle
(
color:
Colors
.
black
,
fontSize:
18
),),
),
GestureDetector
(
onTap:
(){
Console
.
log
(
'你好'
);
},
child:
Container
(
margin:
const
EdgeInsets
.
all
(
10
),
padding:
const
EdgeInsets
.
all
(
20
),
color:
Colors
.
red
,
child:
const
Text
(
'播放'
),
),
)
],
),
);
}
}
lib/pages/tts/controller.dart
0 → 100644
浏览文件 @
86c3f94d
part of
tts
;
enum
TtsState
{
playing
,
stopped
,
paused
,
continued
}
class
TTSController
extends
GetxController
{
late
FlutterTts
flutterTts
;
TtsState
ttsState
=
TtsState
.
stopped
;
late
String
textToSpeak
;
@override
void
onInit
()
{
initTts
();
super
.
onInit
();
}
initTts
()
{
flutterTts
=
FlutterTts
();
// 设置语言
flutterTts
.
setLanguage
(
'zh-Hans-CN'
);
// 设置语速
flutterTts
.
setSpeechRate
(
0.5
);
// 设置音量
flutterTts
.
setVolume
(
1.0
);
// 设置音调
flutterTts
.
setPitch
(
1.0
);
flutterTts
.
setStartHandler
(()
{
ttsState
=
TtsState
.
playing
;
});
flutterTts
.
setCompletionHandler
(()
{
ttsState
=
TtsState
.
stopped
;
});
flutterTts
.
setPauseHandler
(()
{
ttsState
=
TtsState
.
paused
;
});
flutterTts
.
setContinueHandler
(()
{
ttsState
=
TtsState
.
continued
;
Console
.
log
(
'继续'
);
});
flutterTts
.
setErrorHandler
((
message
)
{
Console
.
log
(
'error:
$message
'
);
ttsState
=
TtsState
.
stopped
;
});
flutterTts
.
setProgressHandler
((
text
,
start
,
end
,
word
)
{
});
}
Future
speak
(
String
text
)
async
{
textToSpeak
=
text
;
Console
.
log
(
text
);
flutterTts
.
speak
(
text
);
Console
.
log
(
'读文字'
);
}
Future
stop
()
async
{
update
();
}
Future
pause
()
async
{
if
(
ttsState
==
TtsState
.
playing
){
flutterTts
.
pause
();
ttsState
=
TtsState
.
paused
;
}
else
if
(
ttsState
==
TtsState
.
paused
||
ttsState
==
TtsState
.
stopped
){
flutterTts
.
continueHandler
!();
}
}
@override
void
onClose
()
{
flutterTts
.
stop
();
super
.
onClose
();
}
}
\ No newline at end of file
lib/pages/tts/index.dart
0 → 100644
浏览文件 @
86c3f94d
library
tts
;
import
'package:flutter/material.dart'
;
import
'package:flutter_tts/flutter_tts.dart'
;
import
'package:flutter_book/utils/index.dart'
;
import
'package:get/get.dart'
;
import
'package:get/get_state_manager/src/simple/get_controllers.dart'
;
part
'view.dart'
;
part
'controller.dart'
;
\ No newline at end of file
lib/pages/tts/view.dart
0 → 100644
浏览文件 @
86c3f94d
part of
tts
;
class
TestTTSPage
extends
StatefulWidget
{
const
TestTTSPage
({
Key
?
key
})
:
super
(
key:
key
);
@override
State
<
TestTTSPage
>
createState
()
=>
_TestTTSPageState
();
}
class
_TestTTSPageState
extends
State
<
TestTTSPage
>
{
@override
Widget
build
(
BuildContext
context
)
{
return
GetBuilder
(
init:
TTSController
(),
builder:
(
controller
)
=>
Scaffold
(
appBar:
AppBar
(
title:
const
Text
(
'测试语音'
),
centerTitle:
true
,
),
body:
Column
(
mainAxisAlignment:
MainAxisAlignment
.
start
,
// crossAxisAlignment: CrossAxisAlignment.start,
children:
[
Container
(
color:
Colors
.
yellow
,
height:
150
,
width:
double
.
infinity
,
// padding: const EdgeInsets.fromLTRB(10, 10, 10, 10),
child:
const
Text
(
'你好我是小助手'
,
textAlign:
TextAlign
.
start
,
style:
TextStyle
(
color:
Colors
.
black
,
fontSize:
18
),),
),
GestureDetector
(
onTap:
(){
controller
.
speak
(
"中华人民共和国(the People's Republic of China),简称“中国”,成立于1949年10月1日 [1],位于亚洲东部,太平洋西岸 [2],是工人阶级领导的、以工农联盟为基础的人民民主专政的社会主义国家 [3],以五星红旗为国旗 [4]、《义勇军进行曲》为国歌 [5],国徽中间是五星照耀下的天安门,周围是谷穗和齿轮 [6] [170],通用语言文字是普通话和规范汉字 [7],首都北京 [8],是一个以汉族为主体、56个民族共同组成的统一的多民族国家。中国陆地面积约960万平方千米,东部和南部大陆海岸线1.8万多千米,海域总面积约473万平方千米 [2]。海域分布有大小岛屿7600多个,其中台湾岛最大,面积35798平方千米 [2]。中国同14国接壤,与8国海上相邻。省级行政区划为23个省、5个自治区、4个直辖市、2个特别行政区。 [2]中国是世界上历史最悠久的国家之一,有着光辉灿烂的文化和光荣的革命传统 [3],世界遗产数量全球领先 [9]。1949年新中国成立后,进入社会主义革命和建设时期,1956年实现向社会主义过渡,此后社会主义建设在探索中曲折发展 [10]。“文化大革命”结束后实行改革开放,沿着中国特色社会主义道路,集中力量进行社会主义现代化建设 [3]。经过长期努力,中国特色社会主义进入了新时代。 [11] [136]中国是世界上人口最多的发展中国家,国土面积居世界第三位,是世界第二大经济体,并持续成为世界经济增长最大的贡献者,2020年经济总量突破100万亿元 [12-13] [125]。中国坚持独立自主的和平外交政策,是联合国安全理事会常任理事国,也是许多国际组织的重要成员,被认为是潜在超级大国之一"
);
},
child:
Container
(
margin:
const
EdgeInsets
.
all
(
10
),
padding:
const
EdgeInsets
.
all
(
20
),
color:
Colors
.
red
,
child:
const
Text
(
'播放'
),
),
),
GestureDetector
(
onTap:
(){
controller
.
pause
();
},
child:
Container
(
margin:
const
EdgeInsets
.
all
(
10
),
padding:
const
EdgeInsets
.
all
(
20
),
color:
Colors
.
blue
,
child:
const
Text
(
'暂停'
),
),
)
],
),
)
);
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论