Flutter文本高亮插件text_word_highlighter的使用
Flutter文本高亮插件text_word_highlighter的使用
text_word_highlighter
提供了一个名为 TextWordHighlighter
的小部件,它可以帮助你在一段文字中高亮(使用文本样式属性)一个或多个单词。
特性
- 在句子中高亮多个单词。
- 为特定单词提供样式。
- 基于索引高亮单词。
- 基于单词高亮单词。
使用方法
获取示例文件夹 /example
。
基于索引高亮
// To highlight by index
// Use WordHighlight.byIndex constructor
TextWordHighlighter(
text: "Hey Flutter Developers. This is a word highlighter package.",
textStyle: const TextStyle(color: Colors.teal),
wordHighlightList: [
WordHighlight.byIndex(
wordIndex: 2,
wordStyle: const TextStyle(
color: Colors.red)
),
WordHighlight.byIndex(
wordIndex: 5,
wordStyle: const TextStyle(
color: Colors.green,
)),
WordHighlight.byIndex(
wordIndex: 6,
wordStyle: const TextStyle(
color: Colors.blue,
)),
WordHighlight.byIndex(
wordIndex: 8,
wordStyle: const TextStyle(
color: Colors.orange,
)),
],
),
基于单词高亮
// Highlight by word
// Use WordHighlight.byWord constructor
TextWordHighlighter(
text: "Hey Flutter Developers. This is a word highlighter package.",
textStyle: const TextStyle(color: Colors.teal),
wordHighlightList: [
WordHighlight.byWord(
word: "Flutter",
wordStyle: const TextStyle(
color: Colors.red,
)),
WordHighlight.byWord(
word: "THIS",
ignoreCase: true,
wordStyle: const TextStyle(
color: Colors.green,
)),
WordHighlight.byWord(
word: "WORD",
ignoreCase: false,
wordStyle: const TextStyle(
color: Colors.green,
)),
],
),
TextWordHighlighter 属性
属性 | 描述 |
---|---|
TextWordHighlighter | 一个小部件,它接受一个句子(字符串形式),并高亮其中的某些部分。 |
text | 简单的句子,以字符串形式表示。 |
textStyle | 文本的样式属性,应用于句子中的所有单词。 |
wordHighlightList | WordHighlight 列表(请参阅 WordHighlight 属性)。 |
WordHighlight 类
目前有以下两种方式可以高亮单词:
byIndex
通过索引高亮单词时,需要在 WordHighlight.byIndex
构造函数中提供两个参数:
wordIndex
: 单词的索引。wordStyle
: 单词的样式。
WordHighlight.byIndex(
wordIndex: 8, // 单词的索引
wordStyle: const TextStyle(
color: Colors.orange,
)),
byWord
通过单词高亮时,需要在 WordHighlight.byWord
构造函数中提供两个参数:
word
: 需要高亮的单词。wordStyle
: 单词的样式。ignoreCase
: [可选] 是否区分大小写,默认为false
。
WordHighlight.byWord(
word: "Flutter",
wordStyle: const TextStyle(
color: Colors.red,
)),
更多功能即将推出
- 按字符高亮
- 按范围高亮
完整示例代码
以下是完整的示例代码,展示了如何使用 TextWordHighlighter
来高亮单词。
import 'package:flutter/material.dart';
import 'package:text_word_highlighter/text_word_highlighter.dart';
import 'package:text_word_highlighter/utils/word_highlight.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Text Word Highlighter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: 'Text Word Highlighter Demo'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
[@override](/user/override)
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final title = 'Hey Flutter Developers. This is a word highlighter package.';
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
// When you have the index of the word in the line to be highlighted
// Use WordHighlight.byIndex constructor
TextWordHighlighter(
text: title,
textStyle: const TextStyle(color: Colors.teal),
wordHighlightList: [
WordHighlight.byIndex(
wordIndex: 2,
wordStyle: const TextStyle(
color: Colors.red,
)),
WordHighlight.byIndex(
wordIndex: 5,
wordStyle: const TextStyle(
color: Colors.green,
)),
WordHighlight.byIndex(
wordIndex: 6,
wordStyle: const TextStyle(
color: Colors.blue,
)),
WordHighlight.byIndex(
wordIndex: 8,
wordStyle: const TextStyle(
color: Colors.orange,
)),
],
),
// Highlight by word
// Use WordHighlight.byWord constructor
TextWordHighlighter(
text: title,
textStyle: const TextStyle(color: Colors.teal),
wordHighlightList: [
WordHighlight.byWord(
word: "Flutter",
wordStyle: const TextStyle(
color: Colors.red,
)),
WordHighlight.byWord(
word: "THIS",
ignoreCase: true,
wordStyle: const TextStyle(
color: Colors.green,
)),
WordHighlight.byWord(
word: "WORD",
ignoreCase: false,
wordStyle: const TextStyle(
color: Colors.green,
)),
],
),
],
),
),
);
}
}
更多关于Flutter文本高亮插件text_word_highlighter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter文本高亮插件text_word_highlighter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用text_word_highlighter
插件来实现文本高亮的代码示例。这个插件允许你指定一组关键词,并在文本中高亮显示这些关键词。
首先,你需要在你的pubspec.yaml
文件中添加text_word_highlighter
依赖:
dependencies:
flutter:
sdk: flutter
text_word_highlighter: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
接下来,你可以在你的Flutter应用中使用这个插件。下面是一个完整的示例,展示了如何使用text_word_highlighter
:
import 'package:flutter/material.dart';
import 'package:text_word_highlighter/text_word_highlighter.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Text Highlighter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: HighlightTextScreen(),
);
}
}
class HighlightTextScreen extends StatelessWidget {
final String text = "Flutter is an open-source UI software development kit created by Google.";
final List<String> keywords = ["Flutter", "open-source", "Google"];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Text Highlighter Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: HighlightText(
text: text,
keywords: keywords,
textStyle: TextStyle(color: Colors.black),
keywordStyle: TextStyle(backgroundColor: Colors.yellow, fontWeight: FontWeight.bold),
keywordBuilder: (String keyword) {
return TextSpan(
text: keyword,
style: TextStyle(backgroundColor: Colors.lightGreen, fontWeight: FontWeight.w600),
);
},
),
),
),
);
}
}
在这个示例中,我们定义了一个HighlightTextScreen
,其中包含一个需要高亮的文本text
和一个关键词列表keywords
。HighlightText
组件负责将文本和关键词传递给text_word_highlighter
插件,并应用不同的样式。
HighlightText
组件的参数说明:
text
: 需要高亮的原始文本。keywords
: 关键词列表,这些词将在文本中被高亮。textStyle
: 非关键词文本的样式。keywordStyle
: 关键词的默认样式。keywordBuilder
: 一个可选的回调函数,允许你为每个关键词定制样式。在这个示例中,我们为每个关键词应用了一个不同的背景颜色和字体粗细。
运行这个示例应用,你将看到一个包含高亮关键词的文本。你可以根据需要调整样式和关键词列表来适应你的应用需求。