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 {
WindowOptions windowOptions = const WindowOptions( WindowOptions windowOptions = const WindowOptions(
size: Size(1200, 1000), size: Size(1200, 1000),
center: true, center: true,
title: '升级工具', title: '文件操作工具箱',
); );
windowManager.waitUntilReadyToShow(windowOptions, () async { windowManager.waitUntilReadyToShow(windowOptions, () async {
await windowManager.show(); await windowManager.show();

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

@ -103,17 +103,25 @@ class _DataGridViewState extends State<DataGridView> {
eol: '\n', eol: '\n',
).convert(content, fieldDelimiter: _delimiter); ).convert(content, fieldDelimiter: _delimiter);
// //
final cleanedData = final cleanedData = csvTable
csvTable .where((row) => row.isNotEmpty && row.any((cell) => cell.toString().trim().isNotEmpty))
.where( .toList(); // List
(row) => row.isNotEmpty && row.any((cell) => cell.toString().trim().isNotEmpty),
) //
.map((row) => row.map((cell) => cell.toString().trim()).toList()) final dataWithIndex = cleanedData.asMap().entries.map((entry) {
.toList(); 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(() { setState(() {
_csvData = cleanedData; _csvData = dataWithIndex;
}); });
} }
} catch (e) { } catch (e) {
@ -129,8 +137,20 @@ class _DataGridViewState extends State<DataGridView> {
final headers = _csvData.first; final headers = _csvData.first;
final dataRows = _csvData.sublist(1); final dataRows = _csvData.sublist(1);
final columns = final columns = [
headers.map<GridColumn>((header) { //
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( return GridColumn(
columnName: header.toString(), columnName: header.toString(),
width: 150, // width: 150, //
@ -141,7 +161,8 @@ class _DataGridViewState extends State<DataGridView> {
child: Text(header.toString(), overflow: TextOverflow.ellipsis, maxLines: 1), child: Text(header.toString(), overflow: TextOverflow.ellipsis, maxLines: 1),
), ),
); );
}).toList(); }).toList(),
];
final dataSource = _CsvDataSource(headers: headers, rows: dataRows); final dataSource = _CsvDataSource(headers: headers, rows: dataRows);
@ -150,7 +171,7 @@ class _DataGridViewState extends State<DataGridView> {
columns: columns, columns: columns,
gridLinesVisibility: GridLinesVisibility.both, gridLinesVisibility: GridLinesVisibility.both,
headerGridLinesVisibility: 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 {
selectedNodes: selectedNodes, selectedNodes: selectedNodes,
); );
// //
String csvData = '序号\t'; String csvData = selectedNodes
csvData += selectedNodes
.map((node) => node.isAttribute ? node.name.substring(1) : node.name) .map((node) => node.isAttribute ? node.name.substring(1) : node.name)
.join('\t'); .join('\t');
csvData += '\n'; csvData += '\n';
// //
for (final row in dataSource.rows) { for (final row in dataSource.rows) {
csvData += '${row.getCells()[0].value}\t'; // // 10
for (int i = 1; i < row.getCells().length; i++) { for (int i = 1; i < row.getCells().length; i++) {
csvData += row.getCells()[i].value.toString(); csvData += row.getCells()[i].value.toString();
if (i < row.getCells().length - 1) csvData += '\t'; 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> {
return Column( return Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
const Text('No directory selected'), const Text('没有文件可显示'),
TextButton(onPressed: () => _promptForDirectory(context), child: const Text('Open Folder')), TextButton(onPressed: () => _promptForDirectory(context), child: const Text('打开目录')),
], ],
); );
} }

8
win_text_editor/pubspec.lock

@ -89,6 +89,14 @@ packages:
url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/"
source: hosted source: hosted
version: "0.3.4+2" 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: expandable:
dependency: "direct main" dependency: "direct main"
description: description:

1
win_text_editor/pubspec.yaml

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

Loading…
Cancel
Save