This commit is contained in:
Dmitry 2024-06-14 22:47:28 +03:00
parent 7c0c85addb
commit 4686243e01
6 changed files with 34 additions and 44 deletions

View file

@ -1,3 +1,3 @@
set -e -v set -e -v
cp ~/mnemo_cards/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk ~/mnemo_cards_telegram_bot/apks/app.apk cp ~/mnemo_cards/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk ~/mnemo_cards_telegram_bot/apks/admin_app.apk

View file

@ -1,2 +1,2 @@
const ADMIN_BUILD = true; const ADMIN_BUILD = false;

View file

@ -3,13 +3,18 @@ import 'package:flutter_tts/flutter_tts.dart';
import '../main.dart'; import '../main.dart';
class AudioPlayer { class AudioPlayer {
static Future<void> playAudio(String? audio) async { static Future<void> playAudio(String? audio, {String? lang}) async {
if (globalSharedPreferences.getBool('sound_on') != false && audio != null) { if (globalSharedPreferences.getBool('sound_on') != false && audio != null) {
FlutterTts flutterTts = FlutterTts(); FlutterTts flutterTts = FlutterTts();
var playText = audio; var playText = audio;
if (audio.contains('_')) { if (audio.contains('_')) {
final lang = audio.split('_').first; final language = audio.split('_').first;
playText = audio.replaceFirst('${lang}_', ''); playText = audio.replaceFirst('${language}_', '');
if (lang == null) {
await flutterTts.setLanguage(language);
}
}
if (lang != null) {
await flutterTts.setLanguage(lang); await flutterTts.setLanguage(lang);
} }
await flutterTts.setSpeechRate(0.5); await flutterTts.setSpeechRate(0.5);

View file

@ -8,6 +8,7 @@ import 'package:flutter_tts/flutter_tts.dart';
import 'package:mnemo_cards/di/locator.dart'; import 'package:mnemo_cards/di/locator.dart';
import 'package:mnemo_cards/features/yandex_ads/yandex_ads.dart'; import 'package:mnemo_cards/features/yandex_ads/yandex_ads.dart';
import 'package:flutter/painting.dart'; import 'package:flutter/painting.dart';
import 'package:mnemo_cards/managers/audio_player.dart';
import 'package:mnemo_cards/utils/color_helper.dart'; import 'package:mnemo_cards/utils/color_helper.dart';
import 'package:mnemo_cards_common/mnemo_cards_common.dart'; import 'package:mnemo_cards_common/mnemo_cards_common.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
@ -229,27 +230,23 @@ class FrontCard extends StatelessWidget {
maxLines: 1, maxLines: 1,
), ),
onTap: () async { onTap: () async {
final sp = await SharedPreferences.getInstance(); if (card.original != null) {
if (sp.getBool('sound_on') != false && AudioPlayer.playAudio(
card.original != null) { card.original!,
FlutterTts flutterTts = FlutterTts(); lang: 'es-ES',
await flutterTts.setLanguage('es-ES'); );
await flutterTts.setSpeechRate(0.4);
flutterTts.speak(card.original!);
} }
}, },
), ),
GestureDetector( GestureDetector(
onTap: () async { onTap: () async {
final sp = await SharedPreferences.getInstance(); if (card.translation != null) {
if (sp.getBool('sound_on') != false && if (card.original != null) {
card.translation != null) { AudioPlayer.playAudio(
FlutterTts flutterTts = FlutterTts(); card.translation!,
await flutterTts.setLanguage('ru'); lang: 'ru',
await flutterTts.setSpeechRate(0.5); );
flutterTts.speak( }
card.translation!,
);
} }
}, },
child: MnemoText( child: MnemoText(
@ -271,14 +268,10 @@ class FrontCard extends StatelessWidget {
padding: EdgeInsets.only(top: 4.0.h * alpha), padding: EdgeInsets.only(top: 4.0.h * alpha),
child: GestureDetector( child: GestureDetector(
onTap: () async { onTap: () async {
final sp = if (card.transcription != null && card.transcriptionMnemo != null) {
await SharedPreferences.getInstance(); AudioPlayer.playAudio(
if (sp.getBool('sound_on') != false) { '${card.transcription} - ${card.transcriptionMnemo}',
FlutterTts flutterTts = FlutterTts(); lang: 'ru',
await flutterTts.setLanguage('ru');
await flutterTts.setSpeechRate(0.5);
flutterTts.speak(
"${card.transcription} - ${card.transcriptionMnemo}",
); );
} }
}, },
@ -316,14 +309,10 @@ class FrontCard extends StatelessWidget {
if (card.mnemo?.trim().isNotEmpty != true) { if (card.mnemo?.trim().isNotEmpty != true) {
return; return;
} }
final sp = await SharedPreferences.getInstance(); AudioPlayer.playAudio(
if (sp.getBool('sound_on') != false) { card.mnemo!.replaceAll(RegExp(r'[\]\[]'), ''),
FlutterTts flutterTts = FlutterTts(); lang: 'ru',
await flutterTts.setLanguage('ru'); );
await flutterTts.setSpeechRate(0.5);
flutterTts.speak(
card.mnemo!.replaceAll(RegExp(r'[\]\[]'), ''));
}
}, },
child: MnemoText( child: MnemoText(
card.mnemo?.isNotEmpty == true ? card.mnemo : ' ', card.mnemo?.isNotEmpty == true ? card.mnemo : ' ',

View file

@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:mnemo_cards/main.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
class SharedPrefButton extends StatefulWidget { class SharedPrefButton extends StatefulWidget {
@ -38,13 +39,8 @@ class _SharedPrefButtonState extends State<SharedPrefButton> {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
SharedPreferences.getInstance().then((v) { _sp = globalSharedPreferences;
_sp = v; value = _sp!.getBool(widget.spKey) ?? false;
value = _sp!.getBool(widget.spKey) ?? false;
if (mounted) {
setState(() {});
}
});
_streamSubscription = Stream.periodic(const Duration(milliseconds: 500), _streamSubscription = Stream.periodic(const Duration(milliseconds: 500),
(_) => _sp?.getBool(widget.spKey) ?? false).distinct().listen((v) { (_) => _sp?.getBool(widget.spKey) ?? false).distinct().listen((v) {
value = v; value = v;