mirror of
https://github.com/ZhuJHua/moodiary.git
synced 2026-04-05 16:31:45 +08:00
Merge pull request #235 from ZhuJHua/develop
feat: integrate Jieba for keyword extraction and search optimization
This commit is contained in:
@@ -20,3 +20,5 @@ analyzer:
|
||||
- "android/**"
|
||||
- "windows/**"
|
||||
- "macos/**"
|
||||
errors:
|
||||
invalid_annotation_target: ignore
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
rust_input: crate::api
|
||||
rust_root: rust/
|
||||
dart_output: lib/src/rust
|
||||
dart_output: lib/src/rust
|
||||
web: false
|
||||
@@ -67,6 +67,12 @@ class Diary {
|
||||
// 位置信息
|
||||
List<String> position = [];
|
||||
|
||||
// 关键词
|
||||
List<String> keywords = [];
|
||||
|
||||
// 分词
|
||||
List<String> tokenizer = [];
|
||||
|
||||
// 类型,富文本还是纯文本,不会为空,延迟加载
|
||||
late String type;
|
||||
|
||||
@@ -97,6 +103,8 @@ class Diary {
|
||||
const ListEquality().equals(videoName, other.videoName) &&
|
||||
const ListEquality().equals(tags, other.tags) &&
|
||||
const ListEquality().equals(position, other.position) &&
|
||||
const ListEquality().equals(keywords, other.keywords) &&
|
||||
const ListEquality().equals(tokenizer, other.tokenizer) &&
|
||||
type == other.type &&
|
||||
imageColor == other.imageColor &&
|
||||
aspect == other.aspect;
|
||||
@@ -118,6 +126,8 @@ class Diary {
|
||||
const ListEquality().hash(videoName) ^
|
||||
const ListEquality().hash(tags) ^
|
||||
const ListEquality().hash(position) ^
|
||||
const ListEquality().hash(keywords) ^
|
||||
const ListEquality().hash(tokenizer) ^
|
||||
type.hashCode ^
|
||||
imageColor.hashCode ^
|
||||
aspect.hashCode;
|
||||
@@ -145,6 +155,8 @@ class Diary {
|
||||
..videoName = List<String>.from(videoName)
|
||||
..tags = List<String>.from(tags)
|
||||
..position = List<String>.from(position)
|
||||
..keywords = List<String>.from(keywords)
|
||||
..tokenizer = List<String>.from(tokenizer)
|
||||
..type = type
|
||||
..imageColor = imageColor
|
||||
..aspect = aspect;
|
||||
@@ -168,6 +180,8 @@ class Diary {
|
||||
'videoName': videoName,
|
||||
'tags': tags,
|
||||
'position': position,
|
||||
'keywords': keywords,
|
||||
'tokenizer': tokenizer,
|
||||
'type': type,
|
||||
'imageColor': imageColor,
|
||||
'aspect': aspect,
|
||||
@@ -191,6 +205,8 @@ class Diary {
|
||||
..videoName = List<String>.from(json['videoName'] as List)
|
||||
..tags = List<String>.from(json['tags'] as List)
|
||||
..position = List<String>.from(json['position'] as List)
|
||||
..keywords = List<String>.from(json['keywords'] as List)
|
||||
..tokenizer = List<String>.from(json['tokenizer'] as List)
|
||||
..type = json['type'] as String
|
||||
..imageColor = json['imageColor'] as int?
|
||||
..aspect = (json['aspect'] as num?)?.toDouble();
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -4,7 +4,6 @@ import 'dart:typed_data';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:moodiary/utils/cache_util.dart';
|
||||
import 'package:moodiary/utils/log_util.dart';
|
||||
|
||||
final kTransparentImage = Uint8List.fromList(<int>[
|
||||
0x89,
|
||||
@@ -149,7 +148,7 @@ class _MoodiaryImageState extends State<MoodiaryImage> {
|
||||
void _loadImage() async {
|
||||
_loadState.value = _ImageLoadState.loading;
|
||||
try {
|
||||
logger.d('Image loaded from path: ${widget.imagePath}');
|
||||
//logger.d('Image loaded from path: ${widget.imagePath}');
|
||||
final imageAspect = await ImageCacheUtil().getImageAspectRatioWithCache(
|
||||
imagePath: widget.imagePath,
|
||||
);
|
||||
|
||||
@@ -17,7 +17,7 @@ class FloatingModal extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final padding = MediaQuery.viewPaddingOf(context);
|
||||
final padding = MediaQuery.viewInsetsOf(context);
|
||||
final size = MediaQuery.sizeOf(context);
|
||||
final maxHeight =
|
||||
isScrollControlled
|
||||
@@ -26,12 +26,12 @@ class FloatingModal extends StatelessWidget {
|
||||
return Align(
|
||||
alignment: Alignment.bottomCenter,
|
||||
child: ConstrainedBox(
|
||||
constraints: BoxConstraints(maxHeight: maxHeight, maxWidth: 640),
|
||||
constraints: BoxConstraints(maxHeight: maxHeight+padding.bottom, maxWidth: 640),
|
||||
child: Padding(
|
||||
padding: EdgeInsets.only(
|
||||
left: 16,
|
||||
right: 16,
|
||||
bottom: max(padding.bottom, 16),
|
||||
bottom: max(padding.bottom + 16, 16),
|
||||
),
|
||||
child: Material(
|
||||
color: context.theme.colorScheme.surfaceContainerHigh,
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
import 'package:get/get.dart';
|
||||
import 'package:moodiary/common/models/isar/diary.dart';
|
||||
import 'package:moodiary/pages/diary_details/diary_details_logic.dart';
|
||||
import 'package:moodiary/router/app_routes.dart';
|
||||
|
||||
import 'search_card_state.dart';
|
||||
|
||||
class SearchCardLogic extends GetxController {
|
||||
final SearchCardState state = SearchCardState();
|
||||
|
||||
//选中卡片后跳转到详情页,直接携带Diary作为参数
|
||||
Future<void> toDiaryPage(Diary diary) async {
|
||||
Bind.lazyPut(() => DiaryDetailsLogic(), tag: diary.id);
|
||||
await Get.toNamed(AppRoutes.diaryPage, arguments: [diary.clone(), false]);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
class SearchCardState {
|
||||
SearchCardState() {
|
||||
///Initialize variables
|
||||
}
|
||||
}
|
||||
@@ -1,58 +1,123 @@
|
||||
import 'package:dartx/dartx.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:moodiary/common/models/isar/diary.dart';
|
||||
import 'package:moodiary/common/values/border.dart';
|
||||
import 'package:moodiary/components/base/text.dart';
|
||||
import 'package:moodiary/pages/diary_details/diary_details_logic.dart';
|
||||
import 'package:moodiary/router/app_routes.dart';
|
||||
import 'package:substring_highlight/substring_highlight.dart';
|
||||
|
||||
import 'search_card_logic.dart';
|
||||
String getHighlightedExcerpt(
|
||||
String content,
|
||||
List<String> keywords, {
|
||||
int contextLength = 50,
|
||||
}) {
|
||||
for (final word in keywords) {
|
||||
final index = content.indexOf(word);
|
||||
if (index != -1) {
|
||||
final wordStart = index;
|
||||
final wordEnd = index + word.length;
|
||||
|
||||
int start = wordStart - contextLength;
|
||||
int end = wordEnd + contextLength;
|
||||
|
||||
if (start < 0) {
|
||||
end += -start;
|
||||
start = 0;
|
||||
}
|
||||
if (end > content.length) {
|
||||
final overflow = end - content.length;
|
||||
start = (start - overflow).clamp(0, content.length);
|
||||
end = content.length;
|
||||
}
|
||||
|
||||
final snippet = content.substring(start, end);
|
||||
|
||||
final hasHead = start > 0;
|
||||
final hasTail = end < content.length;
|
||||
|
||||
return "${hasHead ? '...' : ''}$snippet${hasTail ? '...' : ''}";
|
||||
}
|
||||
}
|
||||
|
||||
// 没有关键词命中,返回默认摘要
|
||||
final fallback = content.length > 200 ? content.substring(0, 200) : content;
|
||||
return "${fallback.trimRight()}${content.length > 200 ? '...' : ''}";
|
||||
}
|
||||
|
||||
class SearchCardComponent extends StatelessWidget {
|
||||
const SearchCardComponent({
|
||||
super.key,
|
||||
required this.diary,
|
||||
required this.index,
|
||||
required this.queryList,
|
||||
});
|
||||
|
||||
final List<String> queryList;
|
||||
|
||||
final Diary diary;
|
||||
final String index;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final logic = Bind.find<SearchCardLogic>(tag: index);
|
||||
|
||||
return GetBuilder<SearchCardLogic>(
|
||||
tag: index,
|
||||
assignId: true,
|
||||
builder: (_) {
|
||||
return InkWell(
|
||||
onTap: () {
|
||||
logic.toDiaryPage(diary);
|
||||
},
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: context.theme.colorScheme.surfaceContainerHighest,
|
||||
borderRadius: AppBorderRadius.smallBorderRadius,
|
||||
),
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
diary.contentText,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
maxLines: 1,
|
||||
),
|
||||
Text(diary.time.toString().split('.')[0]),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
final contentText = getHighlightedExcerpt(
|
||||
diary.contentText.removeLineBreaks(),
|
||||
queryList,
|
||||
);
|
||||
final title = diary.title.removeLineBreaks();
|
||||
return InkWell(
|
||||
onTap: () async {
|
||||
Bind.lazyPut(() => DiaryDetailsLogic(), tag: diary.id);
|
||||
await Get.toNamed(
|
||||
AppRoutes.diaryPage,
|
||||
arguments: [diary.clone(), false],
|
||||
);
|
||||
},
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: context.theme.colorScheme.surfaceContainerHighest,
|
||||
borderRadius: AppBorderRadius.smallBorderRadius,
|
||||
),
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Row(
|
||||
children: [
|
||||
Expanded(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
spacing: 4.0,
|
||||
children: [
|
||||
if (title.isNotBlank)
|
||||
SubstringHighlight(
|
||||
text: title,
|
||||
terms: queryList,
|
||||
maxLines: 1,
|
||||
overflow: TextOverflow.ellipsis,
|
||||
textStyle: context.textTheme.titleMedium!.copyWith(
|
||||
color: context.theme.colorScheme.onSurface,
|
||||
),
|
||||
textStyleHighlight: context.textTheme.titleMedium!
|
||||
.copyWith(
|
||||
backgroundColor: context.theme.colorScheme.primary,
|
||||
color: context.theme.colorScheme.onPrimary,
|
||||
),
|
||||
),
|
||||
SubstringHighlight(
|
||||
text: contentText,
|
||||
terms: queryList,
|
||||
textStyle: context.textTheme.bodyMedium!.copyWith(
|
||||
color: context.theme.colorScheme.onSurface,
|
||||
),
|
||||
textStyleHighlight: context.textTheme.bodyMedium!.copyWith(
|
||||
backgroundColor: context.theme.colorScheme.primary,
|
||||
color: context.theme.colorScheme.onPrimary,
|
||||
),
|
||||
),
|
||||
Text(diary.time.toString().split('.')[0]),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:dartx/dartx.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:moodiary/common/values/keyboard_state.dart';
|
||||
import 'package:moodiary/components/keyboard_listener/keyboard_listener.dart';
|
||||
import 'package:moodiary/persistence/isar.dart';
|
||||
import 'package:moodiary/src/rust/api/jieba.dart';
|
||||
import 'package:throttling/throttling.dart';
|
||||
|
||||
import 'search_sheet_state.dart';
|
||||
|
||||
@@ -9,27 +16,97 @@ class SearchSheetLogic extends GetxController {
|
||||
late TextEditingController textEditingController = TextEditingController();
|
||||
late FocusNode focusNode = FocusNode();
|
||||
|
||||
late final KeyboardObserver _keyboardObserver;
|
||||
|
||||
late final Throttling _throttling = Throttling(
|
||||
duration: const Duration(milliseconds: 500),
|
||||
);
|
||||
|
||||
String _lastText = '';
|
||||
|
||||
Timer? _timer;
|
||||
|
||||
@override
|
||||
void onInit() {
|
||||
_keyboardObserver = KeyboardObserver(
|
||||
onHeightChanged: (height) {
|
||||
if (height > 0) {
|
||||
state.keyboardHeight.value = height;
|
||||
}
|
||||
},
|
||||
onStateChanged: (state) {
|
||||
switch (state) {
|
||||
case KeyboardState.opening:
|
||||
break;
|
||||
case KeyboardState.closing:
|
||||
unFocus();
|
||||
break;
|
||||
case KeyboardState.closed:
|
||||
break;
|
||||
case KeyboardState.unknown:
|
||||
break;
|
||||
}
|
||||
},
|
||||
);
|
||||
_keyboardObserver.start();
|
||||
textEditingController.addListener(() {
|
||||
_throttling.throttle(() async {
|
||||
await doSearch();
|
||||
});
|
||||
});
|
||||
|
||||
_timer = Timer.periodic(const Duration(milliseconds: 500), (_) async {
|
||||
final currentText = textEditingController.text.trim();
|
||||
if (currentText != _lastText) {
|
||||
_lastText = currentText;
|
||||
if (currentText.isNotBlank) {
|
||||
await doSearch();
|
||||
} else {
|
||||
clear();
|
||||
}
|
||||
}
|
||||
});
|
||||
super.onInit();
|
||||
}
|
||||
|
||||
@override
|
||||
void onClose() {
|
||||
_keyboardObserver.stop();
|
||||
textEditingController.dispose();
|
||||
focusNode.dispose();
|
||||
_throttling.close();
|
||||
_timer?.cancel();
|
||||
_timer = null;
|
||||
super.onClose();
|
||||
}
|
||||
|
||||
void clearSearch() {
|
||||
state.searchList = [];
|
||||
void unFocus() {
|
||||
focusNode.unfocus();
|
||||
}
|
||||
|
||||
void clear() {
|
||||
state.searchList.clear();
|
||||
state.totalCount.value = 0;
|
||||
state.queryList = [];
|
||||
state.isSearching.value = false;
|
||||
update();
|
||||
}
|
||||
|
||||
Future<void> search() async {
|
||||
focusNode.unfocus();
|
||||
if (textEditingController.text != '') {
|
||||
state.isSearching.value = true;
|
||||
state.searchList = await IsarUtil.searchDiaries(
|
||||
textEditingController.text,
|
||||
);
|
||||
state.totalCount.value = state.searchList.length;
|
||||
state.isSearching.value = false;
|
||||
Future<void> doSearch() async {
|
||||
final currentText = textEditingController.text.trim();
|
||||
if (currentText == _lastText) {
|
||||
return;
|
||||
}
|
||||
if (currentText.isBlank) {
|
||||
clear();
|
||||
return;
|
||||
}
|
||||
state.isSearching.value = true;
|
||||
_lastText = currentText;
|
||||
final queryList = await JiebaRs.cutForSearch(text: _lastText, hmm: true);
|
||||
state.searchList = await IsarUtil.searchDiaries(queryList: queryList);
|
||||
state.totalCount.value = state.searchList.length;
|
||||
state.queryList = queryList;
|
||||
state.isSearching.value = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,10 @@ class SearchSheetState {
|
||||
|
||||
late RxInt totalCount;
|
||||
|
||||
RxDouble keyboardHeight = 0.0.obs;
|
||||
|
||||
late List<String> queryList = [];
|
||||
|
||||
SearchSheetState() {
|
||||
searchList = [];
|
||||
isSearching = false.obs;
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||
import 'package:gap/gap.dart';
|
||||
import 'package:get/get.dart';
|
||||
import 'package:moodiary/common/values/border.dart';
|
||||
import 'package:moodiary/components/search_card/search_card_logic.dart';
|
||||
import 'package:moodiary/components/search_card/search_card_view.dart';
|
||||
import 'package:moodiary/l10n/l10n.dart';
|
||||
|
||||
@@ -21,12 +22,7 @@ class SearchSheetComponent extends StatelessWidget {
|
||||
return Column(
|
||||
children: [
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(
|
||||
left: 8.0,
|
||||
right: 8.0,
|
||||
top: 8.0,
|
||||
bottom: 4.0,
|
||||
),
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: TextField(
|
||||
maxLines: 1,
|
||||
controller: logic.textEditingController,
|
||||
@@ -40,8 +36,8 @@ class SearchSheetComponent extends StatelessWidget {
|
||||
filled: true,
|
||||
labelText: context.l10n.diarySearch,
|
||||
suffixIcon: IconButton(
|
||||
onPressed: () {
|
||||
logic.search();
|
||||
onPressed: () async {
|
||||
await logic.doSearch();
|
||||
},
|
||||
icon: const Icon(Icons.search),
|
||||
),
|
||||
@@ -49,32 +45,57 @@ class SearchSheetComponent extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
Obx(() {
|
||||
return Expanded(
|
||||
child:
|
||||
state.isSearching.value
|
||||
? const Center(child: CircularProgressIndicator())
|
||||
: ListView.builder(
|
||||
itemCount: state.searchList.length,
|
||||
padding: EdgeInsets.zero,
|
||||
itemBuilder: (context, index) {
|
||||
Bind.lazyPut(
|
||||
() => SearchCardLogic(),
|
||||
tag: index.toString(),
|
||||
);
|
||||
return Padding(
|
||||
padding: const EdgeInsets.only(
|
||||
left: 8.0,
|
||||
right: 8.0,
|
||||
top: 4.0,
|
||||
bottom: 4.0,
|
||||
),
|
||||
child: SearchCardComponent(
|
||||
diary: state.searchList[index],
|
||||
index: index.toString(),
|
||||
),
|
||||
);
|
||||
},
|
||||
Widget child;
|
||||
if (state.isSearching.value && state.searchList.isEmpty) {
|
||||
child = const Center(
|
||||
key: ValueKey('loading'),
|
||||
child: CircularProgressIndicator(),
|
||||
);
|
||||
} else if (state.searchList.isEmpty) {
|
||||
child = Center(
|
||||
key: const ValueKey('empty'),
|
||||
child: FaIcon(
|
||||
FontAwesomeIcons.boxOpen,
|
||||
color: context.theme.colorScheme.onSurface,
|
||||
size: 56,
|
||||
),
|
||||
);
|
||||
} else {
|
||||
child = Stack(
|
||||
children: [
|
||||
Positioned.fill(
|
||||
child: ListView.separated(
|
||||
itemCount: state.searchList.length,
|
||||
padding: const EdgeInsets.symmetric(horizontal: 8.0),
|
||||
itemBuilder: (context, index) {
|
||||
return SearchCardComponent(
|
||||
diary: state.searchList[index],
|
||||
queryList: state.queryList,
|
||||
);
|
||||
},
|
||||
separatorBuilder: (_, _) => const Gap(8.0),
|
||||
),
|
||||
),
|
||||
if (state.isSearching.value && state.searchList.isNotEmpty)
|
||||
Positioned.fill(
|
||||
child: Container(
|
||||
color: context.theme.colorScheme.surfaceContainer
|
||||
.withValues(alpha: 0.8),
|
||||
child: const Center(
|
||||
key: ValueKey('loading2'),
|
||||
child: CircularProgressIndicator(),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
return Expanded(
|
||||
child: AnimatedSwitcher(
|
||||
duration: Durations.short3,
|
||||
child: child,
|
||||
),
|
||||
);
|
||||
}),
|
||||
Padding(
|
||||
|
||||
@@ -13,6 +13,7 @@ import 'package:moodiary/api/api.dart';
|
||||
import 'package:moodiary/common/models/isar/diary.dart';
|
||||
import 'package:moodiary/common/values/diary_type.dart';
|
||||
import 'package:moodiary/common/values/keyboard_state.dart';
|
||||
import 'package:moodiary/components/base/text.dart';
|
||||
import 'package:moodiary/components/keyboard_listener/keyboard_listener.dart';
|
||||
import 'package:moodiary/components/quill_embed/audio_embed.dart';
|
||||
import 'package:moodiary/components/quill_embed/image_embed.dart';
|
||||
@@ -22,6 +23,7 @@ import 'package:moodiary/l10n/l10n.dart';
|
||||
import 'package:moodiary/persistence/isar.dart';
|
||||
import 'package:moodiary/persistence/pref.dart';
|
||||
import 'package:moodiary/router/app_routes.dart';
|
||||
import 'package:moodiary/src/rust/api/jieba.dart';
|
||||
import 'package:moodiary/src/rust/api/kmp.dart';
|
||||
import 'package:moodiary/utils/file_util.dart';
|
||||
import 'package:moodiary/utils/markdown_util.dart';
|
||||
@@ -435,14 +437,25 @@ class EditLogic extends GetxController {
|
||||
text: originContent,
|
||||
replacements: {...imageNameMap, ...videoNameMap, ...audioNameMap},
|
||||
);
|
||||
final contentText = _toPlainText().removeLineBreaks();
|
||||
final tokenizer = await JiebaRs.cutAll(text: contentText);
|
||||
final keywords = await JiebaRs.extractKeywordsTfidf(
|
||||
text: contentText,
|
||||
topK: BigInt.from(5),
|
||||
allowedPos: [],
|
||||
);
|
||||
final sortByWeight = keywords..sort((a, b) => b.weight.compareTo(a.weight));
|
||||
final sortedKeywords = sortByWeight.map((e) => e.keyword).toList();
|
||||
state.currentDiary
|
||||
..title = titleTextEditingController.text
|
||||
..content = content
|
||||
..type = state.type.value
|
||||
..contentText = _toPlainText()
|
||||
..contentText = contentText
|
||||
..audioName = state.audioNameList
|
||||
..imageName = imageNameMap.values.toList()
|
||||
..videoName = videoNameMap.values.toList()
|
||||
..tokenizer = tokenizer
|
||||
..keywords = sortedKeywords
|
||||
..imageColor = await getCoverColor()
|
||||
..aspect = await getCoverAspect();
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ import 'dart:async';
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:get/get.dart';
|
||||
import 'package:moodiary/persistence/isar.dart';
|
||||
import 'package:moodiary/persistence/pref.dart';
|
||||
import 'package:moodiary/utils/aes_util.dart';
|
||||
import 'package:moodiary/utils/cache_util.dart';
|
||||
@@ -85,4 +86,13 @@ class LaboratoryLogic extends GetxController {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool generateFTSAndKeyword() {
|
||||
try {
|
||||
IsarUtil.mergeToV2_7_4(FileUtil.getRealPath('database', ''));
|
||||
return true;
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -108,6 +108,18 @@ class LaboratoryPage extends StatelessWidget {
|
||||
},
|
||||
title: const Text('清理图片缩略图缓存'),
|
||||
),
|
||||
const Gap(12),
|
||||
ListTile(
|
||||
onTap: () async {
|
||||
final res = logic.generateFTSAndKeyword();
|
||||
if (res) {
|
||||
toast.success(message: '重新生成成功');
|
||||
} else {
|
||||
toast.error(message: '重新生成失败');
|
||||
}
|
||||
},
|
||||
title: const Text('重新进行全文搜索索引'),
|
||||
),
|
||||
],
|
||||
);
|
||||
},
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'dart:async';
|
||||
import 'dart:collection';
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -11,10 +12,12 @@ import 'package:moodiary/common/models/isar/font.dart';
|
||||
import 'package:moodiary/common/models/isar/sync_record.dart';
|
||||
import 'package:moodiary/common/models/map.dart';
|
||||
import 'package:moodiary/common/values/diary_type.dart';
|
||||
import 'package:moodiary/components/base/text.dart';
|
||||
import 'package:moodiary/components/quill_embed/audio_embed.dart';
|
||||
import 'package:moodiary/components/quill_embed/image_embed.dart';
|
||||
import 'package:moodiary/components/quill_embed/video_embed.dart';
|
||||
import 'package:moodiary/persistence/pref.dart';
|
||||
import 'package:moodiary/src/rust/api/jieba.dart';
|
||||
import 'package:moodiary/utils/file_util.dart';
|
||||
import 'package:moodiary/utils/webdav_util.dart';
|
||||
import 'package:path/path.dart';
|
||||
@@ -201,28 +204,38 @@ class IsarUtil {
|
||||
}
|
||||
}
|
||||
|
||||
//查询日记
|
||||
static Future<List<Diary>> searchDiaries(String value) async {
|
||||
final contentResults =
|
||||
await _isar.diarys
|
||||
.where()
|
||||
.showEqualTo(true)
|
||||
.contentTextContains(value)
|
||||
.findAllAsync();
|
||||
final titleResults =
|
||||
await _isar.diarys
|
||||
.where()
|
||||
.showEqualTo(true)
|
||||
.titleContains(value)
|
||||
.findAllAsync();
|
||||
static Future<List<Diary>> searchDiaries({
|
||||
required List<String> queryList,
|
||||
}) async {
|
||||
if (queryList.isEmpty) return [];
|
||||
|
||||
// 合并并去重
|
||||
final combinedResults = {...contentResults, ...titleResults}.toList();
|
||||
// 收集所有匹配关键词的内容结果
|
||||
final HashSet<Diary> results = HashSet(
|
||||
equals: (a, b) {
|
||||
return a.isarId == b.isarId;
|
||||
},
|
||||
hashCode: (e) {
|
||||
return e.isarId;
|
||||
},
|
||||
);
|
||||
|
||||
// 按时间排序
|
||||
combinedResults.sort((a, b) => b.time.compareTo(a.time));
|
||||
for (final word in queryList) {
|
||||
final matches =
|
||||
await _isar.diarys
|
||||
.where()
|
||||
.showEqualTo(true)
|
||||
.tokenizerElementMatches(word, caseSensitive: false)
|
||||
.or()
|
||||
.titleContains(word, caseSensitive: false)
|
||||
.findAllAsync();
|
||||
results.addAll(matches);
|
||||
}
|
||||
|
||||
return combinedResults;
|
||||
// 按时间降序排序
|
||||
final List<Diary> sortedResults =
|
||||
results.toList()..sort((a, b) => b.time.compareTo(a.time));
|
||||
|
||||
return sortedResults;
|
||||
}
|
||||
|
||||
static Future<List<Diary>> searchDiariesByTag(String value) async {
|
||||
@@ -435,6 +448,37 @@ class IsarUtil {
|
||||
isar.close();
|
||||
}
|
||||
|
||||
/// 2.7.4 版本变更
|
||||
/// 新增字段
|
||||
/// 1. keywords 关键词
|
||||
/// 2. tokenizer 分词器
|
||||
static Future<void> mergeToV2_7_4(String dir) async {
|
||||
final countDiary = _isar.diarys.where().count();
|
||||
for (var i = 0; i < countDiary; i += 50) {
|
||||
final diaries = await _isar.diarys.where().findAllAsync(
|
||||
offset: i,
|
||||
limit: 50,
|
||||
);
|
||||
for (final diary in diaries) {
|
||||
final newContent = diary.contentText.removeLineBreaks();
|
||||
diary.tokenizer = await JiebaRs.cutAll(text: newContent);
|
||||
final keywords = await JiebaRs.extractKeywordsTfidf(
|
||||
text: newContent,
|
||||
topK: BigInt.from(5),
|
||||
allowedPos: [],
|
||||
);
|
||||
final sortByWeight =
|
||||
keywords..sort((a, b) => b.weight.compareTo(a.weight));
|
||||
final sortedKeywords = sortByWeight.map((e) => e.keyword).toList();
|
||||
diary.keywords = sortedKeywords;
|
||||
diary.contentText = newContent;
|
||||
await _isar.writeAsync((isar) {
|
||||
isar.diarys.put(diary);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// 2.6.3 修复
|
||||
/// 修复之前webdav同步时,没有同步分类的问题
|
||||
/// 遍历所有日记,如果本地没有日记的分类,就创建一个分类,名称为分类名
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
|
||||
// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import
|
||||
|
||||
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
|
||||
|
||||
import '../frb_generated.dart';
|
||||
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
|
||||
|
||||
// Rust type: RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<AesEncryption>>
|
||||
abstract class AesEncryption implements RustOpaqueInterface {
|
||||
|
||||
@@ -3,31 +3,13 @@
|
||||
|
||||
// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import
|
||||
|
||||
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
|
||||
|
||||
import '../frb_generated.dart';
|
||||
import 'constants.dart';
|
||||
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
|
||||
|
||||
// These functions are ignored because they are not marked as `pub`: `calculate_target_dimensions`, `load_image`
|
||||
// These functions are ignored because they are not marked as `pub`: `calculate_target_dimensions`, `compress`
|
||||
// These types are ignored because they are neither used by any `pub` functions nor (for structs and enums) marked `#[frb(unignore)]`: `ResizeOptions`
|
||||
|
||||
Future<Uint8List> compress({
|
||||
required DynamicImage img,
|
||||
required int dstHeight,
|
||||
required int dstWidth,
|
||||
required CompressFormat compressFormat,
|
||||
required int quality,
|
||||
}) => RustLib.instance.api.crateApiCompressCompress(
|
||||
img: img,
|
||||
dstHeight: dstHeight,
|
||||
dstWidth: dstWidth,
|
||||
compressFormat: compressFormat,
|
||||
quality: quality,
|
||||
);
|
||||
|
||||
// Rust type: RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<DynamicImage>>
|
||||
abstract class DynamicImage implements RustOpaqueInterface {}
|
||||
|
||||
// Rust type: RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<ImageCompress>>
|
||||
abstract class ImageCompress implements RustOpaqueInterface {
|
||||
static Future<Uint8List> containWithOptions({
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
|
||||
// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import
|
||||
|
||||
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
|
||||
|
||||
import '../frb_generated.dart';
|
||||
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
|
||||
|
||||
// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `assert_receiver_is_total_eq`, `eq`
|
||||
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
|
||||
// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import
|
||||
|
||||
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
|
||||
|
||||
import '../frb_generated.dart';
|
||||
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
|
||||
|
||||
// Rust type: RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<FontReader>>
|
||||
abstract class FontReader implements RustOpaqueInterface {
|
||||
|
||||
58
lib/src/rust/api/jieba.dart
Normal file
58
lib/src/rust/api/jieba.dart
Normal file
@@ -0,0 +1,58 @@
|
||||
// This file is automatically generated, so please do not edit it.
|
||||
// @generated by `flutter_rust_bridge`@ 2.9.0.
|
||||
|
||||
// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import
|
||||
|
||||
import '../frb_generated.dart';
|
||||
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
|
||||
|
||||
// These functions are ignored because they are not marked as `pub`: `convert_keywords`, `get_instance`, `init_global`, `new`
|
||||
// These function are ignored because they are on traits that is not defined in current crate (put an empty `#[frb]` on it to unignore): `clone`, `fmt`
|
||||
|
||||
// Rust type: RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<JiebaRs>>
|
||||
abstract class JiebaRs implements RustOpaqueInterface {
|
||||
static Future<List<String>> cut({required String text, required bool hmm}) =>
|
||||
RustLib.instance.api.crateApiJiebaJiebaRsCut(text: text, hmm: hmm);
|
||||
|
||||
static Future<List<String>> cutAll({required String text}) =>
|
||||
RustLib.instance.api.crateApiJiebaJiebaRsCutAll(text: text);
|
||||
|
||||
static Future<List<String>> cutForSearch({
|
||||
required String text,
|
||||
required bool hmm,
|
||||
}) => RustLib.instance.api.crateApiJiebaJiebaRsCutForSearch(
|
||||
text: text,
|
||||
hmm: hmm,
|
||||
);
|
||||
|
||||
static Future<List<Keyword>> extractKeywordsTextRank({
|
||||
required String text,
|
||||
required BigInt topK,
|
||||
required List<String> allowedPos,
|
||||
}) => RustLib.instance.api.crateApiJiebaJiebaRsExtractKeywordsTextRank(
|
||||
text: text,
|
||||
topK: topK,
|
||||
allowedPos: allowedPos,
|
||||
);
|
||||
|
||||
static Future<List<Keyword>> extractKeywordsTfidf({
|
||||
required String text,
|
||||
required BigInt topK,
|
||||
required List<String> allowedPos,
|
||||
}) => RustLib.instance.api.crateApiJiebaJiebaRsExtractKeywordsTfidf(
|
||||
text: text,
|
||||
topK: topK,
|
||||
allowedPos: allowedPos,
|
||||
);
|
||||
}
|
||||
|
||||
// Rust type: RustOpaqueMoi<flutter_rust_bridge::for_generated::RustAutoOpaqueInner<Keyword>>
|
||||
abstract class Keyword implements RustOpaqueInterface {
|
||||
String get keyword;
|
||||
|
||||
double get weight;
|
||||
|
||||
set keyword(String keyword);
|
||||
|
||||
set weight(double weight);
|
||||
}
|
||||
@@ -3,9 +3,8 @@
|
||||
|
||||
// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import
|
||||
|
||||
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
|
||||
|
||||
import '../frb_generated.dart';
|
||||
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
|
||||
|
||||
Future<Uint64List> buildPrefixTable({required List<String> pattern}) =>
|
||||
RustLib.instance.api.crateApiKmpBuildPrefixTable(pattern: pattern);
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
|
||||
// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import
|
||||
|
||||
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
|
||||
|
||||
import '../frb_generated.dart';
|
||||
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart';
|
||||
|
||||
// These functions are ignored because they are not marked as `pub`: `read_file_to_vec`
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3,19 +3,18 @@
|
||||
|
||||
// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field
|
||||
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'dart:ffi' as ffi;
|
||||
|
||||
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_io.dart';
|
||||
|
||||
import 'api/aes.dart';
|
||||
import 'api/compress.dart';
|
||||
import 'api/constants.dart';
|
||||
import 'api/font.dart';
|
||||
import 'api/jieba.dart';
|
||||
import 'api/kmp.dart';
|
||||
import 'api/zip.dart';
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'dart:ffi' as ffi;
|
||||
import 'frb_generated.dart';
|
||||
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_io.dart';
|
||||
|
||||
abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
RustLibApiImplPlatform({
|
||||
@@ -29,10 +28,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
get rust_arc_decrement_strong_count_AesEncryptionPtr =>
|
||||
wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryptionPtr;
|
||||
|
||||
CrossPlatformFinalizerArg
|
||||
get rust_arc_decrement_strong_count_DynamicImagePtr =>
|
||||
wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImagePtr;
|
||||
|
||||
CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_FontReaderPtr =>
|
||||
wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReaderPtr;
|
||||
|
||||
@@ -40,6 +35,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
get rust_arc_decrement_strong_count_ImageCompressPtr =>
|
||||
wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompressPtr;
|
||||
|
||||
CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_JiebaRsPtr =>
|
||||
wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRsPtr;
|
||||
|
||||
CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_KeywordPtr =>
|
||||
wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeywordPtr;
|
||||
|
||||
CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_KmpPtr =>
|
||||
wire._rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmpPtr;
|
||||
|
||||
@@ -67,6 +68,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
JiebaRs
|
||||
dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
Keyword
|
||||
dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
Kmp
|
||||
dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp(
|
||||
@@ -79,6 +92,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
Keyword
|
||||
dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
Zip
|
||||
dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip(
|
||||
@@ -86,8 +105,8 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
);
|
||||
|
||||
@protected
|
||||
DynamicImage
|
||||
dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
Keyword
|
||||
dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@@ -106,12 +125,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
DynamicImage
|
||||
dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
FontReader
|
||||
dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader(
|
||||
@@ -124,6 +137,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
JiebaRs
|
||||
dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
Keyword
|
||||
dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
Kmp
|
||||
dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp(
|
||||
@@ -139,6 +164,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
@protected
|
||||
String dco_decode_String(dynamic raw);
|
||||
|
||||
@protected
|
||||
bool dco_decode_bool(dynamic raw);
|
||||
|
||||
@protected
|
||||
CompressFormat dco_decode_box_autoadd_compress_format(dynamic raw);
|
||||
|
||||
@@ -154,9 +182,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
@protected
|
||||
double dco_decode_f_32(dynamic raw);
|
||||
|
||||
@protected
|
||||
double dco_decode_f_64(dynamic raw);
|
||||
|
||||
@protected
|
||||
int dco_decode_i_32(dynamic raw);
|
||||
|
||||
@protected
|
||||
List<Keyword>
|
||||
dco_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
List<String> dco_decode_list_Char(dynamic raw);
|
||||
|
||||
@@ -229,6 +266,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
JiebaRs
|
||||
sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
Keyword
|
||||
sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
Kmp
|
||||
sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp(
|
||||
@@ -241,6 +290,12 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
Keyword
|
||||
sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
Zip
|
||||
sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip(
|
||||
@@ -248,8 +303,8 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
);
|
||||
|
||||
@protected
|
||||
DynamicImage
|
||||
sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
Keyword
|
||||
sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@@ -272,12 +327,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
DynamicImage
|
||||
sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
FontReader
|
||||
sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader(
|
||||
@@ -290,6 +339,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
JiebaRs
|
||||
sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
Keyword
|
||||
sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
Kmp
|
||||
sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp(
|
||||
@@ -305,6 +366,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
@protected
|
||||
String sse_decode_String(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
bool sse_decode_bool(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
CompressFormat sse_decode_box_autoadd_compress_format(
|
||||
SseDeserializer deserializer,
|
||||
@@ -322,9 +386,18 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
@protected
|
||||
double sse_decode_f_32(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
double sse_decode_f_64(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
int sse_decode_i_32(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
List<Keyword>
|
||||
sse_decode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
List<String> sse_decode_list_Char(SseDeserializer deserializer);
|
||||
|
||||
@@ -384,9 +457,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
@protected
|
||||
BigInt sse_decode_usize(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
bool sse_decode_bool(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_AnyhowException(
|
||||
AnyhowException self,
|
||||
@@ -414,6 +484,20 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs(
|
||||
JiebaRs self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword(
|
||||
Keyword self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp(
|
||||
@@ -428,6 +512,13 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword(
|
||||
Keyword self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip(
|
||||
@@ -437,8 +528,8 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
DynamicImage self,
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword(
|
||||
Keyword self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@@ -464,13 +555,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
DynamicImage self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader(
|
||||
@@ -485,6 +569,20 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs(
|
||||
JiebaRs self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword(
|
||||
Keyword self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp(
|
||||
@@ -502,6 +600,9 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
@protected
|
||||
void sse_encode_String(String self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_bool(bool self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_box_autoadd_compress_format(
|
||||
CompressFormat self,
|
||||
@@ -523,9 +624,19 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
@protected
|
||||
void sse_encode_f_32(double self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_f_64(double self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_i_32(int self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_list_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword(
|
||||
List<Keyword> self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void sse_encode_list_Char(List<String> self, SseSerializer serializer);
|
||||
|
||||
@@ -597,9 +708,6 @@ abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
|
||||
@protected
|
||||
void sse_encode_usize(BigInt self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_bool(bool self, SseSerializer serializer);
|
||||
}
|
||||
|
||||
// Section: wire_class
|
||||
@@ -650,40 +758,6 @@ class RustLibWire implements BaseWire {
|
||||
_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryptionPtr
|
||||
.asFunction<void Function(ffi.Pointer<ffi.Void>)>();
|
||||
|
||||
void
|
||||
rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
ffi.Pointer<ffi.Void> ptr,
|
||||
) {
|
||||
return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
ptr,
|
||||
);
|
||||
}
|
||||
|
||||
late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImagePtr =
|
||||
_lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>(
|
||||
'frbgen_moodiary_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage',
|
||||
);
|
||||
late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage =
|
||||
_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImagePtr
|
||||
.asFunction<void Function(ffi.Pointer<ffi.Void>)>();
|
||||
|
||||
void
|
||||
rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
ffi.Pointer<ffi.Void> ptr,
|
||||
) {
|
||||
return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
ptr,
|
||||
);
|
||||
}
|
||||
|
||||
late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImagePtr =
|
||||
_lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>(
|
||||
'frbgen_moodiary_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage',
|
||||
);
|
||||
late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage =
|
||||
_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImagePtr
|
||||
.asFunction<void Function(ffi.Pointer<ffi.Void>)>();
|
||||
|
||||
void
|
||||
rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader(
|
||||
ffi.Pointer<ffi.Void> ptr,
|
||||
@@ -752,6 +826,74 @@ class RustLibWire implements BaseWire {
|
||||
_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompressPtr
|
||||
.asFunction<void Function(ffi.Pointer<ffi.Void>)>();
|
||||
|
||||
void
|
||||
rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs(
|
||||
ffi.Pointer<ffi.Void> ptr,
|
||||
) {
|
||||
return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs(
|
||||
ptr,
|
||||
);
|
||||
}
|
||||
|
||||
late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRsPtr =
|
||||
_lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>(
|
||||
'frbgen_moodiary_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs',
|
||||
);
|
||||
late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs =
|
||||
_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRsPtr
|
||||
.asFunction<void Function(ffi.Pointer<ffi.Void>)>();
|
||||
|
||||
void
|
||||
rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs(
|
||||
ffi.Pointer<ffi.Void> ptr,
|
||||
) {
|
||||
return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs(
|
||||
ptr,
|
||||
);
|
||||
}
|
||||
|
||||
late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRsPtr =
|
||||
_lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>(
|
||||
'frbgen_moodiary_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs',
|
||||
);
|
||||
late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRs =
|
||||
_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerJiebaRsPtr
|
||||
.asFunction<void Function(ffi.Pointer<ffi.Void>)>();
|
||||
|
||||
void
|
||||
rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword(
|
||||
ffi.Pointer<ffi.Void> ptr,
|
||||
) {
|
||||
return _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword(
|
||||
ptr,
|
||||
);
|
||||
}
|
||||
|
||||
late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeywordPtr =
|
||||
_lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>(
|
||||
'frbgen_moodiary_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword',
|
||||
);
|
||||
late final _rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword =
|
||||
_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeywordPtr
|
||||
.asFunction<void Function(ffi.Pointer<ffi.Void>)>();
|
||||
|
||||
void
|
||||
rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword(
|
||||
ffi.Pointer<ffi.Void> ptr,
|
||||
) {
|
||||
return _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword(
|
||||
ptr,
|
||||
);
|
||||
}
|
||||
|
||||
late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeywordPtr =
|
||||
_lookup<ffi.NativeFunction<ffi.Void Function(ffi.Pointer<ffi.Void>)>>(
|
||||
'frbgen_moodiary_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword',
|
||||
);
|
||||
late final _rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeyword =
|
||||
_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKeywordPtr
|
||||
.asFunction<void Function(ffi.Pointer<ffi.Void>)>();
|
||||
|
||||
void
|
||||
rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp(
|
||||
ffi.Pointer<ffi.Void> ptr,
|
||||
|
||||
@@ -1,774 +0,0 @@
|
||||
// This file is automatically generated, so please do not edit it.
|
||||
// @generated by `flutter_rust_bridge`@ 2.9.0.
|
||||
|
||||
// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field
|
||||
|
||||
// Static analysis wrongly picks the IO variant, thus ignore this
|
||||
// ignore_for_file: argument_type_not_assignable
|
||||
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_web.dart';
|
||||
|
||||
import 'api/aes.dart';
|
||||
import 'api/compress.dart';
|
||||
import 'api/constants.dart';
|
||||
import 'api/font.dart';
|
||||
import 'api/kmp.dart';
|
||||
import 'api/zip.dart';
|
||||
import 'frb_generated.dart';
|
||||
|
||||
abstract class RustLibApiImplPlatform extends BaseApiImpl<RustLibWire> {
|
||||
RustLibApiImplPlatform({
|
||||
required super.handler,
|
||||
required super.wire,
|
||||
required super.generalizedFrbRustBinding,
|
||||
required super.portManager,
|
||||
});
|
||||
|
||||
CrossPlatformFinalizerArg
|
||||
get rust_arc_decrement_strong_count_AesEncryptionPtr =>
|
||||
wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption;
|
||||
|
||||
CrossPlatformFinalizerArg
|
||||
get rust_arc_decrement_strong_count_DynamicImagePtr =>
|
||||
wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage;
|
||||
|
||||
CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_FontReaderPtr =>
|
||||
wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader;
|
||||
|
||||
CrossPlatformFinalizerArg
|
||||
get rust_arc_decrement_strong_count_ImageCompressPtr =>
|
||||
wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress;
|
||||
|
||||
CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_KmpPtr =>
|
||||
wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp;
|
||||
|
||||
CrossPlatformFinalizerArg get rust_arc_decrement_strong_count_ZipPtr =>
|
||||
wire.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip;
|
||||
|
||||
@protected
|
||||
AnyhowException dco_decode_AnyhowException(dynamic raw);
|
||||
|
||||
@protected
|
||||
AesEncryption
|
||||
dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
FontReader
|
||||
dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
ImageCompress
|
||||
dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
Kmp
|
||||
dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
Zip
|
||||
dco_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
Zip
|
||||
dco_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
DynamicImage
|
||||
dco_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
String dco_decode_Char(dynamic raw);
|
||||
|
||||
@protected
|
||||
Map<String, String> dco_decode_Map_String_String_None(dynamic raw);
|
||||
|
||||
@protected
|
||||
Map<String, double> dco_decode_Map_String_f_32_None(dynamic raw);
|
||||
|
||||
@protected
|
||||
AesEncryption
|
||||
dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
DynamicImage
|
||||
dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
FontReader
|
||||
dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
ImageCompress
|
||||
dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
Kmp
|
||||
dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
Zip
|
||||
dco_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip(
|
||||
dynamic raw,
|
||||
);
|
||||
|
||||
@protected
|
||||
String dco_decode_String(dynamic raw);
|
||||
|
||||
@protected
|
||||
CompressFormat dco_decode_box_autoadd_compress_format(dynamic raw);
|
||||
|
||||
@protected
|
||||
int dco_decode_box_autoadd_u_32(dynamic raw);
|
||||
|
||||
@protected
|
||||
int dco_decode_box_autoadd_u_8(dynamic raw);
|
||||
|
||||
@protected
|
||||
CompressFormat dco_decode_compress_format(dynamic raw);
|
||||
|
||||
@protected
|
||||
double dco_decode_f_32(dynamic raw);
|
||||
|
||||
@protected
|
||||
int dco_decode_i_32(dynamic raw);
|
||||
|
||||
@protected
|
||||
List<String> dco_decode_list_Char(dynamic raw);
|
||||
|
||||
@protected
|
||||
List<String> dco_decode_list_String(dynamic raw);
|
||||
|
||||
@protected
|
||||
List<int> dco_decode_list_prim_u_8_loose(dynamic raw);
|
||||
|
||||
@protected
|
||||
Uint8List dco_decode_list_prim_u_8_strict(dynamic raw);
|
||||
|
||||
@protected
|
||||
Uint64List dco_decode_list_prim_usize_strict(dynamic raw);
|
||||
|
||||
@protected
|
||||
List<(String, double)> dco_decode_list_record_string_f_32(dynamic raw);
|
||||
|
||||
@protected
|
||||
List<(String, String)> dco_decode_list_record_string_string(dynamic raw);
|
||||
|
||||
@protected
|
||||
String? dco_decode_opt_String(dynamic raw);
|
||||
|
||||
@protected
|
||||
CompressFormat? dco_decode_opt_box_autoadd_compress_format(dynamic raw);
|
||||
|
||||
@protected
|
||||
int? dco_decode_opt_box_autoadd_u_32(dynamic raw);
|
||||
|
||||
@protected
|
||||
int? dco_decode_opt_box_autoadd_u_8(dynamic raw);
|
||||
|
||||
@protected
|
||||
(String, double) dco_decode_record_string_f_32(dynamic raw);
|
||||
|
||||
@protected
|
||||
(String, String) dco_decode_record_string_string(dynamic raw);
|
||||
|
||||
@protected
|
||||
int dco_decode_u_32(dynamic raw);
|
||||
|
||||
@protected
|
||||
int dco_decode_u_8(dynamic raw);
|
||||
|
||||
@protected
|
||||
void dco_decode_unit(dynamic raw);
|
||||
|
||||
@protected
|
||||
BigInt dco_decode_usize(dynamic raw);
|
||||
|
||||
@protected
|
||||
AnyhowException sse_decode_AnyhowException(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
AesEncryption
|
||||
sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
FontReader
|
||||
sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
ImageCompress
|
||||
sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
Kmp
|
||||
sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
Zip
|
||||
sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
Zip
|
||||
sse_decode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
DynamicImage
|
||||
sse_decode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
String sse_decode_Char(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
Map<String, String> sse_decode_Map_String_String_None(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
Map<String, double> sse_decode_Map_String_f_32_None(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
AesEncryption
|
||||
sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
DynamicImage
|
||||
sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
FontReader
|
||||
sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
ImageCompress
|
||||
sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
Kmp
|
||||
sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
Zip
|
||||
sse_decode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
String sse_decode_String(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
CompressFormat sse_decode_box_autoadd_compress_format(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
int sse_decode_box_autoadd_u_32(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
int sse_decode_box_autoadd_u_8(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
CompressFormat sse_decode_compress_format(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
double sse_decode_f_32(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
int sse_decode_i_32(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
List<String> sse_decode_list_Char(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
List<String> sse_decode_list_String(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
List<int> sse_decode_list_prim_u_8_loose(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
Uint64List sse_decode_list_prim_usize_strict(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
List<(String, double)> sse_decode_list_record_string_f_32(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
List<(String, String)> sse_decode_list_record_string_string(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
String? sse_decode_opt_String(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
CompressFormat? sse_decode_opt_box_autoadd_compress_format(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
int? sse_decode_opt_box_autoadd_u_32(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
int? sse_decode_opt_box_autoadd_u_8(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
(String, double) sse_decode_record_string_f_32(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
(String, String) sse_decode_record_string_string(
|
||||
SseDeserializer deserializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
int sse_decode_u_32(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
int sse_decode_u_8(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
void sse_decode_unit(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
BigInt sse_decode_usize(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
bool sse_decode_bool(SseDeserializer deserializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_AnyhowException(
|
||||
AnyhowException self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption(
|
||||
AesEncryption self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader(
|
||||
FontReader self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress(
|
||||
ImageCompress self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp(
|
||||
Kmp self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip(
|
||||
Zip self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_Auto_RefMut_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip(
|
||||
Zip self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_Auto_Ref_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
DynamicImage self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void sse_encode_Char(String self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_Map_String_String_None(
|
||||
Map<String, String> self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void sse_encode_Map_String_f_32_None(
|
||||
Map<String, double> self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption(
|
||||
AesEncryption self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
DynamicImage self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader(
|
||||
FontReader self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress(
|
||||
ImageCompress self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp(
|
||||
Kmp self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void
|
||||
sse_encode_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip(
|
||||
Zip self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void sse_encode_String(String self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_box_autoadd_compress_format(
|
||||
CompressFormat self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void sse_encode_box_autoadd_u_32(int self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_box_autoadd_u_8(int self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_compress_format(
|
||||
CompressFormat self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void sse_encode_f_32(double self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_i_32(int self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_list_Char(List<String> self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_list_String(List<String> self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_list_prim_u_8_loose(List<int> self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_list_prim_u_8_strict(
|
||||
Uint8List self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void sse_encode_list_prim_usize_strict(
|
||||
Uint64List self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void sse_encode_list_record_string_f_32(
|
||||
List<(String, double)> self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void sse_encode_list_record_string_string(
|
||||
List<(String, String)> self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void sse_encode_opt_String(String? self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_opt_box_autoadd_compress_format(
|
||||
CompressFormat? self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void sse_encode_opt_box_autoadd_u_32(int? self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_opt_box_autoadd_u_8(int? self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_record_string_f_32(
|
||||
(String, double) self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void sse_encode_record_string_string(
|
||||
(String, String) self,
|
||||
SseSerializer serializer,
|
||||
);
|
||||
|
||||
@protected
|
||||
void sse_encode_u_32(int self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_u_8(int self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_unit(void self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_usize(BigInt self, SseSerializer serializer);
|
||||
|
||||
@protected
|
||||
void sse_encode_bool(bool self, SseSerializer serializer);
|
||||
}
|
||||
|
||||
// Section: wire_class
|
||||
|
||||
class RustLibWire implements BaseWire {
|
||||
RustLibWire.fromExternalLibrary(ExternalLibrary lib);
|
||||
|
||||
void
|
||||
rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption(
|
||||
int ptr,
|
||||
) => wasmModule
|
||||
.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption(
|
||||
ptr,
|
||||
);
|
||||
|
||||
void
|
||||
rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption(
|
||||
int ptr,
|
||||
) => wasmModule
|
||||
.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption(
|
||||
ptr,
|
||||
);
|
||||
|
||||
void
|
||||
rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
int ptr,
|
||||
) => wasmModule
|
||||
.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
ptr,
|
||||
);
|
||||
|
||||
void
|
||||
rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
int ptr,
|
||||
) => wasmModule
|
||||
.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
ptr,
|
||||
);
|
||||
|
||||
void
|
||||
rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader(
|
||||
int ptr,
|
||||
) => wasmModule
|
||||
.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader(
|
||||
ptr,
|
||||
);
|
||||
|
||||
void
|
||||
rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader(
|
||||
int ptr,
|
||||
) => wasmModule
|
||||
.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader(
|
||||
ptr,
|
||||
);
|
||||
|
||||
void
|
||||
rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress(
|
||||
int ptr,
|
||||
) => wasmModule
|
||||
.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress(
|
||||
ptr,
|
||||
);
|
||||
|
||||
void
|
||||
rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress(
|
||||
int ptr,
|
||||
) => wasmModule
|
||||
.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress(
|
||||
ptr,
|
||||
);
|
||||
|
||||
void
|
||||
rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp(
|
||||
int ptr,
|
||||
) => wasmModule
|
||||
.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp(
|
||||
ptr,
|
||||
);
|
||||
|
||||
void
|
||||
rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp(
|
||||
int ptr,
|
||||
) => wasmModule
|
||||
.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp(
|
||||
ptr,
|
||||
);
|
||||
|
||||
void
|
||||
rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip(
|
||||
int ptr,
|
||||
) => wasmModule
|
||||
.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip(
|
||||
ptr,
|
||||
);
|
||||
|
||||
void
|
||||
rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip(
|
||||
int ptr,
|
||||
) => wasmModule
|
||||
.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip(
|
||||
ptr,
|
||||
);
|
||||
}
|
||||
|
||||
@JS('wasm_bindgen')
|
||||
external RustLibWasmModule get wasmModule;
|
||||
|
||||
@JS()
|
||||
@anonymous
|
||||
extension type RustLibWasmModule._(JSObject _) implements JSObject {
|
||||
external void
|
||||
rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption(
|
||||
int ptr,
|
||||
);
|
||||
|
||||
external void
|
||||
rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerAesEncryption(
|
||||
int ptr,
|
||||
);
|
||||
|
||||
external void
|
||||
rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
int ptr,
|
||||
);
|
||||
|
||||
external void
|
||||
rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerDynamicImage(
|
||||
int ptr,
|
||||
);
|
||||
|
||||
external void
|
||||
rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader(
|
||||
int ptr,
|
||||
);
|
||||
|
||||
external void
|
||||
rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerFontReader(
|
||||
int ptr,
|
||||
);
|
||||
|
||||
external void
|
||||
rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress(
|
||||
int ptr,
|
||||
);
|
||||
|
||||
external void
|
||||
rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerImageCompress(
|
||||
int ptr,
|
||||
);
|
||||
|
||||
external void
|
||||
rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp(
|
||||
int ptr,
|
||||
);
|
||||
|
||||
external void
|
||||
rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerKmp(
|
||||
int ptr,
|
||||
);
|
||||
|
||||
external void
|
||||
rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip(
|
||||
int ptr,
|
||||
);
|
||||
|
||||
external void
|
||||
rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerZip(
|
||||
int ptr,
|
||||
);
|
||||
}
|
||||
128
pubspec.lock
128
pubspec.lock
@@ -30,14 +30,6 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.11.0"
|
||||
analyzer_plugin:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: analyzer_plugin
|
||||
sha256: "9661b30b13a685efaee9f02e5d01ed9f2b423bd889d28a304d02d704aee69161"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.11.3"
|
||||
animated_stack_widget:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -402,10 +394,10 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: chewie
|
||||
sha256: df6711bc3ba165ad19cb496e350250be5673327f79c61c9cc8a15088ed8007ed
|
||||
sha256: "4d9554a8f87cc2dc6575dfd5ad20a4375015a29edd567fd6733febe6365e2566"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.11.1"
|
||||
version: "1.11.3"
|
||||
cli_util:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -518,22 +510,6 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.8"
|
||||
custom_lint_core:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: custom_lint_core
|
||||
sha256: "02450c3e45e2a6e8b26c4d16687596ab3c4644dd5792e3313aa9ceba5a49b7f5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.0"
|
||||
custom_lint_visitor:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: custom_lint_visitor
|
||||
sha256: bfe9b7a09c4775a587b58d10ebb871d4fe618237639b1e84d5ec62d7dfef25f9
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.0+6.11.0"
|
||||
dart_earcut:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -554,10 +530,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: dart_style
|
||||
sha256: "7306ab8a2359a48d22310ad823521d723acfed60ee1f7e37388e8986853b6820"
|
||||
sha256: "27eb0ae77836989a3bc541ce55595e8ceee0992807f14511552a898ddd0d88ac"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.8"
|
||||
version: "3.0.1"
|
||||
dartx:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -1104,14 +1080,6 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "11.0.0"
|
||||
flutter_riverpod:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_riverpod
|
||||
sha256: "9532ee6db4a943a1ed8383072a2e3eeda041db5657cdf6d2acecf3c21ecbe7e1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.6.1"
|
||||
flutter_rust_bridge:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -1202,14 +1170,22 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.0-dev.3"
|
||||
freezed:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: freezed
|
||||
sha256: "6022db4c7bfa626841b2a10f34dd1e1b68e8f8f9650db6112dcdeeca45ca793c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.6"
|
||||
freezed_annotation:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: freezed_annotation
|
||||
sha256: c2e2d632dd9b8a2b7751117abcfc2b4888ecfe181bd9fca7170d9ef02e595fe2
|
||||
sha256: c87ff004c8aa6af2d531668b46a4ea379f7191dc6dfa066acd53d506da6e044b
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.4"
|
||||
version: "3.0.0"
|
||||
frontend_server_client:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -1567,10 +1543,10 @@ packages:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: json_serializable
|
||||
sha256: c2fcb3920cf2b6ae6845954186420fca40bc0a8abcc84903b7801f17d7050d7c
|
||||
sha256: c50ef5fc083d5b5e12eef489503ba3bf5ccc899e487d691584699b4bdefeea8c
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.9.0"
|
||||
version: "6.9.5"
|
||||
jwt_decode:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -2086,10 +2062,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: posix
|
||||
sha256: a0117dc2167805aa9125b82eee515cc891819bac2f538c83646d355b16f58b9a
|
||||
sha256: f0d7856b6ca1887cfa6d1d394056a296ae33489db914e365e2044fdada449e62
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.0.1"
|
||||
version: "6.0.2"
|
||||
postgrest:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -2306,38 +2282,6 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.2"
|
||||
riverpod:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: riverpod
|
||||
sha256: "59062512288d3056b2321804332a13ffdd1bf16df70dcc8e506e411280a72959"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.6.1"
|
||||
riverpod_analyzer_utils:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: riverpod_analyzer_utils
|
||||
sha256: c6b8222b2b483cb87ae77ad147d6408f400c64f060df7a225b127f4afef4f8c8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.5.8"
|
||||
riverpod_annotation:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: riverpod_annotation
|
||||
sha256: e14b0bf45b71326654e2705d462f21b958f987087be850afd60578fcd502d1b8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.6.1"
|
||||
riverpod_generator:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: riverpod_generator
|
||||
sha256: "63546d70952015f0981361636bf8f356d9cfd9d7f6f0815e3c07789a41233188"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.6.3"
|
||||
rxdart:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -2512,13 +2456,13 @@ packages:
|
||||
source: hosted
|
||||
version: "1.2.1"
|
||||
source_gen:
|
||||
dependency: transitive
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
name: source_gen
|
||||
sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832"
|
||||
sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.5.0"
|
||||
version: "2.0.0"
|
||||
source_helper:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -2591,14 +2535,6 @@ packages:
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.12.1"
|
||||
state_notifier:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: state_notifier
|
||||
sha256: b8677376aa54f2d7c58280d5a007f9e8774f1968d1fb1c096adcb4792fba29bb
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
storage_client:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -2899,10 +2835,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: video_player_avfoundation
|
||||
sha256: "84b4752745eeccb6e75865c9aab39b3d28eb27ba5726d352d45db8297fbd75bc"
|
||||
sha256: "9ee764e5cd2fc1e10911ae8ad588e1a19db3b6aa9a6eb53c127c42d3a3c3f22f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.7.0"
|
||||
version: "2.7.1"
|
||||
video_player_media_kit:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -2952,21 +2888,21 @@ packages:
|
||||
source: hosted
|
||||
version: "3.3.3"
|
||||
wakelock_plus:
|
||||
dependency: transitive
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: wakelock_plus
|
||||
sha256: b90fbcc8d7bdf3b883ea9706d9d76b9978cb1dfa4351fcc8014d6ec31a493354
|
||||
sha256: b6962cd9fc15e4843b573ba7b53bc46dd8a787594cf9ed5c5182581924656a58
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.11"
|
||||
version: "1.3.1"
|
||||
wakelock_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: wakelock_plus_platform_interface
|
||||
sha256: "70e780bc99796e1db82fe764b1e7dcb89a86f1e5b3afb1db354de50f2e41eb7a"
|
||||
sha256: e10444072e50dbc4999d7316fd303f7ea53d31c824aa5eb05d7ccbdd98985207
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.2"
|
||||
version: "1.2.3"
|
||||
watcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -2995,18 +2931,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web_socket
|
||||
sha256: "3c12d96c0c9a4eec095246debcea7b86c0324f22df69893d538fcc6f1b8cce83"
|
||||
sha256: bfe6f435f6ec49cb6c01da1e275ae4228719e59a6b067048c51e72d9d63bcc4b
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.1.6"
|
||||
version: "1.0.0"
|
||||
web_socket_channel:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web_socket_channel
|
||||
sha256: "0b8e2457400d8a859b7b2030786835a28a8e80836ef64402abef392ff4f1d0e5"
|
||||
sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.2"
|
||||
version: "3.0.3"
|
||||
webdav_client:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
||||
15
pubspec.yaml
15
pubspec.yaml
@@ -81,7 +81,7 @@ dependencies:
|
||||
image_picker_android: 0.8.12+22
|
||||
video_player_media_kit: 1.0.6
|
||||
video_player: 2.9.5
|
||||
chewie: 1.11.1
|
||||
chewie: 1.11.3
|
||||
flutter_markdown: 0.7.7
|
||||
image_picker_platform_interface: 2.10.1
|
||||
flutter_image_compress: 2.4.0
|
||||
@@ -113,10 +113,6 @@ dependencies:
|
||||
photo_view: 0.15.0
|
||||
dartx: 1.2.0
|
||||
material_color_utilities: 0.11.1
|
||||
flutter_riverpod: 2.6.1
|
||||
riverpod_annotation: 2.6.1
|
||||
freezed_annotation: 2.4.4
|
||||
json_annotation: 4.9.0
|
||||
audioplayers_android_exo: 0.1.2
|
||||
scrollview_observer: 1.26.0
|
||||
flutter_smart_dialog: 4.9.8+7
|
||||
@@ -129,6 +125,9 @@ dependencies:
|
||||
hive_ce: 2.10.1
|
||||
hive_ce_flutter: 2.2.0
|
||||
flutter_modular: 6.3.4
|
||||
freezed_annotation: 3.0.0
|
||||
json_annotation: 4.9.0
|
||||
wakelock_plus: 1.3.1
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
@@ -137,11 +136,13 @@ dev_dependencies:
|
||||
flutter_launcher_icons: 0.14.3
|
||||
msix: 3.16.8
|
||||
flutter_lints: 5.0.0
|
||||
riverpod_generator: 2.6.3
|
||||
json_serializable: 6.9.0
|
||||
flutter_gen: 5.10.0
|
||||
flutter_gen_runner: 5.10.0
|
||||
freezed: 3.0.6
|
||||
json_serializable: 6.9.5
|
||||
|
||||
dependency_overrides:
|
||||
source_gen: 2.0.0
|
||||
|
||||
|
||||
flutter_launcher_icons:
|
||||
|
||||
312
rust/Cargo.lock
generated
312
rust/Cargo.lock
generated
@@ -17,6 +17,12 @@ version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627"
|
||||
|
||||
[[package]]
|
||||
name = "adler32"
|
||||
version = "1.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234"
|
||||
|
||||
[[package]]
|
||||
name = "aes"
|
||||
version = "0.8.4"
|
||||
@@ -28,6 +34,18 @@ dependencies = [
|
||||
"cpufeatures",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ahash"
|
||||
version = "0.8.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"once_cell",
|
||||
"version_check",
|
||||
"zerocopy 0.7.35",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "aho-corasick"
|
||||
version = "1.1.3"
|
||||
@@ -54,6 +72,12 @@ dependencies = [
|
||||
"backtrace",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "allocator-api2"
|
||||
version = "0.2.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
|
||||
|
||||
[[package]]
|
||||
name = "android_log-sys"
|
||||
version = "0.3.2"
|
||||
@@ -253,6 +277,15 @@ dependencies = [
|
||||
"shlex",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cedarwood"
|
||||
version = "0.4.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6d910bedd62c24733263d0bed247460853c9d22e8956bd4cd964302095e04e90"
|
||||
dependencies = [
|
||||
"smallvec",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cfg-expr"
|
||||
version = "0.15.8"
|
||||
@@ -301,6 +334,15 @@ version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6"
|
||||
|
||||
[[package]]
|
||||
name = "core2"
|
||||
version = "0.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b49ba7ef1ad6107f8824dbe97de947cbaac53c44e7f9756a1fba0d37c1eec505"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cpufeatures"
|
||||
version = "0.2.17"
|
||||
@@ -375,6 +417,41 @@ dependencies = [
|
||||
"typenum",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "darling"
|
||||
version = "0.20.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee"
|
||||
dependencies = [
|
||||
"darling_core",
|
||||
"darling_macro",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "darling_core"
|
||||
version = "0.20.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e"
|
||||
dependencies = [
|
||||
"fnv",
|
||||
"ident_case",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"strsim",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "darling_macro"
|
||||
version = "0.20.11"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead"
|
||||
dependencies = [
|
||||
"darling_core",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dart-sys"
|
||||
version = "4.1.5"
|
||||
@@ -384,6 +461,12 @@ dependencies = [
|
||||
"cc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "dary_heap"
|
||||
version = "0.3.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "04d2cd9c18b9f454ed67da600630b021a8a80bf33f8c95896ab33aaf1c26b728"
|
||||
|
||||
[[package]]
|
||||
name = "dashmap"
|
||||
version = "4.0.2"
|
||||
@@ -431,6 +514,37 @@ dependencies = [
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "derive_builder"
|
||||
version = "0.20.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947"
|
||||
dependencies = [
|
||||
"derive_builder_macro",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "derive_builder_core"
|
||||
version = "0.20.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8"
|
||||
dependencies = [
|
||||
"darling",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "derive_builder_macro"
|
||||
version = "0.20.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c"
|
||||
dependencies = [
|
||||
"derive_builder_core",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "digest"
|
||||
version = "0.10.7"
|
||||
@@ -563,6 +677,12 @@ dependencies = [
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fnv"
|
||||
version = "1.0.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
||||
|
||||
[[package]]
|
||||
name = "futures"
|
||||
version = "0.3.31"
|
||||
@@ -652,6 +772,15 @@ dependencies = [
|
||||
"slab",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "fxhash"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "generic-array"
|
||||
version = "0.14.7"
|
||||
@@ -713,6 +842,16 @@ dependencies = [
|
||||
"crunchy",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.14.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
|
||||
dependencies = [
|
||||
"ahash",
|
||||
"allocator-api2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "hashbrown"
|
||||
version = "0.15.2"
|
||||
@@ -746,6 +885,12 @@ dependencies = [
|
||||
"digest",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ident_case"
|
||||
version = "1.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
||||
|
||||
[[package]]
|
||||
name = "image"
|
||||
version = "0.25.6"
|
||||
@@ -785,6 +930,29 @@ version = "1.11.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d0263a3d970d5c054ed9312c0057b4f3bde9c0b33836d3637361d4a9e6e7a408"
|
||||
|
||||
[[package]]
|
||||
name = "include-flate"
|
||||
version = "0.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "df49c16750695486c1f34de05da5b7438096156466e7f76c38fcdf285cf0113e"
|
||||
dependencies = [
|
||||
"include-flate-codegen",
|
||||
"lazy_static",
|
||||
"libflate",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "include-flate-codegen"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8c5b246c6261be723b85c61ecf87804e8ea4a35cb68be0ff282ed84b95ffe7d7"
|
||||
dependencies = [
|
||||
"libflate",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "indexmap"
|
||||
version = "2.9.0"
|
||||
@@ -792,7 +960,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e"
|
||||
dependencies = [
|
||||
"equivalent",
|
||||
"hashbrown",
|
||||
"hashbrown 0.15.2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -824,6 +992,32 @@ dependencies = [
|
||||
"either",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "jieba-macros"
|
||||
version = "0.7.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7c676b32a471d3cfae8dac2ad2f8334cd52e53377733cca8c1fb0a5062fec192"
|
||||
dependencies = [
|
||||
"phf_codegen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "jieba-rs"
|
||||
version = "0.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6d1bcad6332969e4d48ee568d430e14ee6dea70740c2549d005d87677ebefb0c"
|
||||
dependencies = [
|
||||
"cedarwood",
|
||||
"derive_builder",
|
||||
"fxhash",
|
||||
"include-flate",
|
||||
"jieba-macros",
|
||||
"lazy_static",
|
||||
"ordered-float",
|
||||
"phf",
|
||||
"regex",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "jobserver"
|
||||
version = "0.1.33"
|
||||
@@ -868,6 +1062,30 @@ version = "0.2.172"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa"
|
||||
|
||||
[[package]]
|
||||
name = "libflate"
|
||||
version = "2.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "45d9dfdc14ea4ef0900c1cddbc8dcd553fbaacd8a4a282cf4018ae9dd04fb21e"
|
||||
dependencies = [
|
||||
"adler32",
|
||||
"core2",
|
||||
"crc32fast",
|
||||
"dary_heap",
|
||||
"libflate_lz77",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libflate_lz77"
|
||||
version = "2.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e6e0d73b369f386f1c44abd9c570d5318f55ccde816ff4b562fa452e5182863d"
|
||||
dependencies = [
|
||||
"core2",
|
||||
"hashbrown 0.14.5",
|
||||
"rle-decode-fast",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "libfuzzer-sys"
|
||||
version = "0.4.9"
|
||||
@@ -976,7 +1194,10 @@ dependencies = [
|
||||
"fast_image_resize",
|
||||
"flutter_rust_bridge",
|
||||
"image",
|
||||
"jieba-rs",
|
||||
"once_cell",
|
||||
"ring",
|
||||
"tokio",
|
||||
"ttf-parser",
|
||||
"walkdir",
|
||||
"zip",
|
||||
@@ -1085,6 +1306,15 @@ version = "1.21.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
|
||||
|
||||
[[package]]
|
||||
name = "ordered-float"
|
||||
version = "4.6.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951"
|
||||
dependencies = [
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "oslog"
|
||||
version = "0.1.0"
|
||||
@@ -1112,6 +1342,44 @@ dependencies = [
|
||||
"hmac",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "phf"
|
||||
version = "0.11.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
|
||||
dependencies = [
|
||||
"phf_shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "phf_codegen"
|
||||
version = "0.11.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a"
|
||||
dependencies = [
|
||||
"phf_generator",
|
||||
"phf_shared",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "phf_generator"
|
||||
version = "0.11.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
|
||||
dependencies = [
|
||||
"phf_shared",
|
||||
"rand",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "phf_shared"
|
||||
version = "0.11.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5"
|
||||
dependencies = [
|
||||
"siphasher",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pin-project-lite"
|
||||
version = "0.2.16"
|
||||
@@ -1161,7 +1429,7 @@ version = "0.2.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
|
||||
dependencies = [
|
||||
"zerocopy",
|
||||
"zerocopy 0.8.24",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1371,6 +1639,12 @@ dependencies = [
|
||||
"windows-sys 0.52.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rle-decode-fast"
|
||||
version = "1.0.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422"
|
||||
|
||||
[[package]]
|
||||
name = "rustc-demangle"
|
||||
version = "0.1.24"
|
||||
@@ -1453,6 +1727,12 @@ dependencies = [
|
||||
"quote",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "siphasher"
|
||||
version = "1.0.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d"
|
||||
|
||||
[[package]]
|
||||
name = "slab"
|
||||
version = "0.4.9"
|
||||
@@ -1468,6 +1748,12 @@ version = "1.15.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9"
|
||||
|
||||
[[package]]
|
||||
name = "strsim"
|
||||
version = "0.11.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f"
|
||||
|
||||
[[package]]
|
||||
name = "subtle"
|
||||
version = "2.6.1"
|
||||
@@ -1883,13 +2169,33 @@ dependencies = [
|
||||
"lzma-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy"
|
||||
version = "0.7.35"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
|
||||
dependencies = [
|
||||
"zerocopy-derive 0.7.35",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy"
|
||||
version = "0.8.24"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879"
|
||||
dependencies = [
|
||||
"zerocopy-derive",
|
||||
"zerocopy-derive 0.8.24",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy-derive"
|
||||
version = "0.7.35"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
||||
@@ -15,6 +15,9 @@ ttf-parser = { git = "https://github.com/ZhuJHua/ttf-parser", branch = "fvar" }
|
||||
ring = "0.17.14"
|
||||
zip = "2.6.1"
|
||||
walkdir = "2.5.0"
|
||||
jieba-rs = { version = "0.7.2", features = ["default-dict", "tfidf", "textrank"] }
|
||||
once_cell = "1.21.3"
|
||||
tokio = "1.44.2"
|
||||
|
||||
[lints.rust]
|
||||
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(frb_expand)'] }
|
||||
|
||||
@@ -16,7 +16,7 @@ use image::{
|
||||
|
||||
use super::constants::CompressFormat;
|
||||
|
||||
pub fn compress(
|
||||
fn compress(
|
||||
img: &DynamicImage,
|
||||
dst_height: u32,
|
||||
dst_width: u32,
|
||||
@@ -84,7 +84,10 @@ impl ImageCompress {
|
||||
max_height: Option<u32>,
|
||||
quality: Option<u8>,
|
||||
) -> Result<Vec<u8>> {
|
||||
let src_img = Self::load_image(&file_path)?;
|
||||
let src_img = ImageReader::open(file_path)?
|
||||
.with_guessed_format()?
|
||||
.decode()
|
||||
.map_err(|e| anyhow::anyhow!("Failed to decode image: {}", e))?;
|
||||
let compress_format = compress_format.unwrap_or(CompressFormat::Jpeg);
|
||||
let quality = quality.unwrap_or(80);
|
||||
|
||||
@@ -137,13 +140,6 @@ impl ImageCompress {
|
||||
(max_width, (img_height as f64 * ratio).round() as u32)
|
||||
}
|
||||
}
|
||||
|
||||
fn load_image(file_path: &str) -> Result<DynamicImage> {
|
||||
ImageReader::open(file_path)?
|
||||
.with_guessed_format()?
|
||||
.decode()
|
||||
.map_err(|e| anyhow::anyhow!("Failed to decode image: {}", e))
|
||||
}
|
||||
}
|
||||
pub struct ResizeOptions {
|
||||
pub target_width: Option<u32>,
|
||||
|
||||
126
rust/src/api/jieba.rs
Normal file
126
rust/src/api/jieba.rs
Normal file
@@ -0,0 +1,126 @@
|
||||
use anyhow::{Context, Ok, Result};
|
||||
use flutter_rust_bridge::frb;
|
||||
use jieba_rs::{Jieba, KeywordExtract, TextRank, TfIdf};
|
||||
use once_cell::sync::OnceCell;
|
||||
use std::collections::HashSet;
|
||||
use std::sync::Arc;
|
||||
use tokio::sync::OnceCell as AsyncOnceCell;
|
||||
|
||||
#[frb(opaque)]
|
||||
pub struct JiebaRs {
|
||||
inner: Jieba,
|
||||
tfidf: OnceCell<TfIdf>,
|
||||
text_rank: OnceCell<TextRank>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
#[frb(opaque)]
|
||||
pub struct Keyword {
|
||||
pub keyword: String,
|
||||
pub weight: f64,
|
||||
}
|
||||
|
||||
static GLOBAL_JIEBA: AsyncOnceCell<Arc<JiebaRs>> = AsyncOnceCell::const_new();
|
||||
|
||||
#[frb(init)]
|
||||
pub async fn init_jieba() {
|
||||
JiebaRs::init_global().await;
|
||||
}
|
||||
|
||||
impl JiebaRs {
|
||||
fn new() -> Self {
|
||||
Self {
|
||||
inner: Jieba::new(),
|
||||
tfidf: OnceCell::new(),
|
||||
text_rank: OnceCell::new(),
|
||||
}
|
||||
}
|
||||
|
||||
async fn init_global() {
|
||||
GLOBAL_JIEBA
|
||||
.get_or_init(|| async {
|
||||
let instance = JiebaRs::new();
|
||||
Arc::new(instance)
|
||||
})
|
||||
.await;
|
||||
}
|
||||
|
||||
fn get_instance() -> Result<Arc<JiebaRs>> {
|
||||
GLOBAL_JIEBA
|
||||
.get()
|
||||
.cloned()
|
||||
.context("JiebaRs is not initialized. Please call init_global() first.")
|
||||
}
|
||||
|
||||
pub fn cut(text: String, hmm: bool) -> Result<Vec<String>> {
|
||||
let jieba = Self::get_instance()?;
|
||||
Ok(jieba
|
||||
.inner
|
||||
.cut(&text, hmm)
|
||||
.iter()
|
||||
.map(|s| s.to_string())
|
||||
.collect())
|
||||
}
|
||||
|
||||
pub fn cut_all(text: String) -> Result<Vec<String>> {
|
||||
let jieba = Self::get_instance()?;
|
||||
let result: HashSet<String> = jieba
|
||||
.inner
|
||||
.cut_all(&text)
|
||||
.iter()
|
||||
.map(|s| s.to_string())
|
||||
.collect();
|
||||
Ok(result.into_iter().collect())
|
||||
}
|
||||
|
||||
pub fn cut_for_search(text: String, hmm: bool) -> Result<Vec<String>> {
|
||||
let jieba = Self::get_instance()?;
|
||||
let result: HashSet<String> = jieba
|
||||
.inner
|
||||
.cut_for_search(&text, hmm)
|
||||
.iter()
|
||||
.map(|s| s.to_string())
|
||||
.collect();
|
||||
Ok(result.into_iter().collect())
|
||||
}
|
||||
|
||||
pub fn extract_keywords_tfidf(
|
||||
text: String,
|
||||
top_k: usize,
|
||||
allowed_pos: Vec<String>,
|
||||
) -> Result<Vec<Keyword>> {
|
||||
let jieba = Self::get_instance()?;
|
||||
let tfidf = jieba
|
||||
.tfidf
|
||||
.get_or_try_init(|| Ok(TfIdf::default()))
|
||||
.context("Failed to initialize TF-IDF")?;
|
||||
|
||||
let keywords = tfidf.extract_keywords(&jieba.inner, &text, top_k, allowed_pos);
|
||||
Ok(Self::convert_keywords(keywords))
|
||||
}
|
||||
|
||||
pub fn extract_keywords_text_rank(
|
||||
text: String,
|
||||
top_k: usize,
|
||||
allowed_pos: Vec<String>,
|
||||
) -> Result<Vec<Keyword>> {
|
||||
let jieba = Self::get_instance()?;
|
||||
let text_rank = jieba
|
||||
.text_rank
|
||||
.get_or_try_init(|| Ok(TextRank::default()))
|
||||
.context("Failed to initialize TextRank")?;
|
||||
|
||||
let keywords = text_rank.extract_keywords(&jieba.inner, &text, top_k, allowed_pos);
|
||||
Ok(Self::convert_keywords(keywords))
|
||||
}
|
||||
|
||||
fn convert_keywords(keywords: Vec<jieba_rs::Keyword>) -> Vec<Keyword> {
|
||||
keywords
|
||||
.into_iter()
|
||||
.map(|k| Keyword {
|
||||
keyword: k.keyword,
|
||||
weight: k.weight,
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
}
|
||||
@@ -3,4 +3,5 @@ pub mod constants;
|
||||
pub mod kmp;
|
||||
pub mod font;
|
||||
pub mod aes;
|
||||
pub mod zip;
|
||||
pub mod zip;
|
||||
pub mod jieba;
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user