Let's say I have simple logger:
void main() {
var logger = new MyLogger();
logger.log("hello Dart");
}
I want this code to run in the dev mode (VM checked mode) but i don't want it in my production code. And i want it to be "tree shaked" away with the dart2js compiler. Is there some standard way?
You could embed the code in an assert
. Assertions are ignored in production code and I'm sure not built to JS when pub build
is run in release
mode.
class X {
X() {
print('x created');
}
void log(String m) {
print(m);
}
}
bool log(String m) {
new X()..log(m);
return true;
}
void main() {
assert(() {
new X()..log('in Assert');
return true;
});
assert(() => log('in Assert')); // use a wrapper function
}
When you create a wrapper method that returns true
than you don't have to do it explicit each time.
You can also take a look at this question How to achieve precompiler directive like functionality