Skip to content

Instantly share code, notes, and snippets.

View develop4God's full-sized avatar
🎯
Focusing

develop4God

🎯
Focusing
View GitHub Profile
@develop4God
develop4God / progress_page.dart
Last active August 14, 2025 19:45
progress_page.dart
// 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';
@develop4God
develop4God / gist:9c16f87371b0f5e5004a1bd2d0d7e0d5
Created August 14, 2025 20:53
Analisis ajustes nuevo desarrollo para facil implementacion con firebase
// 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 {
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
@develop4God
develop4God / gist:dabf868e4c695bb0c07e22203a46bd33
Created August 15, 2025 08:09
Files for test services notifications
// 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';
@develop4God
develop4God / gist:90aed8c7bba84d975ae7e7fa71e9daa1
Last active August 16, 2025 04:27
nueva opcion en devocionales page spirutual stats
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
// 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';
@develop4God
develop4God / devocional_provider.dart
Created August 17, 2025 03:14
devocional_provider.dart para segmentar
// 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
@develop4God
develop4God / gist:5781221f83c11d8775ddd60e746c1990
Last active August 17, 2025 04:18
tts service+devocional provider+devocional page
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';
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)
@develop4God
develop4God / gist:cdd13c94396f18550445dc5b1454590b
Created August 20, 2025 17:03
TTS files related controller, widget, Service
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 {