Files
flutter_ecommerce_portal/lib/services/app_config_service.dart
rbhat 39a4f3283f Initialize project and update portal port configuration
Set default portal port to 8081, fix Dart build issue in cart screen, and update setup documentation.

Co-Authored-By: Oz <oz-agent@warp.dev>
2026-04-10 19:08:30 +05:30

48 lines
1.5 KiB
Dart

import 'dart:convert';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/services.dart';
class AppConfigService {
AppConfigService._();
static final AppConfigService instance = AppConfigService._();
bool _initialized = false;
Future<void> initialize() async {
if (_initialized) return;
final configRaw =
await rootBundle.loadString('assets/config/runtime_config.json');
final Map<String, dynamic> config = json.decode(configRaw);
await Firebase.initializeApp(
options: FirebaseOptions(
apiKey: _required(config, 'firebase_api_key'),
appId: _required(config, 'firebase_app_id'),
messagingSenderId: _required(config, 'firebase_messaging_sender_id'),
projectId: _required(config, 'firebase_project_id'),
authDomain: _required(config, 'firebase_auth_domain'),
storageBucket: _required(config, 'firebase_storage_bucket'),
measurementId: _optional(config, 'firebase_measurement_id'),
),
);
_initialized = true;
}
String _required(Map<String, dynamic> config, String key) {
final value = (config[key] ?? '').toString().trim();
if (value.isEmpty || value.startsWith('replace-with-')) {
throw StateError('Missing required runtime configuration: $key');
}
return value;
}
String? _optional(Map<String, dynamic> config, String key) {
final value = (config[key] ?? '').toString().trim();
return value.isEmpty ? null : value;
}
}