Flutter文本高亮插件text_highlight_codespark的使用

发布于 1周前 作者 eggper 来自 Flutter

Flutter文本高亮插件text_highlight_codespark的使用

Banner

HighlightText 是一个Flutter小部件,用于高亮显示给定文本中的特定部分。它支持大小写敏感搜索、多个查询和正则表达式匹配。

截图

Single Query Highlighting Multiple Queries Highlighting Regex Highlighting

功能特性

  • 单个查询高亮:在源文本中高亮单个查询。
  • 多个查询高亮:在源文本中高亮多个查询。
  • 正则表达式高亮:根据正则表达式高亮匹配内容。
  • 大小写敏感选项:启用或禁用大小写敏感搜索。

安装

在您的 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

1 回复

更多关于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等,可以根据需要选择。

这个插件提供了灵活的配置选项,可以满足不同的代码高亮需求。你可以参考插件的官方文档来获取更多详细信息。

回到顶部