Flutter包报告生成插件package_reports的使用
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;
动态报表的处理
对于动态报表,需要对每个文件中的查询进行一些处理。在这个类型的报表中,只需要处理selectedRow
和indexPage
。以下是一个示例文件,该文件可以多次使用,包含不同的查询。
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
更多关于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
文件。打开这个文件,你将看到一个详细的报告,包括项目中使用的依赖包及其许可证、版本等信息。
注意事项
- Dart SDK版本:确保你的Dart SDK版本与
package_reports
插件兼容。 - 权限问题:在某些系统上,运行脚本可能需要管理员权限。
- 依赖解析:在生成报告之前,确保所有的依赖都已正确解析。
通过上述步骤,你应该能够成功地在Flutter项目中使用package_reports
插件生成包报告。