You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中含大量单双引号的长字符串赋值报错的解决办法

Flutter 存储含大量单双引号长文本的解决方案

下面是几种不用删除引号就能解决报错的实用方法:

1. 使用三重引号定义多行字符串

Flutter 基于的 Dart 语言支持用三重单引号(''')或三重双引号(""")包裹多行文本,这种方式下,文本内的单双引号无需转义,哪怕存在未闭合的引号也不会破坏字符串结构,完美适配长文本场景。

示例代码:

String story = '''
从前,在乡间连绵起伏的山丘中坐落着一个小村庄,村里住着一个名叫杰克的小男孩。杰克好奇心强又爱冒险,喜欢探索村庄周围的田野和森林。
有一天,他在树林里散步时,来到了一片开满野花的美丽空地。空地中央矗立着一棵高大古老的橡树。杰克走近树时,发现树干上有一扇小门。
杰克很好奇,推开门往里看。令他惊讶的是,里面是一个小巧舒适的房间,摆满了各种珍宝:闪亮的宝石、金币和晶莹的水晶。杰克简直不敢相信自己的眼睛!
当他伸手去触摸那些闪闪发光的宝石时,身后传来一个柔和的声音:“你是谁?在我的树里做什么?”
杰克吓了一跳,转过身来,看到一个有着闪亮翅膀和灿烂笑容的小仙子。“对不起,”杰克低下头说,“我不是故意闯入的。我只是在探险,看到这扇门就忍不住进来了。”
仙子笑了笑,飞到杰克身边。“不用道歉,亲爱的孩子,”她说,“我很高兴你找到了我的树。人类很少能偶然发现我的家。我叫卢娜,是这片森林的守护者。”
杰克惊讶地睁大了眼睛。“守护仙子!我以前从来没见过。你能像故事里那样满足我的愿望吗?”
卢娜笑着摇了摇头。“恐怕不行,亲爱的杰克。不过如果你愿意,我可以送你一份礼物。从我的宝藏库里选一样东西,带着它去探险吧。”
杰克想了一会儿,然后拿起一块小巧的闪亮水晶。“请给我这个,”他举起来给卢娜看。
“啊,明智的选择,”卢娜笑着说,“这块水晶会给你带来好运,保护你旅途平安。”
杰克怀着感激的心感谢了卢娜,并承诺会好好保管这块水晶。当他离开树,穿过树林返回村庄时,他感觉到魔法和奇迹围绕着自己,因为他知道自己在森林的魔法守护者那里交到了一个新朋友。
''';

2. 转义文本中的引号

如果坚持使用普通字符串,可以对文本内的引号手动转义:用\"转义双引号,用\'转义单引号。这种方法需要逐个处理引号,长文本操作繁琐,但仍是可行方案。

示例代码(截取片段):

String story = "从前,在乡间连绵起伏的山丘中坐落着一个小村庄,村里住着一个名叫杰克的小男孩。杰克好奇心强又爱冒险,喜欢探索村庄周围的田野和森林。\n有一天,他在树林里散步时,来到了一片开满野花的美丽空地。空地中央矗立着一棵高大古老的橡树。杰克走近树时,发现树干上有一扇小门。\n杰克很好奇,推开门往里看。令他惊讶的是,里面是一个小巧舒适的房间,摆满了各种珍宝:闪亮的宝石、金币和晶莹的水晶。杰克简直不敢相信自己的眼睛!\n当他伸手去触摸那些闪闪发光的宝石时,身后传来一个柔和的声音:\"你是谁?在我的树里做什么?\"";

3. 从本地资源文件读取文本

如果文本特别长或需要频繁修改,建议把文本保存为本地.txt文件,通过Flutter的资源加载机制读取,彻底规避引号处理问题。

步骤如下:

  1. 在项目根目录创建assets文件夹,将翻译后的文本保存为story.txt放入其中。
  2. 在pubspec.yaml中配置资源:
flutter:
  assets:
    - assets/story.txt
  1. 用rootBundle读取文本:
import 'package:flutter/services.dart';

Future<String> loadStory() async {
  return await rootBundle.loadString('assets/story.txt');
}

// 使用示例
String story = await loadStory();

内容的提问来源于stack exchange,提问作者ItsSaed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 13:35:21