Flutter文字搜索插件word_search的使用

简介

word_search是一个基于 Dart 构建的文字搜索拼图生成器。它可以帮助开发者快速创建和解决文字搜索游戏。

Coverage

Word Search

示例用法

以下是一个完整的示例,展示如何使用 word_search插件来创建和解决文字搜索拼图。

示例代码

import 'package:word_search/word_search.dart';

/**
 * 主文件,用于测试 word_search 库
 */
void main() {
  print('Word Search Library!');

  // 创建一个单词列表,用于生成拼图
  final List<String> wordList = ['hello', 'world', 'foo', 'bar', 'baz', 'dart'];

  // 配置拼图设置对象
  final WSSettings settings = WSSettings(
    width: 10,  // 拼图宽度
    height: 10, // 拼图高度
    orientations: List.from([
      WSOrientation.horizontal, // 水平方向
      WSOrientation.vertical,   // 垂直方向
      WSOrientation.diagonal,   // 对角线方向
    ]),
  );

  // 创建 WordSearch 实例
  final WordSearch wordSearch = WordSearch();

  // 创建新的拼图
  final WSNewPuzzle newPuzzle = wordSearch.newPuzzle(wordList, settings);

  // 检查是否在生成拼图时出现错误
  if (newPuzzle.errors.isEmpty) {
    // 打印拼图输出
    print('Puzzle 2D List');
    print(newPuzzle.toString());

    // 解决拼图并查找指定的单词
    final WSSolved solved = wordSearch.solvePuzzle(newPuzzle.puzzle, ['dart', 'word']);

    // 打印找到的单词信息
    print('Found Words!');
    solved.found.forEach((element) {
      print('word: ${element.word}, orientation: ${element.orientation}');
      print('x:${element.x}, y:${element.y}');
    });

    // 打印未找到的单词
    print('Not found Words!');
    solved.notFound.forEach((element) {
      print('word: ${element}');
    });
  } else {
    // 如果有错误,通知用户
    newPuzzle.errors.forEach((error) {
      print(error);
    });
  }
}

示例输出

运行上述代码后,您将看到类似以下的输出:

Word Search 输出

测试

该库使用了 test_coverage 测试库进行单元测试。

运行测试

pub run test_coverage

查看覆盖率报告

genhtml -o coverage coverage/lcov.info

注意: 如果您的命令行中没有安装 genhtml,可以使用以下命令安装:

brew install lcov

更多关于Flutter文字搜索插件word_search的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter文字搜索插件word_search的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


word_search 是一个用于在 Flutter 应用中实现文字搜索功能的插件。它可以帮助你在一个字符串或字符串列表中查找特定的关键词,并返回匹配的结果。以下是如何在 Flutter 项目中使用 word_search 插件的基本步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 word_search 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  word_search: ^0.1.0  # 请检查最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入插件

在你的 Dart 文件中导入 word_search 插件。

import 'package:word_search/word_search.dart';

3. 创建 WordSearch 实例

你可以通过创建一个 WordSearch 实例来使用插件的功能。

final wordSearch = WordSearch();

4. 搜索关键词

你可以使用 search 方法来搜索关键词。search 方法接受一个字符串列表(即你要搜索的文本)和一个关键词列表。

void main() {
  final wordSearch = WordSearch();

  final puzzle = [
    'HELLO',
    'WORLD',
    'FLUTTER',
    'DART',
    'SEARCH',
  ];

  final words = ['HELLO', 'WORLD', 'FLUTTER'];

  final result = wordSearch.search(puzzle, words);

  print(result);
}

5. 处理搜索结果

search 方法返回一个 WordSearchResult 对象,其中包含匹配的结果。你可以通过 found 属性来获取找到的单词及其位置。

void main() {
  final wordSearch = WordSearch();

  final puzzle = [
    'HELLO',
    'WORLD',
    'FLUTTER',
    'DART',
    'SEARCH',
  ];

  final words = ['HELLO', 'WORLD', 'FLUTTER'];

  final result = wordSearch.search(puzzle, words);

  if (result.found.isNotEmpty) {
    for (var word in result.found) {
      print('Found word: ${word.word} at ${word.start} to ${word.end}');
    }
  } else {
    print('No words found');
  }
}

6. 自定义搜索选项

WordSearch 还提供了一些可选的配置项,比如是否区分大小写、是否允许反向搜索等。

final wordSearch = WordSearch(
  caseSensitive: false,  // 不区分大小写
  reverse: true,         // 允许反向搜索
);

7. 处理未找到的单词

如果有些单词没有找到,你可以通过 notFound 属性来获取这些单词。

if (result.notFound.isNotEmpty) {
  print('Words not found: ${result.notFound}');
}

8. 完整示例

以下是一个完整的示例,展示了如何使用 word_search 插件进行文字搜索。

import 'package:word_search/word_search.dart';

void main() {
  final wordSearch = WordSearch(
    caseSensitive: false,
    reverse: true,
  );

  final puzzle = [
    'HELLO',
    'WORLD',
    'FLUTTER',
    'DART',
    'SEARCH',
  ];

  final words = ['HELLO', 'WORLD', 'FLUTTER', 'NOTFOUND'];

  final result = wordSearch.search(puzzle, words);

  if (result.found.isNotEmpty) {
    for (var word in result.found) {
      print('Found word: ${word.word} at ${word.start} to ${word.end}');
    }
  } else {
    print('No words found');
  }

  if (result.notFound.isNotEmpty) {
    print('Words not found: ${result.notFound}');
  }
}
回到顶部