import sys path = r'C:\Users\jsmbz\Documents\flutter-app-02\lib\features\home\presentation\widgets\map\testmap_pages.dart' with open(path, 'r', encoding='utf-8') as f: lines = f.readlines() # 删除重复的 failMsg 声明和重复的检查逻辑 (行2402-2411,0索引为2401-2410) # 但行号可能因之前的编辑有偏移,用内容查找 del_start = None del_end = None for i, line in enumerate(lines): if 'debugPrint' in line and '创建设备任务失败' in line and 'failure' in line: # 检查下一行是否是重复的 final failMsg if i+1 < len(lines) and 'final failMsg = failure.toString();' in lines[i+1]: # 找到了重复的起点 del_start = i # debugPrint 行 # 找到这个重复块的结束:下一个 return; 之后的 }, for j in range(i+2, len(lines)): if '// 其他失败' in lines[j] or (lines[j].strip() == 'return;' and 'taskCubit.clearCurrentTask();' in lines[j-1]): # 更精确:找到 " return;" 且前一行是 taskCubit.clearCurrentTask if lines[j].strip() == 'return;': del_end = j + 1 # 包含 return; 行 break if del_end is None: # 备选:找到下一个 ' },' (fold 成功回调的开始) for j in range(i+2, len(lines)): if lines[j].strip().startswith('},') and 'taskId' in lines[j+1]: del_end = j break break if del_start is not None and del_end is not None: print(f'Deleting lines {del_start+1} to {del_end}') for k in range(del_start, del_end): print(f' DEL: L{k+1}: {lines[k].rstrip()}') del lines[del_start:del_end] else: print('Could not find duplicate block, checking for alternate pattern...') # 备选:直接搜索两个 final failMsg 行 failmsg_lines = [] for i, line in enumerate(lines): if 'final failMsg = failure.toString();' in line: failmsg_lines.append(i) print(f'failMsg lines: {[l+1 for l in failmsg_lines]}') if len(failmsg_lines) >= 2: # 删除第二个 failMsg 及它所属的整个重复检查块 second = failmsg_lines[1] # 从第二个 failMsg 前一行 (debugPrint) 开始删 start = second - 1 # 找到这个 block 的结束 end = second + 8 # 大约8行后是这个重复块的结束 print(f'Alt: deleting lines {start+1} to {end}') for k in range(start, min(end, len(lines))): print(f' DEL: L{k+1}: {lines[k].rstrip()}') del lines[start:end] with open(path, 'w', encoding='utf-8', newline='') as f: f.writelines(lines) print('DONE')