[ad_1]
import 'bundle:flutter/materials.dart';
import 'bundle:speech_to_text/speech_recognition_error.dart';
import 'bundle:speech_to_text/speech_recognition_result.dart';
import 'bundle:speech_to_text/speech_to_text.dart';
class SpeechToTextPage extends StatefulWidget {
Listing<String>? contentsData1;
Listing<String>? contentsData2;
SpeechToTextPage({Key? key, required this.contentsData1, required this.contentsData2}) : tremendous(key: key);
@override
_SpeechToTextPageState createState() => _SpeechToTextPageState();
}
class _SpeechToTextPageState extends State<SpeechToTextPage> {
Listing<String> contentsData1ToShow = [];
Listing<String> contentsData2ToShow = [];
int _indexNum = 0;
var choose="";
@override
void initState() {
tremendous.initState();
}
@override
Widget construct(BuildContext context) {
return Scaffold(
physique: SafeArea(
youngster: Column(
kids: [
Expanded(
child: Container(
child: contentsData1ToShow.isNotEmpty
? ListView.builder(
itemCount: contentsData1ToShow.length,
itemBuilder: (BuildContext context, int index) {
if (contentsData1ToShow[index].accommodates('Q')) {
if (choose == 'selectQ') {
return QlineWidgetWithSTT(
qlineContentsData1: contentsData1ToShow[index]
.replaceFirst('Q', ''),
qlineContentsData2: contentsData2ToShow[index]
.replaceFirst('Q', '')
);
} else {
return QlineWidget(
qlineContentsData1: contentsData1ToShow[index]
.replaceFirst('Q', ''),
qlineContentsData2: contentsData2ToShow[index]
.replaceFirst('Q', '')
);
}
} else if (contentsData1ToShow[index].accommodates('A')) {
if (choose == 'selectA') {
return AlineWidgetWithSTT(
aLineContentsData1: contentsData1ToShow[index]
.replaceFirst('A', ''),
aLineContentsData2: contentsData2ToShow[index]
.replaceFirst('A', '')
);
} else {
return AlineWidget(
aLineContentsData1: contentsData1ToShow[index]
.replaceFirst('A', ''),
aLineContentsData2: contentsData2ToShow[index]
.replaceFirst('A', '')
);
}
} else if (contentsData1ToShow[index].accommodates('ETC')) {
return ETClineWidget(
etcLineContentsData1: contentsData1ToShow[index].replaceFirst('ETC', ''),
etcLineContentsData2: contentsData2ToShow[index].replaceFirst('ETC', '')
);
} else {
return ETClineWidget(
etcLineContentsData1: contentsData1ToShow[index].replaceFirst('ETC', ''),
etcLineContentsData2: contentsData2ToShow[index].replaceFirst('ETC', '')
);
}
},
)
: Container(
youngster: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
kids: [
GestureDetector(
onTap: () {
setState(() {
select="selectQ";
});
},
child: Container(color: Colors.blue,child: Padding(
padding: const EdgeInsets.all(20.0),
child: const Text('select Q'),
))),
GestureDetector(
onTap: () {
setState(() {
select="selectA";
});
},
child: Container(color: Colors.blue,child: Padding(
padding: const EdgeInsets.all(20.0),
child: const Text('select A'),
))),
],
),
),
),
),
Container(
youngster: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
kids: [
IconButton(onPressed: (){
if (widget.contentsData1!.length > _indexNum) {
setState(() {
contentsData1ToShow.add(widget.contentsData1![_indexNum]);
contentsData2ToShow.add(widget.contentsData2![_indexNum]);
_indexNum++;
});
}
}, icon: Icon(Icons.plus_one)),
IconButton(onPressed: (){
}, icon: Icon(Icons.mic)),
IconButton(onPressed: (){
setState(() {
contentsData1ToShow.clear();
_indexNum = 0;
});
}, icon: Icon(Icons.shut)),
],
),
)
],
),
),
);
}
}
class QlineWidget extends StatefulWidget {
remaining qlineContentsData1;
remaining qlineContentsData2;
QlineWidget({Key? key, required this.qlineContentsData1, required this.qlineContentsData2}) : tremendous(key: key);
@override
_QlineWidgetState createState() => _QlineWidgetState();
}
class _QlineWidgetState extends State<QlineWidget> {
@override
Widget construct(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(8.0),
youngster: Container(
youngster: Heart(
youngster: Column(
kids: [
Text(widget.qlineContentsData1,style: TextStyle(color: Colors.red, fontSize: 20),),
Text(widget.qlineContentsData2,style: TextStyle(color: Colors.red, fontSize: 20),),
],
))),
);
}
}
class QlineWidgetWithSTT extends StatefulWidget {
remaining qlineContentsData1;
remaining qlineContentsData2;
QlineWidgetWithSTT({required this.qlineContentsData1, required this.qlineContentsData2});
@override
_QlineWidgetWithSTTState createState() => _QlineWidgetWithSTTState();
}
class _QlineWidgetWithSTTState extends State<QlineWidgetWithSTT> {
remaining SpeechToText speech = SpeechToText();
double degree = 0.0;
String lastWords="";
String lastStatus="";
String _currentLocaleId = 'en_US';
Future<void> initSpeechState() async {
bool hasSpeech = await speech.initialize(
onError: errorListener,
onStatus: statusListener);
}
@override
void initState() {
tremendous.initState();
initSpeechState();
}
@override
Widget construct(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(8.0),
youngster: Container(
ornament: BoxDecoration(border: Border.all(
colour: Colours.indigo,
width: 3,
),),
youngster: Heart(
youngster: Column(
kids: [
Text('[select Q]'),
IconButton(
icon: Icon(Icons.mic),
onPressed: startListening,
),
Textual content(lastWords),
Textual content(widget.qlineContentsData1,model: TextStyle(colour: Colours.pink, fontSize: 20),),
Textual content(widget.qlineContentsData2,model: TextStyle(colour: Colours.pink, fontSize: 20),),
],
))),
);
}
void startListening() {
speech.pay attention(
onResult: resultListener,
listenFor: Length(minutes: 3),
localeId: _currentLocaleId,
onSoundLevelChange: soundLevelListener,
cancelOnError: true,
partialResults: true,
);
}
void resultListener(SpeechRecognitionResult end result) {
if (mounted) {
setState(() {
this.lastWords = "${end result.recognizedWords}";
});
}
}
void errorListener(SpeechRecognitionError error) {
speech.cease();
print("Acquired error standing: $error, listening: ${speech.isListening}");
}
void statusListener(String standing) {
print('standing : ${standing}');
if (mounted) {
setState(() {
lastStatus = "$standing";
});
}
}
void soundLevelListener(double degree) {
if (mounted) {
setState(() {
this.degree = degree;
});
}
}
}
class AlineWidget extends StatefulWidget {
remaining aLineContentsData1;
remaining aLineContentsData2;
AlineWidget({Key? key, required this.aLineContentsData1, required this.aLineContentsData2}) : tremendous(key: key);
@override
_AlineWidgetState createState() => _AlineWidgetState();
}
class _AlineWidgetState extends State<AlineWidget> {
@override
Widget construct(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(8.0),
youngster: Container(
youngster: Column(
kids: [
Center(child: Text(widget.aLineContentsData1,style: TextStyle(color: Colors.blue, fontSize: 20),)),
Center(child: Text(widget.aLineContentsData2,style: TextStyle(color: Colors.blue, fontSize: 20),)),
],
)),
);
}
}
class AlineWidgetWithSTT extends StatefulWidget {
remaining aLineContentsData1;
remaining aLineContentsData2;
AlineWidgetWithSTT({Key? key, required this.aLineContentsData1, required this.aLineContentsData2}) : tremendous(key: key);
@override
_AlineWidgetWithSTTState createState() => _AlineWidgetWithSTTState();
}
class _AlineWidgetWithSTTState extends State<AlineWidgetWithSTT> {
remaining SpeechToText speech = SpeechToText();
double degree = 0.0;
String lastWords="";
String lastStatus="";
String _currentLocaleId = 'en_US';
Future<void> initSpeechState() async {
bool hasSpeech = await speech.initialize(
onError: errorListener,
onStatus: statusListener);
}
@override
void initState() {
tremendous.initState();
initSpeechState();
}
@override
Widget construct(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(8.0),
youngster: Container(
ornament: BoxDecoration(border: Border.all(
colour: Colours.indigo,
width: 3,
),),
youngster: Column(
kids: [
Text('[select A]'),
IconButton(
icon: Icon(Icons.mic),
onPressed: startListening,
),
Textual content(lastWords),
Heart(youngster: Textual content(widget.aLineContentsData1,model: TextStyle(colour: Colours.blue, fontSize: 20),)),
Heart(youngster: Textual content(widget.aLineContentsData2,model: TextStyle(colour: Colours.blue, fontSize: 20),)),
],
)),
);
}
void startListening() {
speech.pay attention(
onResult: resultListener,
listenFor: Length(minutes: 3),
localeId: _currentLocaleId,
onSoundLevelChange: soundLevelListener,
cancelOnError: true,
partialResults: true,
);
}
void resultListener(SpeechRecognitionResult end result) {
if (mounted) {
setState(() {
this.lastWords = "${end result.recognizedWords}";
});
}
}
// 에러가 발생했을 때
void errorListener(SpeechRecognitionError error) {
speech.cease();
print("Acquired error standing: $error, listening: ${speech.isListening}");
}
void statusListener(String standing) {
print('standing : ${standing}');
if (mounted) {
setState(() {
lastStatus = "$standing";
});
}
}
void soundLevelListener(double degree) {
if (mounted) {
setState(() {
this.degree = degree;
});
}
}
}
class ETClineWidget extends StatefulWidget {
remaining etcLineContentsData1;
remaining etcLineContentsData2;
ETClineWidget({Key? key, required this.etcLineContentsData1, required this.etcLineContentsData2}) : tremendous(key: key);
@override
_ETClineWidgetState createState() => _ETClineWidgetState();
}
class _ETClineWidgetState extends State<ETClineWidget> {
@override
Widget construct(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(8.0),
youngster: Container(
youngster: Heart(
youngster: Column(
kids: [
Text(widget.etcLineContentsData1,style: TextStyle(color: Colors.yellow, fontSize: 20),),
Text(widget.etcLineContentsData2,style: TextStyle(color: Colors.yellow, fontSize: 20),),
],
))),
);
}
}
[ad_2]
