Skip to content

Commit 21357bc

Browse files
feat: add EngineTrackingInitialize for centralized service initialization
Add centralized initializer with nullable parameters for flexible service initialization
1 parent 2364d34 commit 21357bc

File tree

9 files changed

+485
-20
lines changed

9 files changed

+485
-20
lines changed

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [1.5.0]
9+
10+
### Added
11+
- **EngineTrackingInitialize**: Central initializer for analytics and bug tracking services
12+
- **Nullable Parameters**: Optional initialization of analytics or bug tracking individually
13+
- **Dartdoc Documentation**: Complete public API documentation for all methods and parameters
14+
15+
### Enhanced
16+
- **Flexible Initialization**: Initialize both services, only analytics, or only bug tracking
17+
- **Parallel Execution**: Optimized Future.wait for maximum performance
18+
- **Test Coverage**: 17 new tests for centralized initialization scenarios
19+
820
## [1.4.1]
921

1022
### Enhanced

README.md

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,49 @@ cd example && flutter run
282282
- **🌐 Exemplo HTTP Tracking**: Requisições com PokéAPI e JSONPlaceholder
283283
- **👁️ Exemplo View Tracking**: Sistema automático de tracking de telas
284284

285-
### 🎯 Configuração Básica
285+
### 🚀 Inicialização Centralizada (Recomendado)
286+
287+
**Novo!** Use o `EngineTrackingInitialize` para inicializar Analytics e Bug Tracking de uma só vez:
288+
289+
```dart
290+
import 'package:engine_tracking/engine_tracking.dart';
291+
292+
// Ambos os serviços
293+
await EngineTrackingInitialize.initWithModels(
294+
analyticsModel: EngineAnalyticsModel(/* configs */),
295+
bugTrackingModel: EngineBugTrackingModel(/* configs */),
296+
);
297+
298+
// Apenas Analytics
299+
await EngineTrackingInitialize.initWithModels(
300+
analyticsModel: EngineAnalyticsModel(/* configs */),
301+
bugTrackingModel: null,
302+
);
303+
304+
// Apenas Bug Tracking
305+
await EngineTrackingInitialize.initWithModels(
306+
analyticsModel: null,
307+
bugTrackingModel: EngineBugTrackingModel(/* configs */),
308+
);
309+
310+
// Com Adapters (controle granular)
311+
await EngineTrackingInitialize.initWithAdapters(
312+
analyticsAdapters: [EngineFirebaseAnalyticsAdapter(/* config */)],
313+
bugTrackingAdapters: null, // Skip bug tracking
314+
);
315+
316+
// Inicialização rápida (ambos desabilitados)
317+
await EngineTrackingInitialize.initWithDefaults();
318+
319+
// Status
320+
bool bothReady = EngineTrackingInitialize.isInitialized;
321+
bool anyEnabled = EngineTrackingInitialize.isEnabled;
322+
323+
// Cleanup
324+
await EngineTrackingInitialize.dispose();
325+
```
326+
327+
### 🎯 Configuração Básica (Método Individual)
286328

287329
```dart
288330
import 'package:engine_tracking/engine_tracking.dart';
@@ -335,8 +377,8 @@ Future<void> setupTracking() async {
335377
googleLoggingConfig: const EngineGoogleLoggingConfig(enabled: true, /* configs */),
336378
);
337379
338-
await EngineAnalytics.init(analyticsModel);
339-
await EngineBugTracking.init(bugTrackingModel);
380+
await EngineAnalytics.initWithModel(analyticsModel);
381+
await EngineBugTracking.initWithModel(bugTrackingModel);
340382
}
341383
```
342384

analysis_options.yaml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
1-
# Flutter/Dart 2025 - Comprehensive Lint Configuration
2-
# Based on flutter_lints 6.0.0 and modern best practices
3-
# Consulte este arquivo como referência para nosso padrão de lint
4-
51
include: package:flutter_lints/flutter.yaml
62

73
formatter:
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
import 'dart:async';
2+
3+
import 'package:engine_tracking/engine_tracking.dart';
4+
5+
/// Central initializer for Engine Tracking services
6+
///
7+
/// Provides methods to initialize analytics and bug tracking services
8+
/// together or individually with adapters, models, or default configurations.
9+
class EngineTrackingInitialize {
10+
EngineTrackingInitialize._();
11+
12+
/// Initialize tracking services with custom adapters
13+
///
14+
/// [analyticsAdapters] List of analytics adapters to initialize.
15+
/// Can be null to skip analytics initialization.
16+
///
17+
/// [bugTrackingAdapters] List of bug tracking adapters to initialize.
18+
/// Can be null to skip bug tracking initialization.
19+
static Future<void> initWithAdapters({
20+
final List<IEngineAnalyticsAdapter>? analyticsAdapters,
21+
final List<IEngineBugTrackingAdapter>? bugTrackingAdapters,
22+
}) async {
23+
final futures = <Future<void>>[];
24+
25+
if (analyticsAdapters != null) {
26+
futures.add(EngineAnalytics.init(analyticsAdapters));
27+
}
28+
29+
if (bugTrackingAdapters != null) {
30+
futures.add(EngineBugTracking.init(bugTrackingAdapters));
31+
}
32+
33+
await Future.wait(futures);
34+
}
35+
36+
/// Initialize tracking services with configuration models
37+
///
38+
/// [analyticsModel] Analytics configuration model.
39+
/// Can be null to skip analytics initialization.
40+
///
41+
/// [bugTrackingModel] Bug tracking configuration model.
42+
/// Can be null to skip bug tracking initialization.
43+
static Future<void> initWithModels({
44+
final EngineAnalyticsModel? analyticsModel,
45+
final EngineBugTrackingModel? bugTrackingModel,
46+
}) async {
47+
final futures = <Future<void>>[];
48+
49+
if (analyticsModel != null) {
50+
futures.add(EngineAnalytics.initWithModel(analyticsModel));
51+
}
52+
53+
if (bugTrackingModel != null) {
54+
futures.add(EngineBugTracking.initWithModel(bugTrackingModel));
55+
}
56+
57+
await Future.wait(futures);
58+
}
59+
60+
/// Initialize both services with default disabled configurations
61+
static Future<void> initWithDefaults() async {
62+
await initWithModels(
63+
analyticsModel: EngineAnalyticsModelDefault(),
64+
bugTrackingModel: EngineBugTrackingModelDefault(),
65+
);
66+
}
67+
68+
/// Dispose all initialized tracking services
69+
static Future<void> dispose() async {
70+
await Future.wait([
71+
EngineAnalytics.dispose(),
72+
EngineBugTracking.dispose(),
73+
]);
74+
}
75+
76+
/// Returns true if both analytics and bug tracking are initialized
77+
static bool get isInitialized => EngineAnalytics.isInitialized && EngineBugTracking.isInitialized;
78+
79+
/// Returns true if at least one service is enabled
80+
static bool get isEnabled => EngineAnalytics.isEnabled || EngineBugTracking.isEnabled;
81+
}

lib/src/logging/engine_log.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import 'package:engine_tracking/engine_tracking.dart';
88
/// This class provides methods for logging at different levels (debug, info, warning, error, fatal)
99
/// and integrates with Firebase Crashlytics for crash reporting or other logging services.
1010
class EngineLog {
11-
/// The name used for all log messages
1211
static const String _name = 'ENGINE_LOG';
1312

1413
static Future<void> _logWithLevel(

lib/src/src.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
export 'analytics/analytics.dart';
22
export 'bug_tracking/bug_tracking.dart';
33
export 'config/config.dart';
4+
export 'engine_tracking_initialize.dart';
45
export 'enums/enums.dart';
56
export 'logging/logging.dart';
67
export 'models/models.dart';

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: engine_tracking
22
description: Plugin Flutter para tracking, analytics, crashlytics e logs do Engine Framework
3-
version: 1.4.1
3+
version: 1.5.0
44
homepage: https://stmr.tech
55
repository: https://github.com/moreirawebmaster/engine-tracking
66
issue_tracker: https://github.com/moreirawebmaster/engine-tracking/issues

0 commit comments

Comments
 (0)