我正在尝试修改文本字段,以便可以为同一文本字段中的特定单词设置不同的颜色。例如,“我想要一个苹果”,单词“ apple”应为绿色,其余文本应为黑色。
有用于富文本编辑器的库(例如zefyr,extended_text_field),但我还找到了AnnotatedEditableText的示例。我喜欢上一个解决方案(AnnotatedEditableText),但我想使用TextField获得更丰富的功能,主要是无法在只读可编辑文本中使用的文本选择。
同样,当设置expands: true
为TextField的参数时,小部件可以正确展开以填充该区域。为EditableText设置相同的属性时,什么也不会发生。不知道为什么。
所以-
我想将TextField与AnnotatedEditableText小部件一起使用。我可以在不复制粘贴整个TextField类的情况下完成此操作吗?这是我收集的:
有任何想法吗?为什么_TextFieldState是私有的,但EditableTextState不是私有的?
使用以下控制器:
class FruitColorizer extends TextEditingController {
final Map<String, TextStyle> mapping;
final Pattern pattern;
FruitColorizer(this.mapping) : pattern = RegExp(mapping.keys.map((key) => RegExp.escape(key)).join('|'));
@override
TextSpan buildTextSpan({TextStyle style, bool withComposing}) {
List<InlineSpan> children = [];
// splitMapJoin is a bit tricky here but i found it very handy for populating children list
text.splitMapJoin(pattern,
onMatch: (Match match) {
children.add(TextSpan(text: match[0], style: style.merge(mapping[match[0]])));
},
onNonMatch: (String text) {
children.add(TextSpan(text: text, style: style));
},
);
return TextSpan(style: style, children: children);
}
}
用作:
TextField(
style: TextStyle(fontSize: 32),
controller: FruitColorizer({
'apple': TextStyle(color: Colors.green, decoration: TextDecoration.underline),
'orange': TextStyle(color: Colors.orange, shadows: kElevationToShadow[2]),
}),
),
并输入TextField
:“我吃了两个苹果,一个香蕉和三个橙子”
编辑
如果只想使用颜色,则可以添加命名构造函数:
FruitColorizer.fromColors(Map<String, Color> colorMap)
: this(colorMap.map((text, color) => MapEntry(text, TextStyle(color: color))));
并像这样使用它:
controller: FruitColorizer.fromColors({
'apple': Colors.green,
'orange': Colors.orange,
}),
这个问题已经被问了好几次了,但没有一个答案对我有效。我试图扩展Express请求对象,使其包含一个属性来存储用户对象。我创建了一个声明文件,
问题内容: 我不明白为什么Java注释中没有继承关系,就像Java类一样。我认为这将非常有用。 例如:我想知道给定的注释是否为验证者。通过继承,我可以自反地浏览超类,以了解此注释是否扩展了。否则,我该如何实现? 那么,谁能给我这个设计决定的理由? 问题答案: 关于未采用这种方式进行设计的原因,你可以在JSR 175设计常见问题解答中找到答案,其中说: 你为什么不支持注释子类型化(一种注释类型扩展了
问题内容: 我正在尝试编写一个简单的Array扩展,该扩展提供了“ distinct”方法。这是我到目前为止的内容: 问题是“包含”语句失败,如下所示: 找不到包含所提供参数的“包含”的重载 我很确定类型约束是正确的。有任何想法吗? 问题答案: 斯威夫特1.x 元素中的元素不必是,即它们不必与。 这意味着您不能为 所有 可能的数组编写该函数。而且Swift不允许您仅扩展Arrays的子集。 这意味
我正在从websphere 8.5迁移到Liberty 8.5。那么我可以用吗?. p12文件,它是我从appsvr01中的websphere安装位置获得的 < li >如果是,那么如何在server.xml(liberty)的标记中使用它 -如果没有,那么我们可以自由地使用IBMJSSE2标准生成自己的密钥库。请解释一下。
我是Arch Linux的用户,我的问题是无法安装扩展。我跟随微软的页面,上面说我应该点击ctrl-P,然后写,所以我这样做了。 单击“安装扩展”后,什么都没有发生,这就是为什么我多次尝试其他扩展都没有成功的原因。显示了“安装”栏,但当我点击它时,什么也没有发生。我的visual studio代码是通过aur visual studio代码aur页面安装的。 我不认为它与安装Visual Stud
这里有一个总节点noob。我一直在尝试设置示例节点应用程序,但每次尝试运行时都会出现以下错误: 节点应用程序
我试图使用graal nashorn interop来编写与Java交互的NodeJ。我从。但我不能延长课程。javascript代码是 我的错误是这似乎指向了我所引用的java代码以及javascript运行位置的类加载器问题(即两个不同的类加载器)。在使用graal/nodejs时,有没有办法做到这一点?
Szenario:我有两个扩展,它们用一些特定字段扩展了。在TYPO3 9之前,我必须使用以下打字脚本配置对新闻扩展的依赖关系进行配置: 模型扩展了基本扩展的模型: 在TYPO3 10中,在(中断:#87623): 只要您只有一个扩展新闻扩展名的扩展名,它就可以工作多久。如果您有第二个扩展并启用TYPO3缓存,您将得到一个错误,即在第一个扩展中添加的字段在新闻扩展的模板中不可用。奇怪的是,这个问题