pub package doc

Emoji based semantic debuging:

  • Debug the state and execution flow of your program using familiar idioms
  • Scoped debuging: activate debug locally
  • Easy implementation of custom debug methods: extend the EmoDebug class to create your own methods

Looking at the console you get an intuitive global view on the execution flow:



   import 'package:emodebug/emodebug.dart';

   const EmoDebug debug = EmoDebug();

   debug.state("A state operation");
   debug.save("Saving something");
   debug.delete("Deleting something");
   debug.update("Updating something");
   debug.ok("Everything is ok");
   // or from an emoji using any object or a string
   debug.emo("📢", obj);

Available methods: check the api documentation


The methods accept any object as parameter (dynamic)

An optional domain positional parameter is available for a more precise message:

   final data = {"foo": "bar"};
   debug.data(data, "some data");
   // output:
   // 💼 Some data: {foo: bar}

Scoped debuging

The recommended way is to use local EmoDebug instances to be able to enable and disable debug messages for a defined portion of code. Use the zone attribute to prefix the messages:

   const EmoDebug _ = EmoDebug(zone: "http service");
   // the messages will be prefixed by [http service] :
   _.notFound(path, "page not found");
   // output:
   // 🚫 [http service] Page not found: /some_page.html


It is possible to deactivate the printing of the messages for an instance:

   // on top of a file
   const EmoDebug debug = EmoDebug(deactivatePrint: true);

Implement custom debug methods

   const CustomEmoDebug debug = CustomEmoDebug();

   class CustomEmoDebug extends EmoDebug {
     const CustomEmoDebug();
     void crash(dynamic obj, [String domain]) => emo("💥", obj, domain);
     void recovery(dynamic obj, [String domain]) => emo("👍", obj, domain);

   // in the code
   debug.crash("A crash occured!!!");
   debug.recovery("Recovery successful");