美文网首页
Flutter Log封装实践 2022-11-02 周三

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

作者: 勇往直前888 | 来源:发表于2022-11-03 09:43 被阅读0次

简介

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

选择第三方插件

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

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

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

安装插件

  • 链接:
    logger

  • 安装命令

flutter pub add logger

文件位置

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

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

封装

  • 就做一层封装,放在一个类中

  • 做成静态变量,静态函数,方便调用

  • log的分级,做成一个枚举,提供一个默认参数就行

  • 模仿系统的print函数,所以进一步封装成全局函数。(这个特殊,大多数时候静态函数已经可以了)

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);
}

使用

  • 直接log全局函数调用就行,参数是dynamic的,随便往里塞就好,比print还方便。
/// 具体的初始化方法
  Future<StorageService> _init() async {
    if (!isInitFinished) {
      log('StorageService start');
      _spInstance = await SharedPreferences.getInstance();
      isInitFinished = true;
      log('StorageService end');
    }
    return this;
  }
  • 把log用字符图形圈起来,清晰很多,还是不错的。
企业微信截图_aa0201dc-349d-4acd-acca-48d187e6603c.png

问题:Color不起作用

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

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

小结

  • 直接用系统提供的debugPrint其实也差不多了。

  • 想log清晰一点,用这个插件还是不错的

  • 要创建对象,再使用就显得麻烦了,稍微封装一下,使用起来跟系统差不多。

相关文章

网友评论

      本文标题:Flutter Log封装实践 2022-11-02 周三

      本文链接:https://www.haomeiwen.com/subject/tzbjtdtx.html