안드로이드는 보안을 이유로 speech2text api 사용했을 때 한문장 듣고 나면 api 가 종료되는데요,
저는 30분정도의 speech 를 note 로 만들고 싶어 이 제한을 우회하고자 합니다.
제가 해본 시도는 speech2text api 가 종료되는 시점을 체크하여 다시 listen() 메소드를 실행하도록 하는 것입니다.
그런데, 이게 마땅치가 않습니다. 어떤 버튼의 onPressed(){ _speechApi.listen(onResult : someCallback)} 을 통해 speech recognition 을 하게 되는데
어떤 타이밍에 재시작 하도록 해야할지 모르겠습니다.
제가 해본 방법은 setState() 를 이용하는 것입니다. someCallback(String recognized_text) 에서 setState() 를 불러 build() 메소드를 호출하게 하고
기존에는 build() 가 그냥 widget 을 return 했는데, widget 을 return 하기 전에 _speechApi.listen(onResult : someCallback) 을 한번 더 호출하는 것입니다.
하지만 이 방법의 문제점은 setState() 가 완료되지 못하고 계속 _speechApi.listen(onResult : someCallback) 만 큐에 쌓이게 되어 한 10번 시도하고 나면
앱이 뻗어버리게 됩니다.
UI 와 로직의 분리라고 하나요... 이게 잘 안되는 것 같은데, speech2text api 에서 continual Listening 기능을 구현하려면 어떤 방법이 있을까요?
https://blog.logrocket.com/adding-speech-to-text-text-to-speech-support-flutter-app/ << 요 방법이 가장 최신의 좋은 방법으로 보였는데 speech2text api 를 custom package 로 바꿔놓고
custom package 를 대신 import 하게 하면
```
lib/custom_packages/lib/speech_recognition.dart:35:25: Error: The parameter 'locale' can't have a value of 'null' because of its type 'String', but the implicit default value is 'null'.
Try adding either an explicit non-'null' default value or the 'required' modifier.
Future listen({String locale}) =>
^^^^^^
lib/custom_packages/lib/speech_recognition.dart:22:23: Error: Field 'availabilityHandler' should be initialized because its type 'void Function(bool)' doesn't allow null.
AvailabilityHandler availabilityHandler;
^^^^^^^^^^^^^^^^^^^
```
요런 에러가 나서 빌드가 안되네요..
창의적이고 위대한 코딩애플님, 꼭 좀 부탁드립니다!