diff --git a/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk b/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk deleted file mode 100644 index f125d09..0000000 Binary files a/build/app/outputs/flutter-apk/app-arm64-v8a-release.apk and /dev/null differ diff --git a/build_app.sh b/build_app.sh index 12d4def..2487f69 100644 --- a/build_app.sh +++ b/build_app.sh @@ -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 diff --git a/lib/flags.dart b/lib/flags.dart index 319d8ab..3232754 100644 --- a/lib/flags.dart +++ b/lib/flags.dart @@ -1,2 +1,2 @@ -const ADMIN_BUILD = true; \ No newline at end of file +const ADMIN_BUILD = false; \ No newline at end of file diff --git a/lib/managers/audio_player.dart b/lib/managers/audio_player.dart index 35f93cb..70a547d 100644 --- a/lib/managers/audio_player.dart +++ b/lib/managers/audio_player.dart @@ -3,13 +3,18 @@ import 'package:flutter_tts/flutter_tts.dart'; import '../main.dart'; class AudioPlayer { - static Future playAudio(String? audio) async { + static Future 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); diff --git a/lib/widgets/game_card_widget.dart b/lib/widgets/game_card_widget.dart index c08dd0a..d574eb8 100644 --- a/lib/widgets/game_card_widget.dart +++ b/lib/widgets/game_card_widget.dart @@ -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,27 +230,23 @@ 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( - card.translation!, - ); + if (card.translation != null) { + if (card.original != null) { + AudioPlayer.playAudio( + card.translation!, + lang: 'ru', + ); + } } }, child: MnemoText( @@ -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 : ' ', diff --git a/lib/widgets/shared_pref_button.dart b/lib/widgets/shared_pref_button.dart index 188203e..211bd03 100644 --- a/lib/widgets/shared_pref_button.dart +++ b/lib/widgets/shared_pref_button.dart @@ -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 { @override void initState() { super.initState(); - SharedPreferences.getInstance().then((v) { - _sp = v; - value = _sp!.getBool(widget.spKey) ?? false; - if (mounted) { - setState(() {}); - } - }); + _sp = globalSharedPreferences; + value = _sp!.getBool(widget.spKey) ?? false; _streamSubscription = Stream.periodic(const Duration(milliseconds: 500), (_) => _sp?.getBool(widget.spKey) ?? false).distinct().listen((v) { value = v;