This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // lib/pages/progress_page.dart - Fixed themed shadows | |
| import 'package:flutter/material.dart'; | |
| import 'package:intl/intl.dart'; | |
| import 'package:provider/provider.dart'; | |
| import '../models/spiritual_stats_model.dart'; | |
| import '../pages/favorites_page.dart'; | |
| import '../providers/devocional_provider.dart'; | |
| import '../services/spiritual_stats_service.dart'; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // lib/services/spiritual_stats_service.dart | |
| import 'dart:convert'; | |
| import 'package:flutter/material.dart'; | |
| import 'package:shared_preferences/shared_preferences.dart'; | |
| import '../models/spiritual_stats_model.dart'; | |
| class SpiritualStatsService { |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| segun informe The original NotificationService integration tests were failing due to Firebase initialization conflicts that occurred when the singleton constructor immediately accessed Firebase services before proper setup could complete. Rather than modifying the production NotificationService code, this PR creates a comprehensive test suite that thoroughly validates all NotificationService functionality without the Firebase dependency issues. | |
| Root Cause Analysis | |
| The NotificationService implements the singleton pattern correctly using a factory constructor: | |
| class NotificationService { | |
| static final NotificationService _instance = NotificationService._internal(); | |
| factory NotificationService() => _instance; // ✅ Correct public API | |
| // These are initialized immediately when the singleton is created |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // lib/services/notification_service.dart | |
| //notification_service.dart - Save User Timezone to Firestore | |
| //notification_service.dart - Guardar lastLogin en Firestore | |
| //notification_service.dart (Ajuste FCM y Autenticación para que no haya usuario nulo) | |
| //notification_service.dart (Ajuste de Permisos) | |
| import 'dart:developer' as developer; | |
| import 'package:flutter/foundation.dart'; | |
| import 'package:flutter_local_notifications/flutter_local_notifications.dart'; | |
| import 'package:permission_handler/permission_handler.dart'; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| seccion 1 logica para implementar en un nuevo dart | |
| // Agregar estas propiedades a la clase _DevocionalesPageState | |
| // Timer para evaluación periódica de criterios | |
| Timer? _criteriaCheckTimer; | |
| // Set para rastrear devocionales que ya cumplieron criterios automáticamente | |
| Set<String> _autoCompletedDevocionals = {}; | |
| // Agregar al initState() después de la línea existente |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // lib/providers/devocional_provider.dart | |
| import 'dart:async'; // Para Timer | |
| import 'dart:convert'; | |
| import 'dart:io'; // Para manejo de archivos locales | |
| import 'dart:ui'; // Necesario para PlatformDispatcher para obtener el locale | |
| import 'package:devocional_nuevo/models/devocional_model.dart'; | |
| import 'package:devocional_nuevo/services/spiritual_stats_service.dart'; | |
| import 'package:devocional_nuevo/utils/constants.dart'; // Importación necesaria para Constants.apiUrl | |
| import 'package:flutter/material.dart'; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // lib/providers/devocional_provider.dart | |
| import 'dart:async'; // Para Timer y StreamSubscription | |
| import 'dart:convert'; | |
| import 'dart:io'; // Para manejo de archivos locales | |
| import 'dart:ui'; // Necesario para PlatformDispatcher para obtener el locale | |
| import 'package:devocional_nuevo/models/devocional_model.dart'; | |
| import 'package:devocional_nuevo/services/spiritual_stats_service.dart'; | |
| import 'package:devocional_nuevo/services/tts_service.dart'; // Servicio TTS | |
| import 'package:devocional_nuevo/utils/constants.dart'; // Importación necesaria para Constants.apiUrl |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| TTS service | |
| import 'package:flutter_tts/flutter_tts.dart'; | |
| import 'package:devocional_nuevo/models/devocional_model.dart'; | |
| import 'package:shared_preferences/shared_preferences.dart'; | |
| import 'package:synchronized/synchronized.dart'; | |
| import 'dart:developer' as developer; | |
| import 'dart:io' show Platform; | |
| import 'package:flutter/services.dart'; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| I/MIUIInput(10570): [MotionEvent] ViewRootImpl windowName 'com.develop4god.devocional_nuevo/com.develop4god.devocional_nuevo.MainActivity', { action=ACTION_DOWN, id[0]=0, pointerCount=1, eventTime=114850170, downTime=114850170, phoneEventTime=12:42:09.923 } moveCount:0 | |
| W/MirrorManager(10570): this model don't Support | |
| I/flutter (10570): Devotional read attempt: juan330RVR1960 | |
| I/flutter (10570): Reading time: 5s, Scroll: 0.0% | |
| I/flutter (10570): Meets criteria: false | |
| I/MIUIInput(10570): [MotionEvent] ViewRootImpl windowName 'com.develop4god.devocional_nuevo/com.develop4god.devocional_nuevo.MainActivity', { action=ACTION_UP, id[0]=0, pointerCount=1, eventTime=114850232, downTime=114850170, phoneEventTime=12:42:09.985 } moveCount:1 | |
| I/flutter (10570): InkWell fue presionado. | |
| I/flutter (10570): Manejador de tap activado. | |
| I/flutter (10570): Se intenta reproducir el devocional con id: juan330RVR1960 | |
| I/flutter (10570): 🔄 AudioController: Toggle for juan330RVR1960 (current: null, state: TtsState.idle) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| audio controller: | |
| import 'dart:async'; | |
| import 'package:devocional_nuevo/models/devocional_model.dart'; | |
| import 'package:devocional_nuevo/services/tts_service.dart'; | |
| import 'package:flutter/widgets.dart'; | |
| /// AudioController mejorado para soporte de progreso y navegación de chunks | |
| class AudioController extends ChangeNotifier { |