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
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';
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) {
FlutterTts flutterTts = FlutterTts();
var playText = audio;
if (audio.contains('_')) {
final lang = audio.split('_').first;
playText = audio.replaceFirst('${lang}_', '');
final language = audio.split('_').first;
playText = audio.replaceFirst('${language}_', '');
if (lang == null) {
await flutterTts.setLanguage(language);
}
}
if (lang != null) {
await flutterTts.setLanguage(lang);
}
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/features/yandex_ads/yandex_ads.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_common/mnemo_cards_common.dart';
import 'package:shared_preferences/shared_preferences.dart';
@ -229,28 +230,24 @@ class FrontCard extends StatelessWidget {
maxLines: 1,
),
onTap: () async {
final sp = await SharedPreferences.getInstance();
if (sp.getBool('sound_on') != false &&
card.original != null) {
FlutterTts flutterTts = FlutterTts();
await flutterTts.setLanguage('es-ES');
await flutterTts.setSpeechRate(0.4);
flutterTts.speak(card.original!);
if (card.original != null) {
AudioPlayer.playAudio(
card.original!,
lang: 'es-ES',
);
}
},
),
GestureDetector(
onTap: () async {
final sp = await SharedPreferences.getInstance();
if (sp.getBool('sound_on') != false &&
card.translation != null) {
FlutterTts flutterTts = FlutterTts();
await flutterTts.setLanguage('ru');
await flutterTts.setSpeechRate(0.5);
flutterTts.speak(
if (card.translation != null) {
if (card.original != null) {
AudioPlayer.playAudio(
card.translation!,
lang: 'ru',
);
}
}
},
child: MnemoText(
card.translation?.toLowerCase(),
@ -271,14 +268,10 @@ class FrontCard extends StatelessWidget {
padding: EdgeInsets.only(top: 4.0.h * alpha),
child: GestureDetector(
onTap: () async {
final sp =
await SharedPreferences.getInstance();
if (sp.getBool('sound_on') != false) {
FlutterTts flutterTts = FlutterTts();
await flutterTts.setLanguage('ru');
await flutterTts.setSpeechRate(0.5);
flutterTts.speak(
"${card.transcription} - ${card.transcriptionMnemo}",
if (card.transcription != null && card.transcriptionMnemo != null) {
AudioPlayer.playAudio(
'${card.transcription} - ${card.transcriptionMnemo}',
lang: 'ru',
);
}
},
@ -316,14 +309,10 @@ class FrontCard extends StatelessWidget {
if (card.mnemo?.trim().isNotEmpty != true) {
return;
}
final sp = await SharedPreferences.getInstance();
if (sp.getBool('sound_on') != false) {
FlutterTts flutterTts = FlutterTts();
await flutterTts.setLanguage('ru');
await flutterTts.setSpeechRate(0.5);
flutterTts.speak(
card.mnemo!.replaceAll(RegExp(r'[\]\[]'), ''));
}
AudioPlayer.playAudio(
card.mnemo!.replaceAll(RegExp(r'[\]\[]'), ''),
lang: 'ru',
);
},
child: MnemoText(
card.mnemo?.isNotEmpty == true ? card.mnemo : ' ',

View file

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