diff --git a/lib/l10n/app_ar.arb b/lib/l10n/app_ar.arb index dd35ffd..a283de4 100644 --- a/lib/l10n/app_ar.arb +++ b/lib/l10n/app_ar.arb @@ -139,6 +139,7 @@ "no_description": "لا يوجد وصف", "resume": "استئناف", "read": "قراءة", + "watch": "مشاهدة", "popular": "شائع", "open_in_browser": "فتح في المتصفح", "clear_cookie": "مسح الكوكي", diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 7b9e695..45efdfa 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -139,6 +139,7 @@ "no_description": "Keine Beschreibung", "resume": "Fortsetzen", "read": "Lesen", + "watch": "Anschauen", "popular": "Beliebt", "open_in_browser": "Im Browser öffnen", "clear_cookie": "Cookie löschen", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index f65817b..49c172d 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -140,6 +140,7 @@ "no_description": "No description", "resume": "Resume", "read": "Read", + "watch": "Watch", "popular": "Popular", "open_in_browser": "Open in browser", "clear_cookie": "Clear cookie", diff --git a/lib/l10n/app_es.arb b/lib/l10n/app_es.arb index 424c5fc..7b9a499 100644 --- a/lib/l10n/app_es.arb +++ b/lib/l10n/app_es.arb @@ -139,6 +139,7 @@ "no_description": "Sin descripción", "resume": "Reanudar", "read": "Leer", + "watch": "Ver", "popular": "Popular", "open_in_browser": "Abrir en navegador", "clear_cookie": "Limpiar cookie", diff --git a/lib/l10n/app_es_419.arb b/lib/l10n/app_es_419.arb index 0c3c5a5..3e9c5c0 100644 --- a/lib/l10n/app_es_419.arb +++ b/lib/l10n/app_es_419.arb @@ -139,6 +139,7 @@ "no_description": "Sin descripción", "resume": "Reanudar", "read": "Leer", + "watch": "Ver", "popular": "Popular", "open_in_browser": "Abrir en navegador", "clear_cookie": "Limpiar cookie", diff --git a/lib/l10n/app_fr.arb b/lib/l10n/app_fr.arb index c152d68..57b15d8 100644 --- a/lib/l10n/app_fr.arb +++ b/lib/l10n/app_fr.arb @@ -138,6 +138,7 @@ "no_description": "Aucune description", "resume": "Reprendre", "read": "Commencer", + "watch": "Regarder", "popular": "Populaire", "refresh": "Actualiser", "open_in_browser": "Ouvrir dans le navigateur", diff --git a/lib/l10n/app_id.arb b/lib/l10n/app_id.arb index 79b0979..8e32c05 100644 --- a/lib/l10n/app_id.arb +++ b/lib/l10n/app_id.arb @@ -139,6 +139,7 @@ "no_description": "Tidak ada deskripsi", "resume": "Lanjutkan", "read": "Baca", + "watch": "Tonton", "popular": "Populer", "open_in_browser": "Buka di peramban", "clear_cookie": "Bersihkan cookie", diff --git a/lib/l10n/app_it.arb b/lib/l10n/app_it.arb index 49fba13..317e6be 100644 --- a/lib/l10n/app_it.arb +++ b/lib/l10n/app_it.arb @@ -139,6 +139,7 @@ "no_description": "Nessuna descrizione", "resume": "Riprendi", "read": "Leggi", + "watch": "Guarda", "popular": "Popolare", "open_in_browser": "Apri nel browser", "clear_cookie": "Cancella cookie", diff --git a/lib/l10n/app_pt.arb b/lib/l10n/app_pt.arb index 22040bd..711ddbf 100644 --- a/lib/l10n/app_pt.arb +++ b/lib/l10n/app_pt.arb @@ -139,6 +139,7 @@ "no_description": "Sem descrição", "resume": "Continuar", "read": "Ler", + "watch": "Assistir", "popular": "Popular", "open_in_browser": "Abrir no navegador", "clear_cookie": "Limpar cookie", diff --git a/lib/l10n/app_pt_BR.arb b/lib/l10n/app_pt_BR.arb index 5652274..1be5890 100644 --- a/lib/l10n/app_pt_BR.arb +++ b/lib/l10n/app_pt_BR.arb @@ -139,6 +139,7 @@ "no_description": "Sem descrição", "resume": "Continuar", "read": "Ler", + "watch": "Assistir", "popular": "Popular", "open_in_browser": "Abrir no navegador", "clear_cookie": "Limpar cookie", diff --git a/lib/l10n/app_ru.arb b/lib/l10n/app_ru.arb index 5fde6d3..54e6e5e 100644 --- a/lib/l10n/app_ru.arb +++ b/lib/l10n/app_ru.arb @@ -139,6 +139,7 @@ "no_description": "Нет описания", "resume": "Продолжить", "read": "Читать", + "watch": "Смотреть", "popular": "Популярное", "open_in_browser": "Открыть в браузере", "clear_cookie": "Очистить cookie", diff --git a/lib/l10n/app_th.arb b/lib/l10n/app_th.arb index 5ecd439..00b1c34 100644 --- a/lib/l10n/app_th.arb +++ b/lib/l10n/app_th.arb @@ -139,6 +139,7 @@ "no_description": "ไม่มีคำอธิบาย", "resume": "ทำต่อ", "read": "อ่าน", + "watch": "ดู", "popular": "ยอดนิยม", "open_in_browser": "เปิดในเบราว์เซอร์", "clear_cookie": "ล้างคุ๊กกี้", diff --git a/lib/l10n/app_tr.arb b/lib/l10n/app_tr.arb index 82e8202..b552aa3 100644 --- a/lib/l10n/app_tr.arb +++ b/lib/l10n/app_tr.arb @@ -139,6 +139,7 @@ "no_description": "Açıklama Yok", "resume": "Devam Et", "read": "Oku", + "watch": "İzle", "popular": "Popüler", "open_in_browser": "Tarayıcıda Aç", "clear_cookie": "Çerezi Temizle", diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index 76c63f0..0b2c4bc 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -139,6 +139,7 @@ "no_description": "无描述", "resume": "继续", "read": "阅读", + "watch": "观看", "popular": "流行", "open_in_browser": "在浏览器中打开", "clear_cookie": "清除Cookie", diff --git a/lib/modules/manga/detail/manga_details_view.dart b/lib/modules/manga/detail/manga_details_view.dart index 73b188f..dac9fa3 100644 --- a/lib/modules/manga/detail/manga_details_view.dart +++ b/lib/modules/manga/detail/manga_details_view.dart @@ -33,6 +33,20 @@ class MangaDetailsView extends ConsumerStatefulWidget { } class _MangaDetailsViewState extends ConsumerState { + + Size measureText(String text, TextStyle style) { + final TextPainter textPainter = TextPainter( + text: TextSpan(text: text, style: style), + textDirection: TextDirection.ltr, + )..layout(); + return textPainter.size; + } + + double calculateDynamicButtonWidth(String text, TextStyle textStyle, double padding) { + final textSize = measureText(text, textStyle); + return textSize.width + padding; + } + @override Widget build(BuildContext context) { final l10n = l10nLocalizations(context)!; @@ -58,9 +72,7 @@ class _MangaDetailsViewState extends ConsumerState { (q) => q.isMangaEqualTo(widget.manga.isManga!))) .watch(fireImmediately: true), builder: (context, snapshot) { - final isFr = - ref.watch(l10nLocaleStateProvider).languageCode == - "fr"; + String buttonLabel = widget.manga.isManga! ? l10n.read : l10n.watch; if (snapshot.hasData && snapshot.data!.isNotEmpty) { final incognitoMode = ref.watch(incognitoModeStateProvider); @@ -79,13 +91,13 @@ class _MangaDetailsViewState extends ConsumerState { onPressed: () { chap.pushToReaderView(context); }, - textWidth: 70, - width: 110, + textWidth: measureText(l10n.resume, Theme.of(context).textTheme.labelLarge!).width, + width: calculateDynamicButtonWidth(l10n.resume, Theme.of(context).textTheme.labelLarge!, 50), // 50 Padding, else RenderFlex overflow Exception ); } return CustomFloatingActionBtn( isExtended: !isExtended, - label: l10n.read, + label: buttonLabel, onPressed: () { widget.manga.chapters .toList() @@ -94,13 +106,13 @@ class _MangaDetailsViewState extends ConsumerState { .last .pushToReaderView(context); }, - textWidth: isFr ? 80 : 40, - width: isFr ? 130 : 90, + textWidth: measureText(buttonLabel, Theme.of(context).textTheme.labelLarge!).width, + width: calculateDynamicButtonWidth(buttonLabel, Theme.of(context).textTheme.labelLarge!, 50), // 50 Padding, else RenderFlex overflow Exception ); } return CustomFloatingActionBtn( isExtended: !isExtended, - label: l10n.read, + label: buttonLabel, onPressed: () { widget.manga.chapters .toList() @@ -109,8 +121,8 @@ class _MangaDetailsViewState extends ConsumerState { .last .pushToReaderView(context); }, - textWidth: isFr ? 80 : 40, - width: isFr ? 130 : 90, + textWidth: measureText(buttonLabel, Theme.of(context).textTheme.labelLarge!).width, + width: calculateDynamicButtonWidth(buttonLabel, Theme.of(context).textTheme.labelLarge!, 50), // 50 Padding, else RenderFlex overflow Exception ); }, ) diff --git a/lib/modules/widgets/custom_extended_image_provider.dart b/lib/modules/widgets/custom_extended_image_provider.dart index bafd1d7..df20458 100644 --- a/lib/modules/widgets/custom_extended_image_provider.dart +++ b/lib/modules/widgets/custom_extended_image_provider.dart @@ -192,7 +192,8 @@ class CustomExtendedNetworkImageProvider ) async { final Directory cacheImagesDirectory = Directory(join( (await getTemporaryDirectory()).path, - 'Mangayomi/${imageCacheFolderName ?? "cacheimagecover"}')); + 'Mangayomi', + imageCacheFolderName ?? 'cacheimagecover')); Uint8List? data; // exist, try to find cache image file if (cacheImagesDirectory.existsSync()) { @@ -213,7 +214,7 @@ class CustomExtendedNetworkImageProvider } // create folder else { - await cacheImagesDirectory.create(); + await cacheImagesDirectory.create(recursive: true); } // load from network if (data == null) {