Mr.*_*Oak 5 logging singleton global dart flutter
我想在我的应用程序中使用Logger库。我只想实例化它一次,以便在我的应用程序中具有一致的格式。我还想避免PrettyPrinter()多次实例化:
// Where should I put this ?
var logger = Logger(
printer: PrettyPrinter(
methodCount: 2,
colors: true,
),
);
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?我应该只使用全局常量吗?有没有办法使用单例来做到这一点?
Jac*_*ck' 11
我更喜欢使用Singleton。
这在 Flutter 中并不常见,但在这种场景下选择它是非常有意义的。必须在任何地方都可以访问记录器,无需任何上下文。并且可以让它保持活动状态直到应用程序生命周期结束。
我的建议是创建一个log.dart包含以下内容的文件:
import 'package:logger/logger.dart';
Logger get logger => Log.instance;
class Log extends Logger {
Log._() : super(printer: PrettyPrinter(printTime: true));
static final instance = Log._();
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过以下方式在任何地方访问您的记录器:
logger.d('My debug message');
Run Code Online (Sandbox Code Playgroud)