带参数的 Dart Singleton(全局应用程序记录器)
Dart Singleton with parameters (global app logger)
我想在我的应用程序中使用 Logger 库。我只想将它实例化一次,以便我的应用程序具有一致的格式,而不是在我使用它的每个文件中传递 PrettyPrinter。这样做的正确方法是什么?我应该只使用全局常量吗?有没有办法使用 Singleton 来做到这一点?
我定义了一个辅助函数来获取记录器:
import 'package:logger/logger.dart';
import 'log_printer.dart';
Logger getLogger(String className) {
return Logger(printer: SimpleLogPrinter(className));
}
然后在每个 class 中我想记录 eaxmple 的地方:
class ProfileService with ChangeNotifier {
static final _log = getLogger('ProfileService');
Future<Profile> updateProfile(Profile profile) async {
_log.v('updateProfile');
...
}
...
}
另一个例子:
class AuthScreen extends StatelessWidget {
final log = getLogger('AuthScreen');
@override
Widget build(BuildContext context) {
log.v('build called');
...
}
...
}
我想在我的应用程序中使用 Logger 库。我只想将它实例化一次,以便我的应用程序具有一致的格式,而不是在我使用它的每个文件中传递 PrettyPrinter。这样做的正确方法是什么?我应该只使用全局常量吗?有没有办法使用 Singleton 来做到这一点?
我定义了一个辅助函数来获取记录器:
import 'package:logger/logger.dart';
import 'log_printer.dart';
Logger getLogger(String className) {
return Logger(printer: SimpleLogPrinter(className));
}
然后在每个 class 中我想记录 eaxmple 的地方:
class ProfileService with ChangeNotifier {
static final _log = getLogger('ProfileService');
Future<Profile> updateProfile(Profile profile) async {
_log.v('updateProfile');
...
}
...
}
另一个例子:
class AuthScreen extends StatelessWidget {
final log = getLogger('AuthScreen');
@override
Widget build(BuildContext context) {
log.v('build called');
...
}
...
}