Flutter Log封装实践 2022-11-02 周三

2022-11-03  本文已影响0人  勇往直前888

简介

Flutter自带的print(), debugPrint()基本够用。
当然,如果需要更多的功能,就需要使用第三方插件。
自己写不合适。

选择第三方插件

在pub.dev网站输入关键字“logger”,进行搜索,一般选择最受欢迎的一个就好了。

企业微信截图_668717db-1fee-4d28-a3ff-09a87c1fe9fa.png

很明显,排名第一的优势明显。如果没有特殊原因,就选这个了。

安装插件

flutter pub add logger

文件位置

写log算是工具的一种,所以放在core/utils下面

企业微信截图_4b3c40d8-cb52-4ccf-8e0f-ee268322c19a.png

封装

import 'package:logger/logger.dart';

class LoggerUtil {
  static final Logger logger = Logger(
    printer: PrettyPrinter(
      methodCount: 1,
      colors: true,
      printTime: true,
    ),
  );

  /// 写log
  static void loggerWithType(
    dynamic message, {
    LoggerType type = LoggerType.debug,
  }) {
    switch (type) {
      case LoggerType.verbose:
        logger.v(message);
        break;
      case LoggerType.debug:
        logger.d(message);
        break;
      case LoggerType.info:
        logger.i(message);
        break;
      case LoggerType.warning:
        logger.w(message);
        break;
      case LoggerType.error:
        logger.e(message);
        break;
      case LoggerType.terrible:
        logger.wtf(message);
        break;
      default:
        logger.d(message);
    }
  }
}

/// logger 类型
enum LoggerType {
  verbose,
  debug,
  info,
  warning,
  error,
  terrible,
}

/// 模仿print,给出一个全局函数,方便调用
void log(
  dynamic message, {
  LoggerType type = LoggerType.info,
}) {
  LoggerUtil.loggerWithType(message, type: type);
}

使用

/// 具体的初始化方法
  Future<StorageService> _init() async {
    if (!isInitFinished) {
      log('StorageService start');
      _spInstance = await SharedPreferences.getInstance();
      isInitFinished = true;
      log('StorageService end');
    }
    return this;
  }
企业微信截图_aa0201dc-349d-4acd-acca-48d187e6603c.png

问题:Color不起作用

企业微信截图_3d05e074-3b3c-4dd6-af8b-f2d041890587.png

既然显示不了颜色,那么就不显示颜色就好了。

小结

上一篇 下一篇

猜你喜欢

热点阅读