Flutter文本高亮插件text_highlight_codespark的使用
Flutter文本高亮插件text_highlight_codespark的使用
HighlightText
是一个Flutter小部件,用于高亮显示给定文本中的特定部分。它支持大小写敏感搜索、多个查询和正则表达式匹配。
截图
功能特性
- 单个查询高亮:在源文本中高亮单个查询。
- 多个查询高亮:在源文本中高亮多个查询。
- 正则表达式高亮:根据正则表达式高亮匹配内容。
- 大小写敏感选项:启用或禁用大小写敏感搜索。
安装
在您的 pubspec.yaml
文件中添加以下依赖:
dependencies:
text_highlight_codespark: ^1.0.1
然后运行 flutter pub get
来安装该包。
使用示例
单个查询高亮
import 'package:flutter/material.dart';
import 'package:text_highlight_codespark/text_highlight_codespark.dart';
class ExampleSingleQuery extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: HighlightText(
query: 'highlight',
source: 'This is a highlight text example.',
highlightColor: Colors.yellow,
textStyle: TextStyle(fontSize: 20),
matchedTextStyle: TextStyle(color: Colors.black, fontWeight: FontWeight.bold),
caseSensitive: false,
),
),
);
}
}
多个查询高亮
import 'package:flutter/material.dart';
import 'package:text_highlight_codespark/text_highlight_codespark.dart';
class ExampleMultipleQueries extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: HighlightText.multiple(
queries: ['highlight', 'text'],
source: 'This is a highlight text example.',
highlightColor: Colors.green,
textStyle: TextStyle(fontSize: 20),
matchedTextStyle: TextStyle(color: Colors.white, fontWeight: FontWeight.bold),
caseSensitive: false,
),
),
);
}
}
正则表达式高亮
import 'package:flutter/material.dart';
import 'package:text_highlight_codespark/text_highlight_codespark.dart';
class ExampleRegex extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: HighlightText.regex(
regex: r'\b\w{7}\b', // 高亮所有7个字母的单词
source: 'This is an example with regex highlighting.',
highlightColor: Colors.blue,
textStyle: TextStyle(fontSize: 20),
matchedTextStyle: TextStyle(color: Colors.white, fontWeight: FontWeight.bold),
caseSensitive: false,
),
),
);
}
}
构造函数参数
HighlightText
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
query |
String |
必填 | 要高亮的查询字符串 |
source |
String |
必填 | 源文本 |
highlightColor |
Color |
Colors.red |
高亮颜色 |
textStyle |
TextStyle |
null |
非匹配文本的默认样式 |
matchedTextStyle |
TextStyle |
null |
匹配文本的样式 |
caseSensitive |
bool? |
false |
是否区分大小写 |
HighlightText.multiple
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
queries |
List<String> |
必填 | 要高亮的查询字符串列表 |
source |
String |
必填 | 源文本 |
highlightColor |
Color |
Colors.red |
高亮颜色 |
textStyle |
TextStyle |
null |
非匹配文本的默认样式 |
matchedTextStyle |
TextStyle |
null |
匹配文本的样式 |
caseSensitive |
bool? |
false |
是否区分大小写 |
HighlightText.regex
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
regex |
String |
必填 | 正则表达式 |
source |
String |
必填 | 源文本 |
highlightColor |
Color |
Colors.red |
高亮颜色 |
textStyle |
TextStyle |
null |
非匹配文本的默认样式 |
matchedTextStyle |
TextStyle |
null |
匹配文本的样式 |
caseSensitive |
bool? |
false |
是否区分大小写 |
示例应用
以下是一个完整的示例应用,展示了如何使用 HighlightText
小部件进行单个查询、多个查询和正则表达式高亮:
import 'package:flutter/material.dart';
import 'package:text_highlight_codespark/text_highlight_codespark.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('HighlightText Example'), // 应用栏标题
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Center(
child: HighlightText(
query: "example", // 单个查询高亮
source: 'This is an example of text highlighting.', // 源文本
caseSensitive: false, // 不区分大小写
highlightColor: Colors.yellow.shade700, // 高亮颜色
),
),
const SizedBox(height: 24), // 间隔
Center(
child: HighlightText.multiple(
queries: const [
'highlight',
'text',
'example',
'multiple'
], // 多个查询高亮
source: 'This is an example of highlighting multiple queries in the text.', // 源文本
caseSensitive: false, // 不区分大小写
highlightColor: Colors.yellow.shade700, // 高亮颜色
),
),
const SizedBox(height: 24), // 间隔
Center(
child: HighlightText.regex(
regex: r'\b\d{4}\b', // 高亮四位数字的正则表达式
source: 'The years 2023, 2024, and 2025 are important.', // 源文本
caseSensitive: false, // 不区分大小写
highlightColor: Colors.yellow.shade700, // 高亮颜色
),
),
],
),
),
),
);
}
}
通过以上代码,您可以创建一个包含三种不同高亮方式的应用程序,帮助您更好地理解和使用 text_highlight_codespark
插件。
更多关于Flutter文本高亮插件text_highlight_codespark的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter文本高亮插件text_highlight_codespark的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何使用Flutter文本高亮插件text_highlight_codespark
的代码案例。这个插件可以帮助你在Flutter应用中实现代码高亮显示。
首先,你需要在你的pubspec.yaml
文件中添加text_highlight_codespark
依赖:
dependencies:
flutter:
sdk: flutter
text_highlight_codespark: ^最新版本号 # 请替换为最新版本号
然后运行flutter pub get
来安装这个依赖。
接下来是一个简单的代码示例,展示如何使用text_highlight_codespark
插件来实现文本高亮:
import 'package:flutter/material.dart';
import 'package:text_highlight_codespark/text_highlight_codespark.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Text Highlight Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
final String codeSample = '''
// This is a simple Flutter example
void main() {
print('Hello, World!');
}
''';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Text Highlight Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: HighlightView(
code: codeSample,
language: Language.dart, // 指定代码语言
theme: CodeTheme.monokai, // 指定主题
padding: 16,
textStyle: TextStyle(fontSize: 16),
),
),
);
}
}
在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个HighlightView
小部件,用于显示和高亮显示Dart代码。
code
属性指定了要显示的代码内容。language
属性指定了代码的语言(在这个例子中是Dart)。theme
属性指定了代码高亮的主题(在这个例子中是Monokai主题)。padding
属性用于设置代码周围的填充。textStyle
属性用于设置代码的字体样式。
运行这个应用,你应该会看到一个带有高亮显示的代码片段。
注意:
Language
枚举类包含了多种编程语言,如Language.java
,Language.python
,Language.javascript
等,可以根据需要选择。CodeTheme
枚举类包含了多种主题,如CodeTheme.monokai
,CodeTheme.dracula
,CodeTheme.defaultTheme
等,可以根据需要选择。
这个插件提供了灵活的配置选项,可以满足不同的代码高亮需求。你可以参考插件的官方文档来获取更多详细信息。