Flutter包报告生成插件package_reports的使用

发布于 1周前 作者 itying888 来自 Flutter

Flutter包报告生成插件package_reports的使用

本指南将详细介绍如何使用package_reports插件来生成动态报表。package_reports插件允许你从JSON输入自动生成报表,并支持总和统计、动态报表、图表(如条形图、饼图等)以及导出到Excel等功能。

开始使用

首先,你需要在你的项目中添加package_reports依赖。

pubspec.yaml 文件中添加依赖

dependencies:
  package_reports: ^0.0.3

然后运行以下命令获取依赖:

flutter pub get

示例:创建报表的头部

为了创建报表,我们需要一个包含必要数据的变量。这些数据将用于构建报表页面。以下是创建报表头部的示例代码。

创建报表头部变量

$config = [
    'menu' => $menu,
    'submenu' => $submenu,
    'urlapi' => $urlapi . $nomeDoArquivo,
    'name' => $name,
    'iconFlutterID' => 'trending_up', // -> https://fonts.google.com/icons?selected=Material+Icons&icon.platform=flutter
    'graficosDisponiveis' => [
        'barras',
        'linhas',
        'circular',
    ],
    'indexPage' => 0,
    'filtros' => [
        "cardPeriodo" => [
            "tipo" => "datapicker",
            "titulo" => "选择时间段"
        ],
        "cardFilial" => [
            "banco" => "atacado_analytics",
            "arquivoquery" => "query_filtros.php",
            "funcao" => "getfilial",
            "tipo" => "checkbox",
            "titulo" => "选择分店",
            "subtitulo" => "仅显示在Winthor 131流程中具有权限的分店"
        ],
    ],

    'page' => [
        'urlapi' => 'repositorio/reports/query/compras/sql1.php',
        'name' => '销售总结(按RCA)',
        'indexPage' => 1,
        'selectedRow' => [],
        'filtros' => [
            "cardPeriodo" => [
                "tipo" => "datapicker",
                "titulo" => "选择时间段"
            ],
            "cardFilial" => [
                "banco" => "atacado_analytics",
                "arquivoquery" => "query_filtros.php",
                "funcao" => "getfilial",
                "tipo" => "checkbox",
                "titulo" => "选择分店",
                "subtitulo" => "仅显示在Winthor 131流程中具有权限的分店"
            ],
        ],

        'page' => [
            'urlapi' => 'repositorio/reports/query/compras/sql1.php',
            'name' => '测试第二页导航',
            'indexPage' => 2,
            'selectedRow' => [],
        ]
    ]
];

获取报表头部变量的值

如果上述变量已正确设置,可以通过以下方式获取其值:

if ($_SERVER['REQUEST_METHOD'] === 'GET') {
    echo json_encode($config);
    exit;
}

接收查询结果

要接收查询结果,可以发送一个包含JSON格式数据的POST请求。以下是一个简单的返回报表的例子:

$sql = "SELECT 1 + 1 SOMA FROM DUAL";
$result = $classe->select($sql);
echo json_encode($result);
exit;

动态报表的处理

对于动态报表,需要对每个文件中的查询进行一些处理。在这个类型的报表中,只需要处理selectedRowindexPage。以下是一个示例文件,该文件可以多次使用,包含不同的查询。

else {
    include_once "data_input_and_jwt_validation.php";
    $obj = get_data_input_and_jwt_validation();

    include_once "bd_instancia.php";

    switch ($obj->indexPage) {
        case 0:
            include_once "query_teste_api.php";
            $db = instancia_DB($obj->database);
            $result = $db->select($sql);
            break;

        case 1:
            include_once "sql1.php";
            $db = instancia_DB($obj->database);
            $result = $db->select($sql);
            break;
    }

    http_response_code(200);
    echo json_encode($result);
    exit;
}

查询输出的JSON

查询输出的JSON格式如下:

[
  {"COD__INT__NO_METRICS":"4321","NOME":"ADIL MENESES DOS SANTOS","QTDE_PEDIDOS__INT":"1","TOTAL":"487.37"},
  {"COD__INT__NO_METRICS":"2940","NOME":"ADMILTON MOREIRA SOUZA","QTDE_PEDIDOS__INT":"3","TOTAL":"1486.18"},
  {"COD__INT__NO_METRICS":"4318","NOME":"LUIZ FERRAZ DOS SANTOS","QTDE_PEDIDOS__INT":"1","TOTAL":"940.4"},
  {"COD__INT__NO_METRICS":"4307","NOME":"AGATINE OFLIA DE OLIVEIRA","QTDE_PEDIDOS__INT":"1","TOTAL":"1826.08"},
  {"COD__INT__NO_METRICS":"2","NOME":"FERREIRA DE OLIVEIRA","QTDE_PEDIDOS__INT":"3","TOTAL":"2802.86"}
]

报表输出格式

过滤页面

报表输出

报表输出 - 图表

报表输出 - 导出为Excel

package_reports的结构

lib-|
    |-- package_reports.dart 
    |       - 包含所有允许使用的导出,以便在消费该包的项目中使用。
    |
    |-- report_module
    |   |
    |   |-- charts
    |   |   |-- chart_data.dart
    |   |   |       - ChartData (所有图表将使用的默认数据类)
    |   |   |       - ColorData (包含所有颜色以供随机使用的图表类)
    |   |   '-- charts.dart
    |   |           - 图表小部件
    |   |
    |   |-- controller
    |   |   |-- layout_controller.dart
    |   |   |       - 控制屏幕宽度、高度及类型(移动设备或桌面)
    |   |   |-- report_chart_controller.dart
    |   |   |       - 控制器用于构建报表的图表,字符串值将被识别为指标,而整数和双精度值将被定义为图表值
    |   |   |-- report_from_json_controller.dart
    |   |   |       - 主控制器,将接收输入的JSON并构建报表。JSON中的所有键将被解释为列名,相应的值将作为数据行。
    |   |   '-- report_to_xlsx_controller.dart
    |   |   |       - 控制器用于将数据导出到Excel
    |   |   '-- filtros_controller.dart
    |   |           - 控制器用于过滤器
    |   |
    |   |-- core
    |   |   |-- api_consumer.dart
    |   |   |       - 负责从API获取数据的文件,这些数据将以JSON格式用于构建报表
    |   |   |-- features.dart
    |   |   |       - 包内私有功能(格式化函数等)
    |   |   '-- settings.dart
    |   |           - 静态全局变量,例如API链接等
    |   |
    |   |-- model
    |   |   '-- my_icon_data.dart (442 KB)
    |   |
    |   |-- page
    |   |   |-- filtros_report_page.dart
    |   |   |       - 过滤器页面
    |   |   |-- report_chart_page.dart
    |   |   |       - 图表页面
    |   |   |-- report_page.dart
    |   |   |       - 报表页面
    |   |   '-- filtros_page.dart
    |   |           - 将旧系统Analytics的过滤器转换为当前版本的类
    |   |
    |   '-- widget
    |       |-- texto.dart
    |       |-- widgets.dart
    |       '-- xlsx_widget.dart
    |
    '-- version.dart
           - 包的版本号

更多关于Flutter包报告生成插件package_reports的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter包报告生成插件package_reports的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用package_reports插件来生成包报告的详细步骤和相关代码示例。package_reports插件通常用于生成有关项目中使用的依赖包及其许可证、版本等信息的报告。

步骤一:添加依赖

首先,你需要在pubspec.yaml文件中添加package_reports依赖:

dependencies:
  flutter:
    sdk: flutter
  package_reports: ^x.y.z  # 替换为最新版本号

然后运行flutter pub get来获取依赖。

步骤二:运行报告生成脚本

package_reports插件提供了一个命令行工具来生成报告。你可以创建一个简单的脚本来运行这个工具。

1. 创建脚本文件

在项目的根目录下创建一个名为generate_reports.sh(对于Linux/macOS)或generate_reports.bat(对于Windows)的脚本文件。

2. 编写脚本内容

Linux/macOS (generate_reports.sh)
#!/bin/bash
# 确保你在项目的根目录下运行此脚本

# 激活Flutter环境(如果需要)
# source $FLUTTER_HOME/bin/cache/dart-sdk/bin/dart-env.sh

# 运行package_reports
dart pub global activate package_reports
dart pub global run package_reports:report --output=reports/package_report.html
Windows (generate_reports.bat)
@echo off
REM 确保你在项目的根目录下运行此脚本

REM 激活Flutter环境(如果需要)
REM call "%FLUTTER_HOME%\bin\cache\dart-sdk\bin\dart-env.bat"

REM 运行package_reports
dart pub global activate package_reports
dart pub global run package_reports:report --output=reports\package_report.html

步骤三:运行脚本

根据你的操作系统,运行相应的脚本文件:

  • Linux/macOS:

    chmod +x generate_reports.sh
    ./generate_reports.sh
    
  • Windows: 双击generate_reports.bat或在命令提示符中运行:

    generate_reports.bat
    

步骤四:查看报告

脚本运行成功后,你将在项目根目录下的reports文件夹中找到生成的package_report.html文件。打开这个文件,你将看到一个详细的报告,包括项目中使用的依赖包及其许可证、版本等信息。

注意事项

  1. Dart SDK版本:确保你的Dart SDK版本与package_reports插件兼容。
  2. 权限问题:在某些系统上,运行脚本可能需要管理员权限。
  3. 依赖解析:在生成报告之前,确保所有的依赖都已正确解析。

通过上述步骤,你应该能够成功地在Flutter项目中使用package_reports插件生成包报告。

回到顶部