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>
This commit is contained in:
47
lib/services/app_config_service.dart
Normal file
47
lib/services/app_config_service.dart
Normal file
@ -0,0 +1,47 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user