import 'package:flutter/material.dart'; import 'package:logging/logging.dart'; enum Flavor { UNSET, DEV, STAGING, PRODUCTION, LOCAL } const FlavorNames = ["Unset", "Development", "Staging", "Production", "Local"]; class Config { static Config _instance = Config( flavor: Flavor.UNSET, apiURL: "", bucketName: "", reportProjectID: "", reportURL: ""); final Flavor flavor; final String name; final Color color; final String apiURL; final String reportURL; final Level level; final String reportProjectID; final String bucketName; factory Config( {required Flavor flavor, required String apiURL, required String reportURL, required String reportProjectID, required String bucketName, Color color: Colors.blue, Level level: Level.SEVERE}) { _instance = Config._internal(flavor, FlavorNames[flavor.index], color, apiURL, reportURL, level, reportProjectID, bucketName); Logger.root.level = level; Logger.root.onRecord.listen((record) { print( '${record.level.name}: ${record.time}: ${record.loggerName}: ${record.message}'); }); return _instance; } Config._internal(this.flavor, this.name, this.color, this.apiURL, this.reportURL, this.level, this.reportProjectID, this.bucketName); static Config get instance { return _instance; } static bool isProduction() => _instance.flavor == Flavor.PRODUCTION; static bool isDevelopment() => _instance.flavor == Flavor.DEV; static bool isStaging() => _instance.flavor == Flavor.STAGING; static bool isLocal() => _instance.flavor == Flavor.LOCAL; }