Flutter搜索功能插件choseong_search的使用
Flutter 搜索功能插件choseong_search的使用
韩文初音搜索 Flutter 插件。

安装
在终端中运行 flutter pub add choseong_search
或者手动将包添加到 pubspec.yaml
文件中:
dependencies:
choseong_search: 1.0.0
然后在代码中导入该包:
import 'package:choseong_search/choseong_search.dart';
使用
1. 初音搜索
import 'package:choseong_search/choseong_search.dart';
ChoseongSearch.compare(query: "ㅇㄴㅎㅅㅇ", target: "안녕하세요") // 返回 true
ChoseongSearch.compare(query: "ㅇ녕하ㅅㅇ", target: "안녕하세요") // 返回 true
ChoseongSearch.compare(query: "ㅇ녕하ㅅ염", target: "안녕하세요") // 返回 false
比较查询字符串 query
和目标字符串 target
并返回一个布尔值。
2. 提取初音、中音和终音
import 'package:choseong_search/choseong_search.dart';
ChoseongSearch.getChoseong(char: "안녕하세요ㅋㅋ") // 返回 "ㅇㄴㅎㅅㅇㅋㅋ"
ChoseongSearch.getJungseong(char: "안녕하세요ㅋㅋ") // 返回 "ㅏㅕㅏㅔㅛ "
ChoseongSearch.getJongseong(char: "안녕하세요ㅋㅋ") // 返回 "ㄴㅇ "
输入字符 char
并提取其初音、中音和终音。未提取的目标音节位置会填充空格 " "。
完整示例代码
以下是一个完整的示例代码,展示了如何在 Flutter 应用程序中使用 choseong_search
插件进行韩文初音搜索。
import 'package:flutter/material.dart';
import 'package:choseong_search/choseong_search.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(title: '韩文初音搜索'),
);
}
}
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 List<String> hangeulWords = [
'가방',
'가지',
'가위',
'가을',
'나무늘보',
'노트북',
'눈사람',
'넥타이',
'가사',
'가장',
'바나나',
'사과나무',
'자동차',
'주머니',
'초콜릿',
];
final TextEditingController searchBarController = TextEditingController();
List<String> _filteredList = [];
void _filterList(String query) {
List<String> filteredList = [];
if (query.isEmpty) {
filteredList.addAll(hangeulWords);
} else {
for (final item in hangeulWords) {
if (ChoseongSearch.compare(query: query, target: item)){
filteredList.add(item);
}
}
}
setState(() {
_filteredList = filteredList;
});
}
[@override](/user/override)
void initState() {
_filterList("");
super.initState();
}
[@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.center,
children: <Widget>[
TextField(
controller: searchBarController,
onChanged: (query) {
setState(() {
_filterList(query);
});
},
decoration: InputDecoration(
hintText: '搜索',
prefixIcon: const Icon(Icons.search),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8.0),
borderSide: BorderSide.none,
),
filled: true,
fillColor: Colors.grey[200],
contentPadding: const EdgeInsets.symmetric(vertical: 0.0, horizontal: 20.0),
),
),
const SizedBox(height: 40),
Expanded(
child: GridView.builder(
gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2,
crossAxisSpacing: 0.0,
mainAxisSpacing: 0.0,
childAspectRatio: 3
),
itemCount: _filteredList.length,
itemBuilder: (context, index) {
final item = _filteredList[index];
return Center(
child: Text(
item,
style: const TextStyle(fontSize: 18),
),
);
},
),
),
],
),
),
);
}
}
更多关于Flutter搜索功能插件choseong_search的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter搜索功能插件choseong_search的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
choseong_search
是一个用于在 Flutter 应用中实现韩文字母(초성, Choseong)搜索功能的插件。它可以帮助用户在输入韩文字母的初声时,快速过滤和搜索相关的韩文词汇。
安装
首先,你需要在 pubspec.yaml
文件中添加 choseong_search
依赖:
dependencies:
choseong_search: ^1.0.0
然后运行 flutter pub get
来安装依赖。
基本用法
1. 导入包
import 'package:choseong_search/choseong_search.dart';
2. 准备数据
假设你有一个韩文词汇列表:
List<String> words = [
"가방", "나비", "다리", "라면", "마음",
"바다", "사랑", "아기", "자동차", "차차차"
];
3. 使用 ChoseongSearch
进行搜索
void main() {
// 初始化 ChoseongSearch
final choseongSearch = ChoseongSearch(words);
// 搜索
final results = choseongSearch.search("ㄱ"); // 搜索以 "ㄱ" 开头的词汇
// 输出结果
print(results); // ["가방"]
}
高级用法
1. 自定义搜索函数
你可以自定义搜索函数来实现更复杂的搜索逻辑。
final results = choseongSearch.search("ㄱ", (word, choseong) {
// 自定义搜索逻辑
return word.startsWith(choseong);
});
2. 支持模糊搜索
choseong_search
也支持模糊搜索,即可以匹配词汇中包含的初声。
final results = choseongSearch.search("ㄱ", fuzzy: true);
3. 搜索结果排序
你可以对搜索结果进行排序,比如按词汇长度排序。
final results = choseongSearch.search("ㄱ")..sort((a, b) => a.length.compareTo(b.length));
示例应用
以下是一个完整的示例应用,展示了如何在 Flutter 中使用 choseong_search
:
import 'package:flutter/material.dart';
import 'package:choseong_search/choseong_search.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Choseong Search Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: SearchPage(),
);
}
}
class SearchPage extends StatefulWidget {
[@override](/user/override)
_SearchPageState createState() => _SearchPageState();
}
class _SearchPageState extends State<SearchPage> {
final List<String> words = [
"가방", "나비", "다리", "라면", "마음",
"바다", "사랑", "아기", "자동차", "차차차"
];
final choseongSearch = ChoseongSearch([]);
List<String> results = [];
[@override](/user/override)
void initState() {
super.initState();
choseongSearch.setData(words);
}
void onSearch(String query) {
setState(() {
results = choseongSearch.search(query, fuzzy: true);
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Choseong Search Demo'),
),
body: Column(
children: [
Padding(
padding: const EdgeInsets.all(8.0),
child: TextField(
onChanged: onSearch,
decoration: InputDecoration(
labelText: 'Search',
hintText: 'Enter Choseong (e.g., ㄱ)',
),
),
),
Expanded(
child: ListView.builder(
itemCount: results.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(results[index]),
);
},
),
),
],
),
);
}
}