import "package:flutter/material.dart";
import "package:only_bible_app/gen/bible.gen.dart";
import "package:only_bible_app/store/actions_navigation.dart";
import "package:only_bible_app/utils.dart";
import "package:only_bible_app/store/app_state.dart";
void showAlert(BuildContext context, String title, String message) {
barrierColor: Colors.black54,
actionsAlignment: MainAxisAlignment.center,
actionsOverflowButtonSpacing: 8.0,
Navigator.of(context).pop();
void showError(BuildContext context, String message) {
showAlert(context, "Error", message);
void showBibleSelectDialog(BuildContext context, Bible bible) {
barrierColor: Colors.black54,
title: Text(bible.bibleSelectTitle!),
contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 12),
child: ListView.separated(
itemCount: bibleItems.length,
separatorBuilder: (_, __) => const Divider(height: 1),
itemBuilder: (_, index) {
final item = bibleItems.values.elementAt(index);
final isSelected = context.read().bible.name == item.fileName;
leading: const Icon(Icons.menu_book),
title: Text(item.languageNative, style: const TextStyle(fontWeight: FontWeight.w600)),
subtitle: (item.languageNative != item.languageEnglish)
? Text(item.languageEnglish, style: const TextStyle(fontSize: 15, fontWeight: FontWeight.w400))
trailing: isSelected ? const Icon(Icons.check) : null,
final s = context.read();
UpdateCurrentBibleAction(item.fileName, s.savedBook, s.savedChapter),
void showReportError(BuildContext context, String message, StackTrace? st) {
if (message.contains("LateInitializationError") || message.contains("HardwareKeyboard")) {
barrierColor: Colors.black54,
title: const Text("Alert"),
content: const Text("An error has occurred. Do you want to report this error to us?"),
actionsAlignment: MainAxisAlignment.end,
actionsOverflowButtonSpacing: 8.0,
recordError(message, st);
Navigator.of(context).pop();
showBibleSelectDialog(context, context.read().bible);
child: const Text("Yes"),
Navigator.of(context).pop();
showBibleSelectDialog(context, context.read().bible);