Browse Source

格式优化

master
hejl 2 months ago
parent
commit
54ce6a9ea3
  1. 2
      win_text_editor/lib/main.dart
  2. 47
      win_text_editor/lib/modules/data_format/widgets/grid_view.dart
  3. 9
      win_text_editor/lib/modules/template_parser/widgets/grid_view.dart
  4. 4
      win_text_editor/lib/shared/components/file_explorer.dart
  5. 8
      win_text_editor/pubspec.lock
  6. 1
      win_text_editor/pubspec.yaml

2
win_text_editor/lib/main.dart

@ -12,7 +12,7 @@ void main() async { @@ -12,7 +12,7 @@ void main() async {
WindowOptions windowOptions = const WindowOptions(
size: Size(1200, 1000),
center: true,
title: '升级工具',
title: '文件操作工具箱',
);
windowManager.waitUntilReadyToShow(windowOptions, () async {
await windowManager.show();

47
win_text_editor/lib/modules/data_format/widgets/grid_view.dart

@ -103,17 +103,25 @@ class _DataGridViewState extends State<DataGridView> { @@ -103,17 +103,25 @@ class _DataGridViewState extends State<DataGridView> {
eol: '\n',
).convert(content, fieldDelimiter: _delimiter);
//
final cleanedData =
csvTable
.where(
(row) => row.isNotEmpty && row.any((cell) => cell.toString().trim().isNotEmpty),
)
.map((row) => row.map((cell) => cell.toString().trim()).toList())
.toList();
//
final cleanedData = csvTable
.where((row) => row.isNotEmpty && row.any((cell) => cell.toString().trim().isNotEmpty))
.toList(); // List
//
final dataWithIndex = cleanedData.asMap().entries.map((entry) {
final index = entry.key;
final row = entry.value;
// ()"序号"
if (index == 0) {
return ['序号', ...row.map((cell) => cell.toString().trim()).toList()];
}
// (1)
return [index, ...row.map((cell) => cell.toString().trim()).toList()];
}).toList();
setState(() {
_csvData = cleanedData;
_csvData = dataWithIndex;
});
}
} catch (e) {
@ -129,8 +137,20 @@ class _DataGridViewState extends State<DataGridView> { @@ -129,8 +137,20 @@ class _DataGridViewState extends State<DataGridView> {
final headers = _csvData.first;
final dataRows = _csvData.sublist(1);
final columns =
headers.map<GridColumn>((header) {
final columns = [
//
GridColumn(
columnName: '序号',
width: 60, //
label: Container(
padding: const EdgeInsets.all(8.0),
color: Colors.grey[200],
alignment: Alignment.center,
child: const Text('序号', overflow: TextOverflow.ellipsis, maxLines: 1),
),
),
//
...headers.sublist(1).map<GridColumn>((header) {
return GridColumn(
columnName: header.toString(),
width: 150, //
@ -141,7 +161,8 @@ class _DataGridViewState extends State<DataGridView> { @@ -141,7 +161,8 @@ class _DataGridViewState extends State<DataGridView> {
child: Text(header.toString(), overflow: TextOverflow.ellipsis, maxLines: 1),
),
);
}).toList();
}).toList(),
];
final dataSource = _CsvDataSource(headers: headers, rows: dataRows);
@ -150,7 +171,7 @@ class _DataGridViewState extends State<DataGridView> { @@ -150,7 +171,7 @@ class _DataGridViewState extends State<DataGridView> {
columns: columns,
gridLinesVisibility: GridLinesVisibility.both,
headerGridLinesVisibility: GridLinesVisibility.both,
columnWidthMode: ColumnWidthMode.fitByCellValue, // 使
columnWidthMode: ColumnWidthMode.fitByCellValue,
);
}
}

9
win_text_editor/lib/modules/template_parser/widgets/grid_view.dart

@ -65,16 +65,15 @@ class TemplateGridView extends StatelessWidget { @@ -65,16 +65,15 @@ class TemplateGridView extends StatelessWidget {
selectedNodes: selectedNodes,
);
//
String csvData = '序号\t';
csvData += selectedNodes
//
String csvData = selectedNodes
.map((node) => node.isAttribute ? node.name.substring(1) : node.name)
.join('\t');
csvData += '\n';
//
//
for (final row in dataSource.rows) {
csvData += '${row.getCells()[0].value}\t'; //
// 10
for (int i = 1; i < row.getCells().length; i++) {
csvData += row.getCells()[i].value.toString();
if (i < row.getCells().length - 1) csvData += '\t';

4
win_text_editor/lib/shared/components/file_explorer.dart

@ -34,8 +34,8 @@ class _FileExplorerState extends State<FileExplorer> { @@ -34,8 +34,8 @@ class _FileExplorerState extends State<FileExplorer> {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text('No directory selected'),
TextButton(onPressed: () => _promptForDirectory(context), child: const Text('Open Folder')),
const Text('没有文件可显示'),
TextButton(onPressed: () => _promptForDirectory(context), child: const Text('打开目录')),
],
);
}

8
win_text_editor/pubspec.lock

@ -89,6 +89,14 @@ packages: @@ -89,6 +89,14 @@ packages:
url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/"
source: hosted
version: "0.3.4+2"
csv:
dependency: "direct main"
description:
name: csv
sha256: c6aa2679b2a18cb57652920f674488d89712efaf4d3fdf2e537215b35fc19d6c
url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/"
source: hosted
version: "6.0.0"
expandable:
dependency: "direct main"
description:

1
win_text_editor/pubspec.yaml

@ -21,6 +21,7 @@ dependencies: @@ -21,6 +21,7 @@ dependencies:
syncfusion_flutter_datagrid: ^22.1.40
flutter_js: ^0.8.3
xml: ^6.5.0
csv: ^6.0.0
dev_dependencies:
flutter_test:

Loading…
Cancel
Save