diff --git a/lib/services/chat_sse_service.dart b/lib/services/chat_sse_service.dart index c95680b..493779f 100644 --- a/lib/services/chat_sse_service.dart +++ b/lib/services/chat_sse_service.dart @@ -59,8 +59,7 @@ class ChatSseService { txt = txt.substring(0, imgStart) + txt.substring(imgEnd + 1); imgStart = txt.indexOf('!['); } - // 彻底移除 markdown 有序/无序列表序号(如 1.、2.、-、*、+) - txt = txt.replaceAll(RegExp(r'(^|\n)[ \t]*[0-9]+\.[ \t]*'), '\n'); + txt = txt.replaceAll(RegExp(r'(^|\n)[ \t]*[-\*\+][ \t]+'), '\n'); // 分句符 RegExp enders = isChinese ? zhEnders : enEnders; @@ -77,8 +76,14 @@ class ChatSseService { } // 只在达到完整句子时调用 TtsUtil.send for (final s in sentences) { - String ttsStr=CommonUtil.cleanText(s, true); - // print("发送数据到TTS: $ttsStr"); + String ttsStr=CommonUtil.cleanText(s, true)+"\n"; + + ttsStr = ttsStr.replaceAllMapped( + RegExp(r'(? ' ${m.group(1)} ', + ); + + print("发送数据到TTS: $ttsStr"); TtsUtil.send(ttsStr); } // 缓存剩余不完整部分 diff --git a/pubspec.lock b/pubspec.lock index 319d4ff..d4b7749 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -6,7 +6,7 @@ packages: description: name: args sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "2.7.0" async: @@ -14,7 +14,7 @@ packages: description: name: async sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "2.13.0" audioplayers: @@ -22,7 +22,7 @@ packages: description: name: audioplayers sha256: c05c6147124cd63e725e861335a8b4d57300b80e6e92cea7c145c739223bbaef - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "5.2.1" audioplayers_android: @@ -30,7 +30,7 @@ packages: description: name: audioplayers_android sha256: b00e1a0e11365d88576320ec2d8c192bc21f1afb6c0e5995d1c57ae63156acb5 - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "4.0.3" audioplayers_darwin: @@ -38,7 +38,7 @@ packages: description: name: audioplayers_darwin sha256: "3034e99a6df8d101da0f5082dcca0a2a99db62ab1d4ddb3277bed3f6f81afe08" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "5.0.2" audioplayers_linux: @@ -46,7 +46,7 @@ packages: description: name: audioplayers_linux sha256: "60787e73fefc4d2e0b9c02c69885402177e818e4e27ef087074cf27c02246c9e" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "3.1.0" audioplayers_platform_interface: @@ -54,7 +54,7 @@ packages: description: name: audioplayers_platform_interface sha256: "365c547f1bb9e77d94dd1687903a668d8f7ac3409e48e6e6a3668a1ac2982adb" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "6.1.0" audioplayers_web: @@ -62,7 +62,7 @@ packages: description: name: audioplayers_web sha256: "22cd0173e54d92bd9b2c80b1204eb1eb159ece87475ab58c9788a70ec43c2a62" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "4.1.0" audioplayers_windows: @@ -70,63 +70,62 @@ packages: description: name: audioplayers_windows sha256: "9536812c9103563644ada2ef45ae523806b0745f7a78e89d1b5fb1951de90e1a" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "3.1.0" basic_intl: dependency: "direct main" description: - name: basic_intl - sha256: "15ba8447fb069bd80f0b0c74c71faf5dea45874e9566a68e4e30c897ab2b07c4" - url: "http://175.24.250.68:4000" - source: hosted + path: "third_party/basic_intl-0.2.0" + relative: true + source: path version: "0.2.0" characters: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" - url: "http://175.24.250.68:4000" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + url: "https://pub.flutter-io.cn" source: hosted - version: "1.3.0" + version: "1.4.0" clock: dependency: transitive description: name: clock sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.2" collection: dependency: transitive description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf - url: "http://175.24.250.68:4000" + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.19.0" + version: "1.19.1" crypto: dependency: transitive description: name: crypto sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.6" ffi: dependency: transitive description: name: ffi - sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" - url: "http://175.24.250.68:4000" + sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.3" + version: "2.1.4" file: dependency: transitive description: name: file sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "7.0.1" flutter: @@ -139,7 +138,7 @@ packages: description: name: flutter_lints sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "5.0.0" flutter_markdown: @@ -147,7 +146,7 @@ packages: description: name: flutter_markdown sha256: "08fb8315236099ff8e90cb87bb2b935e0a724a3af1623000a9cec930468e0f27" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "0.7.7+1" flutter_tts: @@ -155,7 +154,7 @@ packages: description: name: flutter_tts sha256: bdf2fc4483e74450dc9fc6fe6a9b6a5663e108d4d0dad3324a22c8e26bf48af4 - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "4.2.3" flutter_web_plugins: @@ -168,7 +167,7 @@ packages: description: name: fluttertoast sha256: "25e51620424d92d3db3832464774a6143b5053f15e382d8ffbfd40b6e795dcf1" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "8.2.12" http: @@ -176,7 +175,7 @@ packages: description: name: http sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "1.5.0" http_parser: @@ -184,7 +183,7 @@ packages: description: name: http_parser sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "4.1.2" js: @@ -192,7 +191,7 @@ packages: description: name: js sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "0.6.7" lints: @@ -200,7 +199,7 @@ packages: description: name: lints sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "5.1.1" markdown: @@ -208,7 +207,7 @@ packages: description: name: markdown sha256: "935e23e1ff3bc02d390bad4d4be001208ee92cc217cb5b5a6c19bc14aaa318c1" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "7.3.0" material_color_utilities: @@ -216,23 +215,23 @@ packages: description: name: material_color_utilities sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 - url: "http://175.24.250.68:4000" + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c + url: "https://pub.flutter-io.cn" source: hosted - version: "1.15.0" + version: "1.16.0" nested: dependency: transitive description: name: nested sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" path: @@ -240,7 +239,7 @@ packages: description: name: path sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "1.9.1" path_provider: @@ -248,7 +247,7 @@ packages: description: name: path_provider sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.5" path_provider_android: @@ -256,23 +255,23 @@ packages: description: name: path_provider_android sha256: d0d310befe2c8ab9e7f393288ccbb11b60c019c6b5afc21973eeee4dda2b35e9 - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.17" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942" - url: "http://175.24.250.68:4000" + sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.4.1" + version: "2.4.2" path_provider_linux: dependency: transitive description: name: path_provider_linux sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.1" path_provider_platform_interface: @@ -280,7 +279,7 @@ packages: description: name: path_provider_platform_interface sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.2" path_provider_windows: @@ -288,55 +287,63 @@ packages: description: name: path_provider_windows sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.0" permission_handler: dependency: "direct main" description: name: permission_handler - sha256: bc56bfe9d3f44c3c612d8d393bd9b174eb796d706759f9b495ac254e4294baa5 - url: "http://175.24.250.68:4000" + sha256: bc917da36261b00137bbc8896bf1482169cd76f866282368948f032c8c1caae1 + url: "https://pub.flutter-io.cn" source: hosted - version: "10.4.5" + version: "12.0.1" permission_handler_android: dependency: transitive description: name: permission_handler_android - sha256: "59c6322171c29df93a22d150ad95f3aa19ed86542eaec409ab2691b8f35f9a47" - url: "http://175.24.250.68:4000" + sha256: "1e3bc410ca1bf84662104b100eb126e066cb55791b7451307f9708d4007350e6" + url: "https://pub.flutter-io.cn" source: hosted - version: "10.3.6" + version: "13.0.1" permission_handler_apple: dependency: transitive description: name: permission_handler_apple - sha256: "99e220bce3f8877c78e4ace901082fb29fa1b4ebde529ad0932d8d664b34f3f5" - url: "http://175.24.250.68:4000" + sha256: f000131e755c54cf4d84a5d8bd6e4149e262cc31c5a8b1d698de1ac85fa41023 + url: "https://pub.flutter-io.cn" source: hosted - version: "9.1.4" + version: "9.4.7" + permission_handler_html: + dependency: transitive + description: + name: permission_handler_html + sha256: "38f000e83355abb3392140f6bc3030660cfaef189e1f87824facb76300b4ff24" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.1.3+5" permission_handler_platform_interface: dependency: transitive description: name: permission_handler_platform_interface - sha256: "6760eb5ef34589224771010805bea6054ad28453906936f843a8cc4d3a55c4a4" - url: "http://175.24.250.68:4000" + sha256: eb99b295153abce5d683cac8c02e22faab63e50679b937fa1bf67d58bb282878 + url: "https://pub.flutter-io.cn" source: hosted - version: "3.12.0" + version: "4.3.0" permission_handler_windows: dependency: transitive description: name: permission_handler_windows - sha256: cc074aace208760f1eee6aa4fae766b45d947df85bc831cde77009cdb4720098 - url: "http://175.24.250.68:4000" + sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.1.3" + version: "0.2.1" platform: dependency: transitive description: name: platform sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "3.1.6" plugin_platform_interface: @@ -344,7 +351,7 @@ packages: description: name: plugin_platform_interface sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.8" provider: @@ -352,71 +359,71 @@ packages: description: name: provider sha256: "4abbd070a04e9ddc287673bf5a030c7ca8b685ff70218720abab8b092f53dd84" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "6.1.5" record: dependency: "direct main" description: name: record - sha256: daeb3f9b3fea9797094433fe6e49a879d8e4ca4207740bc6dc7e4a58764f0817 - url: "http://175.24.250.68:4000" + sha256: "3d08502b77edf2a864aa6e4cd7874b983d42a80f3689431da053cc5e85c1ad21" + url: "https://pub.flutter-io.cn" source: hosted - version: "6.0.0" + version: "6.1.0" record_android: dependency: transitive description: name: record_android - sha256: "97d7122455f30de89a01c6c244c839085be6b12abca251fc0e78f67fed73628b" - url: "http://175.24.250.68:4000" + sha256: "8b170e33d9866f9b51e01a767d7e1ecb97b9ecd629950bd87a47c79359ec57f8" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.3.3" + version: "1.4.0" record_ios: dependency: transitive description: name: record_ios - sha256: "73706ebbece6150654c9d6f57897cf9b622c581148304132ba85dba15df0fdfb" - url: "http://175.24.250.68:4000" + sha256: ad97d0a75933c44bcf5aff648e86e32fc05eb61f8fbef190f14968c8eaf86692 + url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.0" + version: "1.1.0" record_linux: dependency: transitive description: name: record_linux - sha256: "0626678a092c75ce6af1e32fe7fd1dea709b92d308bc8e3b6d6348e2430beb95" - url: "http://175.24.250.68:4000" + sha256: "235b1f1fb84e810f8149cc0c2c731d7d697f8d1c333b32cb820c449bf7bb72d8" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.1" + version: "1.2.1" record_macos: dependency: transitive description: name: record_macos - sha256: "02240833fde16c33fcf2c589f3e08d4394b704761b4a3bb609d872ff3043fbbd" - url: "http://175.24.250.68:4000" + sha256: f1399bca76a1634da109e5b0cba764ed8332a2b4da49c704c66d2c553405ed81 + url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.0" + version: "1.1.0" record_platform_interface: dependency: transitive description: name: record_platform_interface - sha256: c1ad38f51e4af88a085b3e792a22c685cb3e7c23fc37aa7ce44c4cf18f25fe89 - url: "http://175.24.250.68:4000" + sha256: b0065fdf1ec28f5a634d676724d388a77e43ce7646fb049949f58c69f3fcb4ed + url: "https://pub.flutter-io.cn" source: hosted - version: "1.3.0" + version: "1.4.0" record_web: dependency: transitive description: name: record_web - sha256: a12856d0b3dd03d336b4b10d7520a8b3e21649a06a8f95815318feaa8f07adbb - url: "http://175.24.250.68:4000" + sha256: "4f0adf20c9ccafcc02d71111fd91fba1ca7b17a7453902593e5a9b25b74a5c56" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.9" + version: "1.2.0" record_windows: dependency: transitive description: name: record_windows sha256: "85a22fc97f6d73ecd67c8ba5f2f472b74ef1d906f795b7970f771a0914167e99" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.6" sky_engine: @@ -429,7 +436,7 @@ packages: description: name: source_span sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "1.10.1" string_scanner: @@ -437,23 +444,23 @@ packages: description: name: string_scanner sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.1" synchronized: dependency: transitive description: name: synchronized - sha256: "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225" - url: "http://175.24.250.68:4000" + sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0 + url: "https://pub.flutter-io.cn" source: hosted - version: "3.3.0+3" + version: "3.4.0" term_glyph: dependency: transitive description: name: term_glyph sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "1.2.2" typed_data: @@ -461,7 +468,7 @@ packages: description: name: typed_data sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.0" uuid: @@ -469,7 +476,7 @@ packages: description: name: uuid sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.7" vector_math: @@ -477,7 +484,7 @@ packages: description: name: vector_math sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.4" web: @@ -485,7 +492,7 @@ packages: description: name: web sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.1" xdg_directories: @@ -493,9 +500,9 @@ packages: description: name: xdg_directories sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" - url: "http://175.24.250.68:4000" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.0" sdks: - dart: ">=3.6.2 <4.0.0" - flutter: ">=3.27.0" + dart: ">=3.8.0 <4.0.0" + flutter: ">=3.29.0"