Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.5.0]

### Added
- **EngineTrackingInitialize**: Central initializer for analytics and bug tracking services
- **Nullable Parameters**: Optional initialization of analytics or bug tracking individually
- **Dartdoc Documentation**: Complete public API documentation for all methods and parameters

### Enhanced
- **Flexible Initialization**: Initialize both services, only analytics, or only bug tracking
- **Parallel Execution**: Optimized Future.wait for maximum performance
- **Test Coverage**: 17 new tests for centralized initialization scenarios

## [1.4.1]

### Enhanced
Expand Down
48 changes: 45 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,49 @@ cd example && flutter run
- **🌐 Exemplo HTTP Tracking**: Requisições com PokéAPI e JSONPlaceholder
- **👁️ Exemplo View Tracking**: Sistema automático de tracking de telas

### 🎯 Configuração Básica
### 🚀 Inicialização Centralizada (Recomendado)

**Novo!** Use o `EngineTrackingInitialize` para inicializar Analytics e Bug Tracking de uma só vez:

```dart
import 'package:engine_tracking/engine_tracking.dart';

// Ambos os serviços
await EngineTrackingInitialize.initWithModels(
analyticsModel: EngineAnalyticsModel(/* configs */),
bugTrackingModel: EngineBugTrackingModel(/* configs */),
);

// Apenas Analytics
await EngineTrackingInitialize.initWithModels(
analyticsModel: EngineAnalyticsModel(/* configs */),
bugTrackingModel: null,
);

// Apenas Bug Tracking
await EngineTrackingInitialize.initWithModels(
analyticsModel: null,
bugTrackingModel: EngineBugTrackingModel(/* configs */),
);

// Com Adapters (controle granular)
await EngineTrackingInitialize.initWithAdapters(
analyticsAdapters: [EngineFirebaseAnalyticsAdapter(/* config */)],
bugTrackingAdapters: null, // Skip bug tracking
);

// Inicialização rápida (ambos desabilitados)
await EngineTrackingInitialize.initWithDefaults();

// Status
bool bothReady = EngineTrackingInitialize.isInitialized;
bool anyEnabled = EngineTrackingInitialize.isEnabled;

// Cleanup
await EngineTrackingInitialize.dispose();
```

### 🎯 Configuração Básica (Método Individual)

```dart
import 'package:engine_tracking/engine_tracking.dart';
Expand Down Expand Up @@ -335,8 +377,8 @@ Future<void> setupTracking() async {
googleLoggingConfig: const EngineGoogleLoggingConfig(enabled: true, /* configs */),
);

await EngineAnalytics.init(analyticsModel);
await EngineBugTracking.init(bugTrackingModel);
await EngineAnalytics.initWithModel(analyticsModel);
await EngineBugTracking.initWithModel(bugTrackingModel);
}
```

Expand Down
4 changes: 0 additions & 4 deletions analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
# Flutter/Dart 2025 - Comprehensive Lint Configuration
# Based on flutter_lints 6.0.0 and modern best practices
# Consulte este arquivo como referência para nosso padrão de lint

include: package:flutter_lints/flutter.yaml

formatter:
Expand Down
81 changes: 81 additions & 0 deletions lib/src/engine_tracking_initialize.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
import 'dart:async';

import 'package:engine_tracking/engine_tracking.dart';

/// Central initializer for Engine Tracking services
///
/// Provides methods to initialize analytics and bug tracking services
/// together or individually with adapters, models, or default configurations.
class EngineTrackingInitialize {
EngineTrackingInitialize._();

/// Initialize tracking services with custom adapters
///
/// [analyticsAdapters] List of analytics adapters to initialize.
/// Can be null to skip analytics initialization.
///
/// [bugTrackingAdapters] List of bug tracking adapters to initialize.
/// Can be null to skip bug tracking initialization.
static Future<void> initWithAdapters({
final List<IEngineAnalyticsAdapter>? analyticsAdapters,
final List<IEngineBugTrackingAdapter>? bugTrackingAdapters,
}) async {
final futures = <Future<void>>[];

if (analyticsAdapters != null) {
futures.add(EngineAnalytics.init(analyticsAdapters));
}

if (bugTrackingAdapters != null) {
futures.add(EngineBugTracking.init(bugTrackingAdapters));
}

await Future.wait(futures);
}

/// Initialize tracking services with configuration models
///
/// [analyticsModel] Analytics configuration model.
/// Can be null to skip analytics initialization.
///
/// [bugTrackingModel] Bug tracking configuration model.
/// Can be null to skip bug tracking initialization.
static Future<void> initWithModels({
final EngineAnalyticsModel? analyticsModel,
final EngineBugTrackingModel? bugTrackingModel,
}) async {
final futures = <Future<void>>[];

if (analyticsModel != null) {
futures.add(EngineAnalytics.initWithModel(analyticsModel));
}

if (bugTrackingModel != null) {
futures.add(EngineBugTracking.initWithModel(bugTrackingModel));
}

await Future.wait(futures);
}

/// Initialize both services with default disabled configurations
static Future<void> initWithDefaults() async {
await initWithModels(
analyticsModel: EngineAnalyticsModelDefault(),
bugTrackingModel: EngineBugTrackingModelDefault(),
);
}

/// Dispose all initialized tracking services
static Future<void> dispose() async {
await Future.wait([
EngineAnalytics.dispose(),
EngineBugTracking.dispose(),
]);
}

/// Returns true if both analytics and bug tracking are initialized
static bool get isInitialized => EngineAnalytics.isInitialized && EngineBugTracking.isInitialized;

/// Returns true if at least one service is enabled
static bool get isEnabled => EngineAnalytics.isEnabled || EngineBugTracking.isEnabled;
}
1 change: 0 additions & 1 deletion lib/src/logging/engine_log.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import 'package:engine_tracking/engine_tracking.dart';
/// This class provides methods for logging at different levels (debug, info, warning, error, fatal)
/// and integrates with Firebase Crashlytics for crash reporting or other logging services.
class EngineLog {
/// The name used for all log messages
static const String _name = 'ENGINE_LOG';

static Future<void> _logWithLevel(
Expand Down
1 change: 1 addition & 0 deletions lib/src/src.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
export 'analytics/analytics.dart';
export 'bug_tracking/bug_tracking.dart';
export 'config/config.dart';
export 'engine_tracking_initialize.dart';
export 'enums/enums.dart';
export 'logging/logging.dart';
export 'models/models.dart';
Expand Down
2 changes: 1 addition & 1 deletion pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
name: engine_tracking
description: Plugin Flutter para tracking, analytics, crashlytics e logs do Engine Framework
version: 1.4.1
version: 1.5.0
homepage: https://stmr.tech
repository: https://github.com/moreirawebmaster/engine-tracking
issue_tracker: https://github.com/moreirawebmaster/engine-tracking/issues
Expand Down
Loading