Let\'s say I have simple logger:
void main() {
var logger = new MyLogger();
logger.log(\"hello Dart\");
}
I put @GünterZöchbauer "assert trick" inside the factory constructor:
class _ProductionPlug implements DebugClass{
const _ProductionPlug();
noSuchMethod(_) {} //do nothing
}
class DebugClass{
static final DebugClass _plug = const _ProductionPlug();
log(msg){print(msg);}
DebugClass._(){}
factory DebugClass(){
DebugClass instance;
assert((){
instance = new DebugClass._();
return true;
});
return instance != null ? instance : _plug;
}
}
void main() {
print("hello");
new DebugClass()
..log("debugging");
}
This way nothing sticks out.