import codecs path = r'C:\Users\jsmbz\Documents\flutter-app-02\lib\features\home\presentation\widgets\map\testmap_pages.dart' with codecs.open(path, 'r', 'utf-8') as f: content = f.read() old = ''' return PlotData( id: record['id']?.toString() ?? DateTime.now().microsecondsSinceEpoch.toString(), // \u552f\u4e00ID plotName: record['workName'] ?? '\u672a\u547d\u540d\u5730\u5757', // \u5730\u5757\u540d\u79f0\uff08\u4ece\u63a5\u53e3\u5b57\u6bb5\u53d6\uff09 imageUrl: record['imgUrl'] ?? '', // \u56fe\u7247URL\uff08\u4ece\u63a5\u53e3\u5b57\u6bb5\u53d6\uff0c\u65e0\u5219\u4e3a\u7a7a\uff09 jsonData: record['jsonData'], // \u539f\u59cb\u6570\u636e\u7684JSON\u5b57\u7b26\u4e32\uff08\u53ef\u9009\uff0c\u4fbf\u4e8e\u8c03\u8bd5\u6216\u540e\u7eed\u4f7f\u7528\uff09 );''' new = ''' // \u517c\u5bb9 jsonData \u4e3a Map \u6216 String\uff1a\u7edf\u4e00\u8f6c\u4e3a JSON \u5b57\u7b26\u4e32 String? jsonDataStr; final rawJsonData = record['jsonData']; if (rawJsonData is String) { jsonDataStr = rawJsonData; } else if (rawJsonData is Map) { jsonDataStr = jsonEncode(rawJsonData); } return PlotData( id: record['id']?.toString() ?? DateTime.now().microsecondsSinceEpoch.toString(), // \u552f\u4e00ID plotName: record['workName'] ?? '\u672a\u547d\u540d\u5730\u5757', // \u5730\u5757\u540d\u79f0\uff08\u4ece\u63a5\u53e3\u5b57\u6bb5\u53d6\uff09 imageUrl: record['imgUrl'] ?? '', // \u56fe\u7247URL\uff08\u4ece\u63a5\u53e3\u5b57\u6bb5\u53d6\uff0c\u65e0\u5219\u4e3a\u7a7a\uff09 jsonData: jsonDataStr, // \u539f\u59cb\u6570\u636e\u7684JSON\u5b57\u7b26\u4e32\uff08\u53ef\u9009\uff0c\u4fbf\u4e8e\u8c03\u8bd5\u6216\u540e\u7eed\u4f7f\u7528\uff09 );''' if old in content: content = content.replace(old, new) with codecs.open(path, 'w', 'utf-8') as f: f.write(content) print('SUCCESS: replaced') else: print('FAILED: old text not found') lines = content.split('\n') for i, line in enumerate(lines[3198:3208], start=3199): print(f'{i}: {repr(line)}')