From d0fcc067cab7452160855114dd3d3f63904461e9 Mon Sep 17 00:00:00 2001 From: songchunyi <2402265378@qq.com> Date: Tue, 25 Aug 2026 03:42:42 +0000 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=20fix=5Fdup.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fix_dup.py | 61 ------------------------------------------------------ 1 file changed, 61 deletions(-) delete mode 100644 fix_dup.py diff --git a/fix_dup.py b/fix_dup.py deleted file mode 100644 index 6944539c..00000000 --- a/fix_dup.py +++ /dev/null @@ -1,61 +0,0 @@ -import re - -filepath = r'C:\Users\jsmbz\Documents\flutter-app-02\lib\features\home\presentation\widgets\map\testmap_pages.dart' - -with open(filepath, 'r', encoding='utf-8') as f: - content = f.read() - -# Pattern: find the second duplicate method (with debugPrint in catch) -# It starts with "/// 从 state.pathData 实时解析" and ends with "}\n\n Widget _buildWorkPanel" -pattern1 = r'\n /// 从 state\.pathData 实时解析 startWorkList\n /// 解决 BlocBuilder 因 state\.pathData 变化触发重建时,onTap 的异步赋值还未完成的时序问题\n List _parseStartWorkListFromPathData\(List>\? pathData\) \{\n if \(pathData == null \|\| pathData\.isEmpty\) return \[\];\n final firstRecord = pathData\.first;\n final nestedJsonRaw = firstRecord\['jsonData'\];\n if \(nestedJsonRaw is! String\) return \[\];\n try \{\n final parsedJson = jsonDecode\(nestedJsonRaw\);\n if \(parsedJson is! Map\) return \[\];\n final planModel = parsedJson\['planModel'\];\n final isBow = planModel == WorkMode\.bow\.value;\n\n List pathList = \[\];\n final rawPath = parsedJson\['path'\];\n if \(rawPath is String\) \{\n try \{ pathList = jsonDecode\(rawPath\) as List; \} catch \(_\) \{\}\n \} else if \(rawPath is List\) \{\n pathList = rawPath;\n \}\n\n List outerList = \[\];\n final rawOuter = parsedJson\['outer'\];\n if \(rawOuter is String\) \{\n try \{ outerList = jsonDecode\(rawOuter\) as List; \} catch \(_\) \{\}\n \} else if \(rawOuter is List\) \{\n outerList = rawOuter;\n \}\n\n if \(isBow\) \{\n return pathList\.isNotEmpty \? pathList : outerList;\n \} else \{\n return outerList\.isNotEmpty \? outerList : pathList;\n \}\n \} catch \(e\) \{\n debugPrint\('❌ \[_parseStartWorkListFromPathData\] 解析失败: \$e'\);\n return \[\];\n \}\n \}\n\n Widget _buildWorkPanel' - -# Try to find and replace the second duplicate method -match = re.search(pattern1, content) -if match: - print(f"Found duplicate method at position {match.start()}-{match.end()}") - content = content[:match.start()] + '\n Widget _buildWorkPanel' + content[match.end():] -else: - print("Pattern 1 not found, trying simpler approach...") - # Just find the second occurrence of _parseStartWorkListFromPathData - first_idx = content.find('_parseStartWorkListFromPathData') - second_idx = content.find('_parseStartWorkListFromPathData', first_idx + 1) - if second_idx != -1: - # Find the start of this method (go back to find " ///" or " List") - start = content.rfind(' /// 从 state.pathData', 0, second_idx) - if start == -1: - start = content.rfind(' List _parseStartWorkListFromPathData', 0, second_idx) - # Find the end of this method - end = content.find(' Widget _buildWorkPanel', second_idx) - if end == -1: - end = content.find('Widget _buildWorkPanel', second_idx) - if start != -1 and end != -1: - print(f"Found duplicate at {start}-{end}") - content = content[:start] + content[end:] - else: - print(f"Could not find boundaries: start={start}, end={end}") - else: - print("No duplicate method found") - -# Pattern 2: remove duplicate call in _buildWorkPanel -# Find the second "// 核心修复:" inside _buildWorkPanel builder -first_core = content.find('// 🔥 核心修复:从 state.pathData 实时计算 startWorkList') -second_core = content.find('// 核心修复:从 state.pathData 实时计算 startWorkList', first_core + 1) -if second_core != -1: - # Go back to find the blank line before this duplicate block - start_call = content.rfind('\n', 0, second_core) - start_call = content.rfind('\n', 0, start_call) # go back one more line - # Find the end after the duplicate block - # The block is: "// 核心修复...\n final parsedList...\n if...\n startWorkList...\n }\n" - end_call = content.find('\n return Positioned(', second_core) - if end_call != -1: - print(f"Found duplicate call at {start_call}-{end_call}") - content = content[:start_call] + content[end_call:] - else: - print(f"Could not find end of duplicate call") -else: - print("No duplicate call found") - -with open(filepath, 'w', encoding='utf-8') as f: - f.write(content) - -print("Done!")