Flutter可视化控制台插件visual_console的使用

Flutter可视化控制台插件visual_console的使用

Visual Console 是一个受 VConsole 启发的可视化控制台插件。它是一个轻量级且功能强大的工具,适用于开发和调试 Flutter 应用程序。

特性

  • 可配置:它是 Logger 插件。
  • 简单:有两个输出通道:IDE 的控制台和屏幕上的可视化控制台。
  • 小巧:它具有较小的体积。
  • 快速:运行流畅且响应迅速。
  • 强大:支持过滤、搜索、堆栈跟踪、清理、复制、删除日志等操作。

开始使用

1. 定义 Logger

final logger = VisualLogger(
  filter: ProductionFilter(), // 过滤器用于筛选日志级别
  output: VisualOutput(), // 输出对象用于将日志输出到控制台或可视化控制台
  printer: VisualPrinter( // 打印器用于格式化日志信息
    realPrinter: VisualPrefixPrinter(
      methodCount: 1, // 显示调用方法的数量
      lineLength: () {
        int lineLength = 80;
        try {
          lineLength = stdout.terminalColumns; // 获取控制台一行能打印多少字符
        } catch (e) {}
        return lineLength;
      }(),
      colors: stdout.supportsAnsiEscapes, // 颜色是否可用
      printEmojis: false, // 是否打印表情符号
      printTime: true, // 是否打印时间戳
    ),
  ),
);

2. 初始化

MaterialApp 中添加 Console 组件:

MaterialApp(
  title: 'Visual Console Demo',
  home: const MyHomePage(),
  builder: (context, child) {
    return Stack(
      children: [
        child!, // 原来的子组件
        const Console(), // 可视化控制台组件
      ],
    );
  },
);

使用方式

logger.v("verbose"); // 打印详细日志
logger.d("debug"); // 打印调试日志
logger.i("info"); // 打印信息日志
logger.w("warning"); // 打印警告日志
logger.e("error"); // 打印错误日志
logger.wtf("wtf"); // 打印致命错误日志

屏幕截图

截图

其他信息

此插件是 Logger 插件的一个扩展包。

示例代码

以下是完整的示例代码:

import 'dart:io';

import 'package:flutter/material.dart';

import 'package:visual_console/visual_console.dart';

var logger = VisualLogger(
  filter: ProductionFilter(),
  output: VisualOutput(),
  printer: VisualPrinter(
    realPrinter: VisualPrefixPrinter(
      methodCount: 1,
      lineLength: () {
        int lineLength = 80;
        try {
          lineLength = stdout.terminalColumns;
        } catch (e) {}
        return lineLength;
      }(),
      colors: stdout.supportsAnsiEscapes, // 颜色是否可用
      printEmojis: false, // 是否打印表情符号
      printTime: true, // 是否打印时间戳
    ),
  ),
);

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // 这个组件是应用的根组件
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Visual Console Demo',
      home: Builder(
        builder: (context) {
          return const MyHomePage();
        },
      ),
      builder: (context, child) {
        return Stack(
          children: [
            child!, // 原来的子组件
            const Console(), // 可视化控制台组件
          ],
        );
      },
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("Visual Console"),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: () {
                logger.v("verbose"); // 打印详细日志
                logger.d("debug"); // 打印调试日志
                logger.i("info"); // 打印信息日志
                logger.w("warning"); // 打印警告日志
                logger.e("error"); // 打印错误日志
                logger.wtf("wtf"); // 打印致命错误日志
              },
              child: const Text("Tap to log"),
            ),
            ElevatedButton(
              onPressed: () {
                try {
                  throw Exception("error");
                } catch (e, s) {
                  logger.e("catch error", e, s); // 打印捕获到的错误
                }
              },
              child: const Text("Tap to error"),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter可视化控制台插件visual_console的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter可视化控制台插件visual_console的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


visual_console 是一个用于 Flutter 的可视化控制台插件,它允许开发者在应用中嵌入一个控制台,用于调试、日志记录和实时监控。以下是如何使用 visual_console 插件的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 visual_console 依赖:

dependencies:
  flutter:
    sdk: flutter
  visual_console: ^1.0.0  # 请使用最新的版本

然后运行 flutter pub get 来安装依赖。

2. 导入库

在需要使用 visual_console 的 Dart 文件中导入库:

import 'package:visual_console/visual_console.dart';

3. 使用 VisualConsole 小部件

VisualConsole 是一个小部件,你可以将它嵌入到你的应用中的任何位置。例如:

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Visual Console Example'),
        ),
        body: Column(
          children: [
            Expanded(
              child: VisualConsole(),  // 嵌入 VisualConsole
            ),
            ElevatedButton(
              onPressed: () {
                // 发送日志到控制台
                VisualConsole.of(context).log('Button Pressed!');
              },
              child: Text('Log Message'),
            ),
          ],
        ),
      ),
    );
  }
}

4. 发送日志消息

你可以通过 VisualConsole.of(context).log() 方法发送日志消息到控制台。例如:

VisualConsole.of(context).log('This is a log message');

5. 高级功能

visual_console 还支持其他高级功能,如:

  • 颜色区分日志级别:你可以使用不同的颜色来表示不同的日志级别。
  • 清除控制台:你可以通过 VisualConsole.of(context).clear() 方法清除控制台中的内容。
  • 自定义样式:你可以通过自定义 VisualConsole 的样式来适应你的应用主题。

示例代码

以下是一个完整的示例代码,展示了如何使用 visual_console

import 'package:flutter/material.dart';
import 'package:visual_console/visual_console.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Visual Console Example'),
        ),
        body: Column(
          children: [
            Expanded(
              child: VisualConsole(),  // 嵌入 VisualConsole
            ),
            ElevatedButton(
              onPressed: () {
                // 发送日志到控制台
                VisualConsole.of(context).log('Button Pressed!');
              },
              child: Text('Log Message'),
            ),
            ElevatedButton(
              onPressed: () {
                // 清除控制台
                VisualConsole.of(context).clear();
              },
              child: Text('Clear Console'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部