Showing preview only (4,693K chars total). Download the full file or copy to clipboard to get everything.
Repository: wgh136/PicaComic
Branch: master
Commit: 155cf0c6d701
Files: 308
Total size: 3.9 MB
Directory structure:
gitextract_6bcc69h2/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug.yaml
│ │ ├── enhancement.yaml
│ │ └── other.yaml
│ └── workflows/
│ ├── delete_old_workflows.yml
│ ├── ios_simulator.yml
│ ├── linux.yml
│ └── main.yml
├── .gitignore
├── .metadata
├── LICENSE
├── README.md
├── analysis_options.yaml
├── android/
│ ├── .gitignore
│ ├── app/
│ │ ├── build.gradle
│ │ └── src/
│ │ ├── debug/
│ │ │ └── AndroidManifest.xml
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── kokoiro/
│ │ │ │ └── xyz/
│ │ │ │ └── pica_comic/
│ │ │ │ └── MainActivity.kt
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── launch_background.xml
│ │ │ ├── drawable-v21/
│ │ │ │ └── launch_background.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ └── ic_launcher.xml
│ │ │ ├── values/
│ │ │ │ └── styles.xml
│ │ │ └── values-night/
│ │ │ └── styles.xml
│ │ └── profile/
│ │ └── AndroidManifest.xml
│ ├── build.gradle
│ ├── gradle/
│ │ └── wrapper/
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ └── settings.gradle
├── assets/
│ ├── init.js
│ ├── tags.json
│ ├── tags_tw.json
│ └── translation.json
├── debian/
│ ├── build.py
│ ├── debian.yaml
│ └── gui/
│ └── pica-comic.desktop
├── doc/
│ ├── comic_source.md
│ └── hosts.md
├── ios/
│ ├── .gitignore
│ ├── Flutter/
│ │ ├── AppFrameworkInfo.plist
│ │ ├── Debug.xcconfig
│ │ └── Release.xcconfig
│ ├── Podfile
│ ├── Runner/
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets/
│ │ │ ├── AppIcon.appiconset/
│ │ │ │ └── Contents.json
│ │ │ └── LaunchImage.imageset/
│ │ │ ├── Contents.json
│ │ │ └── README.md
│ │ ├── Base.lproj/
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── Runner-Bridging-Header.h
│ ├── Runner.xcodeproj/
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace/
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata/
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ │ └── xcshareddata/
│ │ └── xcschemes/
│ │ └── Runner.xcscheme
│ └── Runner.xcworkspace/
│ ├── contents.xcworkspacedata
│ └── xcshareddata/
│ ├── IDEWorkspaceChecks.plist
│ └── WorkspaceSettings.xcsettings
├── lib/
│ ├── base.dart
│ ├── comic_source/
│ │ ├── app_build_in_category.dart
│ │ ├── app_build_in_favorites.dart
│ │ ├── built_in/
│ │ │ ├── ehentai.dart
│ │ │ ├── hitomi.dart
│ │ │ ├── ht_manga.dart
│ │ │ ├── jm.dart
│ │ │ ├── nhentai.dart
│ │ │ └── picacg.dart
│ │ ├── category.dart
│ │ ├── comic_source.dart
│ │ ├── favorites.dart
│ │ └── parser.dart
│ ├── components/
│ │ ├── animated_image.dart
│ │ ├── appbar.dart
│ │ ├── avatar.dart
│ │ ├── button.dart
│ │ ├── comic_tile.dart
│ │ ├── comics_list.dart
│ │ ├── comment.dart
│ │ ├── components.dart
│ │ ├── consts.dart
│ │ ├── custom_slider.dart
│ │ ├── flyout.dart
│ │ ├── layout.dart
│ │ ├── loading.dart
│ │ ├── menu.dart
│ │ ├── message.dart
│ │ ├── navigation_bar.dart
│ │ ├── pop_up_widget.dart
│ │ ├── scroll.dart
│ │ ├── scrollable_list/
│ │ │ ├── scrollable_positioned_list.dart
│ │ │ └── src/
│ │ │ ├── element_registry.dart
│ │ │ ├── item_positions_listener.dart
│ │ │ ├── item_positions_notifier.dart
│ │ │ ├── positioned_list.dart
│ │ │ ├── post_mount_callback.dart
│ │ │ ├── scroll_view.dart
│ │ │ ├── scrollable_positioned_list.dart
│ │ │ ├── viewport.dart
│ │ │ └── wrapping.dart
│ │ ├── select.dart
│ │ ├── select_download_eps.dart
│ │ ├── side_bar.dart
│ │ └── window_frame.dart
│ ├── foundation/
│ │ ├── app.dart
│ │ ├── app_page_route.dart
│ │ ├── cache_manager.dart
│ │ ├── def.dart
│ │ ├── history.dart
│ │ ├── image_favorites.dart
│ │ ├── image_loader/
│ │ │ ├── base_image_provider.dart
│ │ │ ├── cached_image.dart
│ │ │ ├── file_image_loader.dart
│ │ │ ├── image_recombine.dart
│ │ │ └── stream_image_provider.dart
│ │ ├── image_manager.dart
│ │ ├── js_engine.dart
│ │ ├── local_favorites.dart
│ │ ├── log.dart
│ │ ├── pair.dart
│ │ ├── stack.dart
│ │ ├── state_controller.dart
│ │ ├── ui_mode.dart
│ │ └── widget_utils.dart
│ ├── init.dart
│ ├── main.dart
│ ├── network/
│ │ ├── app_dio.dart
│ │ ├── base_comic.dart
│ │ ├── cache_network.dart
│ │ ├── cloudflare.dart
│ │ ├── cookie_jar.dart
│ │ ├── custom_download_model.dart
│ │ ├── download.dart
│ │ ├── download_model.dart
│ │ ├── eh_network/
│ │ │ ├── eh_download_model.dart
│ │ │ ├── eh_main_network.dart
│ │ │ ├── eh_models.dart
│ │ │ └── get_gallery_id.dart
│ │ ├── favorite_download.dart
│ │ ├── file_downloader.dart
│ │ ├── hitomi_network/
│ │ │ ├── fetch_data.dart
│ │ │ ├── hitomi_download_model.dart
│ │ │ ├── hitomi_main_network.dart
│ │ │ ├── hitomi_models.dart
│ │ │ ├── image.dart
│ │ │ └── search.dart
│ │ ├── htmanga_network/
│ │ │ ├── ht_download_model.dart
│ │ │ ├── htmanga_main_network.dart
│ │ │ └── models.dart
│ │ ├── http_client.dart
│ │ ├── http_proxy.dart
│ │ ├── jm_network/
│ │ │ ├── headers.dart
│ │ │ ├── jm_download.dart
│ │ │ ├── jm_image.dart
│ │ │ ├── jm_models.dart
│ │ │ └── jm_network.dart
│ │ ├── net_fav_to_local.dart
│ │ ├── nhentai_network/
│ │ │ ├── download.dart
│ │ │ ├── login.dart
│ │ │ ├── models.dart
│ │ │ ├── nhentai_main_network.dart
│ │ │ └── tags.dart
│ │ ├── picacg_network/
│ │ │ ├── headers.dart
│ │ │ ├── methods.dart
│ │ │ ├── models.dart
│ │ │ └── picacg_download_model.dart
│ │ ├── res.dart
│ │ ├── update.dart
│ │ └── webdav.dart
│ ├── pages/
│ │ ├── accounts_page.dart
│ │ ├── auth_page.dart
│ │ ├── category_comics_page.dart
│ │ ├── category_page.dart
│ │ ├── comic_page.dart
│ │ ├── download_page.dart
│ │ ├── downloading_page.dart
│ │ ├── ehentai/
│ │ │ ├── accounts.dart
│ │ │ ├── eh_comments_page.dart
│ │ │ ├── eh_gallery_page.dart
│ │ │ ├── eh_login_page.dart
│ │ │ ├── eh_user_cookie_parser.dart
│ │ │ └── subscription.dart
│ │ ├── explore_page.dart
│ │ ├── favorites/
│ │ │ ├── local_favorites.dart
│ │ │ ├── local_search_page.dart
│ │ │ ├── main_favorites_page.dart
│ │ │ ├── network_favorite_page.dart
│ │ │ └── network_to_local.dart
│ │ ├── history_page.dart
│ │ ├── hitomi/
│ │ │ ├── hitomi_comic_page.dart
│ │ │ ├── hitomi_home_page.dart
│ │ │ └── hitomi_search.dart
│ │ ├── htmanga/
│ │ │ └── ht_comic_page.dart
│ │ ├── image_favorites.dart
│ │ ├── jm/
│ │ │ ├── jm_comic_page.dart
│ │ │ ├── jm_comments_page.dart
│ │ │ └── week_recommendation_page.dart
│ │ ├── logs_page.dart
│ │ ├── main_page.dart
│ │ ├── me_page.dart
│ │ ├── nhentai/
│ │ │ ├── comic_page.dart
│ │ │ └── comments.dart
│ │ ├── picacg/
│ │ │ ├── collections_page.dart
│ │ │ ├── comic_page.dart
│ │ │ └── comments_page.dart
│ │ ├── pre_search_page.dart
│ │ ├── ranking_page.dart
│ │ ├── reader/
│ │ │ ├── comic_reading_page.dart
│ │ │ ├── eps_view.dart
│ │ │ ├── image.dart
│ │ │ ├── image_view.dart
│ │ │ ├── reading_data.dart
│ │ │ ├── reading_logic.dart
│ │ │ ├── reading_settings.dart
│ │ │ ├── reading_type.dart
│ │ │ ├── tool_bar.dart
│ │ │ └── touch_control.dart
│ │ ├── search_result_page.dart
│ │ ├── settings/
│ │ │ ├── app_settings.dart
│ │ │ ├── blocking_keyword_page.dart
│ │ │ ├── comic_source_settings.dart
│ │ │ ├── components.dart
│ │ │ ├── eh_settings.dart
│ │ │ ├── explore_settings.dart
│ │ │ ├── ht_settings.dart
│ │ │ ├── jm_settings.dart
│ │ │ ├── local_favorite_settings.dart
│ │ │ ├── multi_pages_filter.dart
│ │ │ ├── network_setting.dart
│ │ │ ├── picacg_settings.dart
│ │ │ ├── reading_settings.dart
│ │ │ └── settings_page.dart
│ │ ├── show_image_page.dart
│ │ ├── tools.dart
│ │ ├── webview.dart
│ │ └── welcome_page.dart
│ └── tools/
│ ├── app_links.dart
│ ├── background_service.dart
│ ├── block_screenshot.dart
│ ├── cache_auto_clear.dart
│ ├── debug.dart
│ ├── extensions.dart
│ ├── file_type.dart
│ ├── io_extensions.dart
│ ├── io_tools.dart
│ ├── js.dart
│ ├── keep_screen_on.dart
│ ├── key_down_event.dart
│ ├── mouse_listener.dart
│ ├── notification.dart
│ ├── pdf.dart
│ ├── save_image.dart
│ ├── tags_translation.dart
│ ├── time.dart
│ └── translations.dart
├── linux/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── flutter/
│ │ ├── CMakeLists.txt
│ │ ├── generated_plugin_registrant.cc
│ │ ├── generated_plugin_registrant.h
│ │ └── generated_plugins.cmake
│ ├── main.cc
│ ├── my_application.cc
│ └── my_application.h
├── macos/
│ ├── .gitignore
│ ├── Flutter/
│ │ ├── Flutter-Debug.xcconfig
│ │ └── Flutter-Release.xcconfig
│ ├── Podfile
│ ├── Runner/
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets/
│ │ │ └── AppIcon.appiconset/
│ │ │ └── Contents.json
│ │ ├── Base.lproj/
│ │ │ └── MainMenu.xib
│ │ ├── Configs/
│ │ │ ├── AppInfo.xcconfig
│ │ │ ├── Debug.xcconfig
│ │ │ ├── Release.xcconfig
│ │ │ └── Warnings.xcconfig
│ │ ├── DebugProfile.entitlements
│ │ ├── Info.plist
│ │ ├── MainFlutterWindow.swift
│ │ └── Release.entitlements
│ ├── Runner.xcodeproj/
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace/
│ │ │ └── xcshareddata/
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcshareddata/
│ │ └── xcschemes/
│ │ └── Runner.xcscheme
│ └── Runner.xcworkspace/
│ ├── contents.xcworkspacedata
│ └── xcshareddata/
│ └── IDEWorkspaceChecks.plist
├── pubspec.yaml
├── test/
│ └── widget_test.dart
├── utils/
│ ├── check_translation.dart
│ └── tags_translation.dart
├── web/
│ ├── index.html
│ └── manifest.json
└── windows/
├── .gitignore
├── CMakeLists.txt
├── build.iss
├── build_windows.py
├── flutter/
│ ├── CMakeLists.txt
│ ├── generated_plugin_registrant.cc
│ ├── generated_plugin_registrant.h
│ └── generated_plugins.cmake
└── runner/
├── CMakeLists.txt
├── RCa13944
├── Runner.rc
├── flutter_window.cpp
├── flutter_window.h
├── main.cpp
├── resource.h
├── runner.exe.manifest
├── utils.cpp
├── utils.h
├── win32_window.cpp
└── win32_window.h
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/ISSUE_TEMPLATE/bug.yaml
================================================
name: 报告Bug/Report a bug
description: 报告APP出现的问题/Reporting problems with the APP
title: "[Bug]: "
labels: ["bug🐞"]
body:
- type: markdown
attributes:
value: |
感谢报告问题, 请先补全标题后填写以下信息.
Thank you for reporting a problem, please complete the title and fill in the following information.
- type: textarea
id: what-happened
attributes:
label: 描述/Description
description: 描述问题/Describe the problem
validations:
required: true
- type: input
id: version
attributes:
label: Version
description: |
使用的APP版本/App version
非最新版本请尝试更新/Please try to update if it is not the latest version
validations:
required: true
- type: dropdown
id: platform
attributes:
label: 使用的操作系统/Operating system
multiple: true
options:
- Android
- iOS
- Windows
- macOS
- other
validations:
required: true
- type: textarea
id: logs
attributes:
label: 日志/logs
description: 上传日志, 在设置-logs中, 点击右上角的菜单后, 点击导出日志; 或者将错误相关日志粘贴到这里
- type: textarea
id: screenshotOrVideo
attributes:
label: 截图或视频/Screenshot or video
description: 在这里上传相关的屏幕截图或者视频/Upload relevant screenshots or videos here
================================================
FILE: .github/ISSUE_TEMPLATE/enhancement.yaml
================================================
name: 功能建议/Feature Request
description: 提出改进APP的建议/Suggest improvements to the APP
title: "[Enhancement]: "
labels: ["enhancement🚀"]
body:
- type: markdown
attributes:
value: |
欢迎提出功能建议, 请先补全标题后填写以下信息.
Welcome to make a feature request, please fill in the following information after completing the title.
- type: textarea
id: what-happened
attributes:
label: 描述/Description
description: 描述具体的建议/Describe your suggestion.
validations:
required: true
- type: dropdown
id: platform
attributes:
label: 操作系统/Operating System
description: 如果建议针对某个平台, 请在此选择/If the feature is for a particular platform, please select here
multiple: true
options:
- Android
- iOS
- Windows
- macOS
- other
validations:
required: false
- type: textarea
id: screenshotOrVideo
attributes:
label: 图片/picture
description: 如果需要图片描述, 请在这里上传/If you need a picture description, please upload it here.
================================================
FILE: .github/ISSUE_TEMPLATE/other.yaml
================================================
name: 其它/other
description: 其它内容/Other contents
body:
- type: markdown
attributes:
value: |
如果你想报告App运行时出现的问题(无法查看某个漫画源, 无法登录, 某个功能无法使用等情况), 请切换到报告Bug模板;
如果你想提出功能建议或者优化建议, 请切换到功能建议模板;
对于其它情况, 填写并提交此处的内容.
If you wish to report issues occurring during the app's runtime (such as the inability to view a particular comic source, login issues, non-functional features, etc.), please switch to the Bug Report template.
If you would like to make feature requests or optimization suggestions, please switch to the Feature Request template.
For any other situations, please fill out and submit the content here.
- type: textarea
id: what-happened
attributes:
label: Content
validations:
required: true
================================================
FILE: .github/workflows/delete_old_workflows.yml
================================================
name: Delete old workflow runs
on:
workflow_dispatch:
inputs:
days:
description: 'Days-worth of runs to keep for each workflow'
required: true
default: '30'
minimum_runs:
description: 'Minimum runs to keep for each workflow'
required: true
default: '6'
delete_workflow_pattern:
description: 'Name or filename of the workflow (if not set, all workflows are targeted)'
required: false
delete_workflow_by_state_pattern:
description: 'Filter workflows by state: active, deleted, disabled_fork, disabled_inactivity, disabled_manually'
required: true
default: "ALL"
type: choice
options:
- "ALL"
- active
- deleted
- disabled_inactivity
- disabled_manually
delete_run_by_conclusion_pattern:
description: 'Remove runs based on conclusion: action_required, cancelled, failure, skipped, success'
required: true
default: "ALL"
type: choice
options:
- "ALL"
- "Unsuccessful: action_required,cancelled,failure,skipped"
- action_required
- cancelled
- failure
- skipped
- success
dry_run:
description: 'Logs simulated changes, no deletions are performed'
required: false
jobs:
del_runs:
runs-on: ubuntu-latest
permissions:
actions: write
contents: read
steps:
- name: Delete workflow runs
uses: Mattraks/delete-workflow-runs@v2
with:
token: ${{ github.token }}
repository: ${{ github.repository }}
retain_days: ${{ github.event.inputs.days }}
keep_minimum_runs: ${{ github.event.inputs.minimum_runs }}
delete_workflow_pattern: ${{ github.event.inputs.delete_workflow_pattern }}
delete_workflow_by_state_pattern: ${{ github.event.inputs.delete_workflow_by_state_pattern }}
delete_run_by_conclusion_pattern: >-
${{
startsWith(github.event.inputs.delete_run_by_conclusion_pattern, 'Unsuccessful:')
&& 'action_required,cancelled,failure,skipped'
|| github.event.inputs.delete_run_by_conclusion_pattern
}}
dry_run: ${{ github.event.inputs.dry_run }}
================================================
FILE: .github/workflows/ios_simulator.yml
================================================
name: Build IOS SIMULATOR
run-name: Build IOS SIMULATOR
on:
workflow_dispatch: {}
jobs:
Build_IOS_SIMULATOR:
runs-on: macos-13
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
architecture: x64
- run: sudo xcode-select --switch /Applications/Xcode_14.3.1.app
- run: flutter pub get
- run: flutter build ios --simulator --no-codesign
- uses: actions/upload-artifact@v3
with:
name: build_files
path: /Users/runner/work/PicaComic/PicaComic/build/ios/iphonesimulator
================================================
FILE: .github/workflows/linux.yml
================================================
name: Build Linux
run-name: Build Linux
on:
workflow_dispatch: {}
jobs:
Build_Linux:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
architecture: x64
- run: |
sudo apt-get update -y
sudo apt-get install -y ninja-build libgtk-3-dev webkit2gtk-4.1
dart pub global activate flutter_to_debian
- run: python3 debian/build.py
- run: dart run flutter_to_arch
- run: |
sudo rm -rf build/linux/arch/app.tar.gz
sudo rm -rf build/linux/arch/pkg
sudo rm -rf build/linux/arch/src
sudo rm -rf build/linux/arch/PKGBUILD
- uses: actions/upload-artifact@v4
with:
name: deb_build
path: build/linux/x64/release/debian
- uses: actions/upload-artifact@v4
with:
name: arch_build
path: build/linux/arch/
================================================
FILE: .github/workflows/main.yml
================================================
name: Build IOS
run-name: Build IOS
on:
workflow_dispatch: {}
jobs:
Build_IOS:
runs-on: macos-13
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
architecture: x64
- run: sudo xcode-select --switch /Applications/Xcode_14.3.1.app
- run: flutter pub get
- run: flutter build ios --release --no-codesign
- run: |
mkdir -p /Users/runner/work/PicaComic/PicaComic/build/ios/iphoneos/Payload
mv /Users/runner/work/PicaComic/PicaComic/build/ios/iphoneos/Runner.app /Users/runner/work/PicaComic/PicaComic/build/ios/iphoneos/Payload
cd /Users/runner/work/PicaComic/PicaComic/build/ios/iphoneos/
zip -r app-ios.ipa Payload
- uses: actions/upload-artifact@v4
with:
name: app-ios.ipa
path: /Users/runner/work/PicaComic/PicaComic/build/ios/iphoneos/app-ios.ipa
Build_MacOS:
runs-on: macos-13
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
with:
channel: 'stable'
architecture: x64
- run: sudo xcode-select --switch /Applications/Xcode_14.3.1.app
- run: flutter pub get
- run: flutter build macos --release
- uses: actions/upload-artifact@v4
with:
name: macos-build.zip
path: build/macos/Build/Products/Release/pica_comic.app
================================================
FILE: .gitignore
================================================
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
migrate_working_dir/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/
# Symbolication related
app.*.symbols
# Obfuscation related
app.*.map.json
# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release
.vscode/
================================================
FILE: .metadata
================================================
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.
version:
revision: 9944297138845a94256f1cf37beb88ff9a8e811a
channel: stable
project_type: app
# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
base_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
- platform: android
create_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
base_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
- platform: ios
create_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
base_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
- platform: linux
create_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
base_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
- platform: macos
create_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
base_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
- platform: web
create_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
base_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
- platform: windows
create_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
base_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
# User provided section
# List of Local paths (relative to this file) that should be
# ignored by the migrate tool.
#
# Files that are not part of the templates will be ignored by default.
unmanaged_files:
- 'lib/main.dart'
- 'ios/Runner.xcodeproj/project.pbxproj'
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2023 Nyne
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
Deprecated, use new project: [venera](https://github.com/venera-app/venera).
# Pica Comic
[](https://flutter.dev/)
[](https://github.com/wgh136/PicaComic/blob/master/LICENSE)
[](https://github.com/wgh136/PicaComic/releases)
[](https://github.com/wgh136/PicaComic/stargazers)
A comic app with multiple sources built with flutter.
## How to use
1. Clone the repository
```shell
git clone https://github.com/wgh136/PicaComic
```
2. Install flutter: https://docs.flutter.dev/get-started/install
3. Build Application: https://docs.flutter.dev/deployment
## Introduction
### Built-in Comic Source
Currently, Pica Comic has 5 built-in comic sources:
- picacg
- e-hentai/exhentai
- jmcomic
- hitomi
- 绅士漫画
- nhentai
### Custom Comic Source
You can add custom comic sources in the app after version 3.0.0.
### Features
- Browse manga
- Online reading
- Download manga
- Manage local favorites and network favorites
- Data sync(using webdav)
- Reading history
### History
This project initially started as an unofficial app for picacg
and later evolved into an app that supports multiple comic sources.
## Build From Source Code
See [https://docs.flutter.dev/](https://docs.flutter.dev/)
## Thanks
### Projects
[](https://github.com/tonquer/JMComic-qt)
The image restructuring algorithm used to display jm images is from this project.
### Tags Translation
[](https://github.com/EhTagTranslation/Database)
The Chinese translation of the manga tags is from this project.
================================================
FILE: analysis_options.yaml
================================================
# This file configures the analyzer, which statically analyzes Dart code to
# check for errors, warnings, and lints.
#
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
# invoked from the command line by running `flutter analyze`.
# The following line activates a set of recommended lints for Flutter apps,
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml
linter:
# The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
# included above or to enable additional rules. A list of all available lints
# and their documentation is published at
# https://dart-lang.github.io/linter/lints/index.html.
#
# Instead of disabling a lint rule for the entire project in the
# section below, it can also be suppressed for a single line of code
# or a specific dart file by using the `// ignore: name_of_lint` and
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
# producing the lint.
rules:
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options
================================================
FILE: android/.gitignore
================================================
gradle-wrapper.jar
/.gradle
/captures/
/gradlew
/gradlew.bat
/local.properties
GeneratedPluginRegistrant.java
# Remember to never publicly share your keystore.
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
key.properties
**/*.keystore
**/*.jks
================================================
FILE: android/app/build.gradle
================================================
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
compileSdk 34
ndkVersion flutter.ndkVersion
splits{
abi {
enable true
universalApk true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
defaultConfig {
applicationId "com.github.wgh136.pica_comic"
// You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
minSdkVersion 21
targetSdk 34
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
multiDexEnabled true
}
signingConfigs {
debug {
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
}
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.release
applicationVariants.all { variant ->
variant.outputs.all { output ->
def abi = output.getFilter(com.android.build.OutputFile.ABI)
if (abi != null) { // null for the universal-debug, universal-release variants
outputFileName = "PicaComic-${variant.versionName}-${abi}.apk"
} else {
outputFileName = "PicaComic-${variant.versionName}.apk"
}
}
}
}
}
namespace 'com.kokoiro.xyz.pica_comic'
}
flutter {
source '../..'
}
dependencies {
implementation 'com.google.android.gms:play-services-base:18.3.0'
}
================================================
FILE: android/app/src/debug/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
</manifest>
================================================
FILE: android/app/src/main/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.USE_BIOMETRIC"/>
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:label="Pica Comic"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher"
android:requestLegacyExternalStorage="true"
android:usesCleartextTraffic="true">
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter android:label="filter_view_uris">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https"/>
<data android:host="e-hentai.org"/>
<data android:scheme="https"/>
<data android:host="exhentai.org"/>
<data android:scheme="https"/>
<data android:host="nhentai.net"/>
<data android:scheme="https"/>
<data android:host="hitomi.la"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
</manifest>
================================================
FILE: android/app/src/main/kotlin/com/kokoiro/xyz/pica_comic/MainActivity.kt
================================================
package com.kokoiro.xyz.pica_comic
import android.os.Build
import android.view.KeyEvent
import android.view.WindowManager
import io.flutter.embedding.android.FlutterFragmentActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.EventChannel
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugins.GeneratedPluginRegistrant
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Environment
import android.Manifest
import androidx.core.content.ContextCompat
import com.google.android.gms.common.GoogleApiAvailability
class MainActivity: FlutterFragmentActivity() {
var volumeListen = VolumeListen()
var listening = false
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine)
val channel = EventChannel(flutterEngine.dartExecutor.binaryMessenger, "com.kokoiro.xyz.pica_comic/volume")
channel.setStreamHandler(
object : EventChannel.StreamHandler {
override fun onListen(arguments: Any?, events: EventChannel.EventSink) {
listening = true
volumeListen.whenUp = {
events.success(1)
}
volumeListen.whenDown = {
events.success(2)
}
}
override fun onCancel(arguments: Any?) {
listening = false
}
})
//拦截屏幕截图
MethodChannel(flutterEngine.dartExecutor.binaryMessenger,"com.kokoiro.xyz.pica_comic/screenshot").setMethodCallHandler{
_, _ ->
window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE)
}
MethodChannel(flutterEngine.dartExecutor.binaryMessenger,"com.kokoiro.xyz.pica_comic/secure").setMethodCallHandler{
_, _ ->
window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE)
}
//获取cpu架构
MethodChannel(flutterEngine.dartExecutor.binaryMessenger,"com.kokoiro.xyz.pica_comic/device").setMethodCallHandler{
_, res ->
res.success(getDeviceInfo())
}
//获取http代理
MethodChannel(flutterEngine.dartExecutor.binaryMessenger,"kokoiro.xyz.pica_comic/proxy").setMethodCallHandler{
_, res ->
res.success(getProxy())
}
//保持屏幕常亮
MethodChannel(flutterEngine.dartExecutor.binaryMessenger,"com.kokoiro.xyz.pica_comic/keepScreenOn").setMethodCallHandler{
call, _ ->
if(call.method == "set")
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
else
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
MethodChannel(flutterEngine.dartExecutor.binaryMessenger,"pica_comic/playServer").setMethodCallHandler{
_, res ->
val flag = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this) == com.google.android.gms.common.ConnectionResult.SUCCESS
res.success(flag)
}
MethodChannel(flutterEngine.dartExecutor.binaryMessenger,"pica_comic/settings").setMethodCallHandler{
call, res ->
if(call.method == "link") {
val intent = Intent(
android.provider.Settings.ACTION_APP_OPEN_BY_DEFAULT_SETTINGS,
Uri.parse("package:com.github.wgh136.pica_comic"),
)
startActivity(intent)
res.success(null)
} else if(call.method == "files") {
val intent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
Intent(android.provider.Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
} else {
Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
}
intent.data = Uri.parse("package:com.github.wgh136.pica_comic")
startActivity(intent)
res.success(null)
} else if(call.method == "files_check") {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
res.success(Environment.isExternalStorageManager())
} else {
res.success(
ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
&& ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)
}
}
}
}
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
if(listening){
when (keyCode) {
KeyEvent.KEYCODE_VOLUME_DOWN -> {
volumeListen.down()
return true
}
KeyEvent.KEYCODE_VOLUME_UP -> {
volumeListen.up()
return true
}
}
}
return super.onKeyDown(keyCode, event)
}
private fun getDeviceInfo(): String{
//获取cpu架构从而找到应当下载的app版本
return Build.SUPPORTED_ABIS[0]
}
private fun getProxy(): String{
val host = System.getProperty("http.proxyHost")
val port = System.getProperty("http.proxyPort")
return if(host!=null&&port!=null){
"$host:$port"
}else{
"No Proxy"
}
}
}
class VolumeListen{
var whenUp = fun() {}
var whenDown = fun() {}
fun up(){
whenUp()
}
fun down(){
whenDown()
}
}
================================================
FILE: android/app/src/main/res/drawable/launch_background.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>
================================================
FILE: android/app/src/main/res/drawable-v21/launch_background.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="?android:colorBackground" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>
================================================
FILE: android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@mipmap/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
<monochrome android:drawable="@mipmap/ic_launcher_monochrome"/>
</adaptive-icon>
================================================
FILE: android/app/src/main/res/values/styles.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
</style>
</resources>
================================================
FILE: android/app/src/main/res/values-night/styles.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is on -->
<style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
<!-- Show a splash screen on the activity. Automatically removed when
the Flutter engine draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<!-- Theme applied to the Android Window as soon as the process has started.
This theme determines the color of the Android Window while your
Flutter UI initializes, as well as behind your Flutter UI while its
running.
This Theme is only used starting with V2 of Flutter's Android embedding. -->
<style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
<item name="android:windowBackground">?android:colorBackground</item>
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
<item name="android:navigationBarColor">@android:color/transparent</item>
</style>
</resources>
================================================
FILE: android/app/src/profile/AndroidManifest.xml
================================================
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
</manifest>
================================================
FILE: android/build.gradle
================================================
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
allprojects {
tasks.withType(AbstractKotlinCompile).configureEach {
kotlinOptions {
jvmTarget = "1.8"
apiVersion = "1.8"
languageVersion = "1.8"
}
}
repositories {
google()
mavenCentral()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
tasks.register("clean", Delete) {
delete rootProject.buildDir
}
================================================
FILE: android/gradle/wrapper/gradle-wrapper.properties
================================================
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip
================================================
FILE: android/gradle.properties
================================================
org.gradle.jvmargs=-Xmx1536M
android.useAndroidX=true
android.enableJetifier=true
android.defaults.buildfeatures.buildconfig=true
android.nonTransitiveRClass=false
android.nonFinalResIds=false
================================================
FILE: android/settings.gradle
================================================
pluginManagement {
def flutterSdkPath = {
def properties = new Properties()
file("local.properties").withInputStream { properties.load(it) }
def flutterSdkPath = properties.getProperty("flutter.sdk")
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
return flutterSdkPath
}
settings.ext.flutterSdkPath = flutterSdkPath()
includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
id "com.android.application" version "8.1.1" apply false
id "org.jetbrains.kotlin.android" version "1.9.0" apply false
}
include ":app"
================================================
FILE: assets/init.js
================================================
/// encode, decode, hash, decrypt
let Convert = {
/**
* @param {ArrayBuffer} value
* @returns {string}
*/
encodeBase64: (value) => {
return sendMessage({
method: "convert",
type: "base64",
value: value,
isEncode: true
});
},
/**
* @param {string} value
* @returns {ArrayBuffer}
*/
decodeBase64: (value) => {
return sendMessage({
method: "convert",
type: "base64",
value: value,
isEncode: false
});
},
/**
* @param {ArrayBuffer} value
* @returns {ArrayBuffer}
*/
md5: (value) => {
return sendMessage({
method: "convert",
type: "md5",
value: value,
isEncode: true
});
},
/**
* @param {ArrayBuffer} value
* @returns {ArrayBuffer}
*/
sha1: (value) => {
return sendMessage({
method: "convert",
type: "sha1",
value: value,
isEncode: true
});
},
/**
* @param {ArrayBuffer} value
* @returns {ArrayBuffer}
*/
sha256: (value) => {
return sendMessage({
method: "convert",
type: "sha256",
value: value,
isEncode: true
});
},
/**
* @param {ArrayBuffer} value
* @returns {ArrayBuffer}
*/
sha512: (value) => {
return sendMessage({
method: "convert",
type: "sha512",
value: value,
isEncode: true
});
},
/**
* @param {ArrayBuffer} value
* @param {ArrayBuffer} key
* @returns {ArrayBuffer}
*/
decryptAesEcb: (value, key) => {
return sendMessage({
method: "convert",
type: "aes-ecb",
value: value,
key: key,
isEncode: false
});
},
/**
* @param {ArrayBuffer} value
* @param {ArrayBuffer} key
* @param {ArrayBuffer} iv
* @returns {ArrayBuffer}
*/
decryptAesCbc: (value, key, iv) => {
return sendMessage({
method: "convert",
type: "aes-ecb",
value: value,
key: key,
iv: iv,
isEncode: false
});
},
/**
* @param {ArrayBuffer} value
* @param {ArrayBuffer} key
* @param {number} blockSize
* @returns {ArrayBuffer}
*/
decryptAesCfb: (value, key, blockSize) => {
return sendMessage({
method: "convert",
type: "aes-cfb",
value: value,
key: key,
blockSize: blockSize,
isEncode: false
});
},
/**
* @param {ArrayBuffer} value
* @param {ArrayBuffer} key
* @param {number} blockSize
* @returns {ArrayBuffer}
*/
decryptAesOfb: (value, key, blockSize) => {
return sendMessage({
method: "convert",
type: "aes-ofb",
value: value,
key: key,
blockSize: blockSize,
isEncode: false
});
},
/**
* @param {ArrayBuffer} value
* @param {ArrayBuffer} key
* @returns {ArrayBuffer}
*/
decryptRsa: (value, key) => {
return sendMessage({
method: "convert",
type: "rsa",
value: value,
key: key,
isEncode: false
});
}
}
function randomInt(min, max) {
return sendMessage({
method: 'random',
min: min,
max: max
});
}
class _Timer {
delay = 0;
callback = () => { };
status = false;
constructor(delay, callback) {
this.delay = delay;
this.callback = callback;
}
run() {
this.status = true;
this._interval();
}
_interval() {
if (!this.status) {
return;
}
this.callback();
setTimeout(this._interval.bind(this), this.delay);
}
cancel() {
this.status = false;
}
}
function setInterval(callback, delay) {
let timer = new _Timer(delay, callback);
timer.run();
return timer;
}
function Cookie(name, value, domain = null) {
let obj = {};
obj.name = name;
obj.value = value;
if (domain) {
obj.domain = domain;
}
return obj;
}
/**
* Network object for sending HTTP requests and managing cookies.
* @namespace Network
*/
let Network = {
/**
* Sends an HTTP request.
* @param {string} method - The HTTP method (e.g., GET, POST, PUT, PATCH, DELETE).
* @param {string} url - The URL to send the request to.
* @param {Object} headers - The headers to include in the request.
* @param data - The data to send with the request.
* @returns {Promise<ArrayBuffer>} The response from the request.
*/
async fetchBytes(method, url, headers, data) {
let result = await sendMessage({
method: 'http',
http_method: method,
bytes: true,
url: url,
headers: headers,
data: data,
});
if (result.error) {
throw result.error;
}
return result;
},
/**
* Sends an HTTP request.
* @param {string} method - The HTTP method (e.g., GET, POST, PUT, PATCH, DELETE).
* @param {string} url - The URL to send the request to.
* @param {Object} headers - The headers to include in the request.
* @param data - The data to send with the request.
* @returns {Promise<Object>} The response from the request.
*/
async sendRequest(method, url, headers, data) {
let result = await sendMessage({
method: 'http',
http_method: method,
url: url,
headers: headers,
data: data,
});
if (result.error) {
throw result.error;
}
return result;
},
/**
* Sends an HTTP GET request.
* @param {string} url - The URL to send the request to.
* @param {Object} headers - The headers to include in the request.
* @returns {Promise<Object>} The response from the request.
*/
async get(url, headers) {
return this.sendRequest('GET', url, headers);
},
/**
* Sends an HTTP POST request.
* @param {string} url - The URL to send the request to.
* @param {Object} headers - The headers to include in the request.
* @param data - The data to send with the request.
* @returns {Promise<Object>} The response from the request.
*/
async post(url, headers, data) {
return this.sendRequest('POST', url, headers, data);
},
/**
* Sends an HTTP PUT request.
* @param {string} url - The URL to send the request to.
* @param {Object} headers - The headers to include in the request.
* @param data - The data to send with the request.
* @returns {Promise<Object>} The response from the request.
*/
async put(url, headers, data) {
return this.sendRequest('PUT', url, headers, data);
},
/**
* Sends an HTTP PATCH request.
* @param {string} url - The URL to send the request to.
* @param {Object} headers - The headers to include in the request.
* @param data - The data to send with the request.
* @returns {Promise<Object>} The response from the request.
*/
async patch(url, headers, data) {
return this.sendRequest('PATCH', url, headers, data);
},
/**
* Sends an HTTP DELETE request.
* @param {string} url - The URL to send the request to.
* @param {Object} headers - The headers to include in the request.
* @returns {Promise<Object>} The response from the request.
*/
async delete(url, headers) {
return this.sendRequest('DELETE', url, headers);
},
/**
* Sets cookies for a specific URL.
* @param {string} url - The URL to set the cookies for.
* @param {Cookie[]} cookies - The cookies to set.
*/
setCookies(url, cookies) {
sendMessage({
method: 'cookie',
function: 'set',
url: url,
cookies: cookies,
});
},
/**
* Retrieves cookies for a specific URL.
* @param {string} url - The URL to get the cookies from.
* @returns {Promise<Cookie[]>} The cookies for the given URL.
*/
getCookies(url) {
return sendMessage({
method: 'cookie',
function: 'get',
url: url,
});
},
/**
* Deletes cookies for a specific URL.
* @param {string} url - The URL to delete the cookies from.
*/
deleteCookies(url) {
sendMessage({
method: 'cookie',
function: 'delete',
url: url,
});
},
};
/**
* HtmlDocument class for parsing HTML and querying elements.
*/
class HtmlDocument {
static _key = 0;
key = 0;
/**
* Constructor for HtmlDocument.
* @param {string} html - The HTML string to parse.
*/
constructor(html) {
this.key = HtmlDocument._key;
HtmlDocument._key++;
sendMessage({
method: "html",
function: "parse",
key: this.key,
data: html
})
}
/**
* Query a single element from the HTML document.
* @param {string} query - The query string.
* @returns {HtmlElement} The first matching element.
*/
querySelector(query) {
let k = sendMessage({
method: "html",
function: "querySelector",
key: this.key,
query: query
})
if(!k) return null;
return new HtmlElement(k);
}
/**
* Query all matching elements from the HTML document.
* @param {string} query - The query string.
* @returns {HtmlElement[]} An array of matching elements.
*/
querySelectorAll(query) {
let ks = sendMessage({
method: "html",
function: "querySelectorAll",
key: this.key,
query: query
})
return ks.map(k => new HtmlElement(k));
}
}
/**
* HtmlDom class for interacting with HTML elements.
*/
class HtmlElement {
key = 0;
/**
* Constructor for HtmlDom.
* @param {number} k - The key of the element.
*/
constructor(k) {
this.key = k;
}
/**
* Get the text content of the element.
* @returns {string} The text content.
*/
get text() {
return sendMessage({
method: "html",
function: "getText",
key: this.key
})
}
/**
* Get the attributes of the element.
* @returns {Object} The attributes.
*/
get attributes() {
return sendMessage({
method: "html",
function: "getAttributes",
key: this.key
})
}
/**
* Query a single element from the current element.
* @param {string} query - The query string.
* @returns {HtmlElement} The first matching element.
*/
querySelector(query) {
let k = sendMessage({
method: "html",
function: "dom_querySelector",
key: this.key,
query: query
})
if(!k) return null;
return new HtmlElement(k);
}
/**
* Query all matching elements from the current element.
* @param {string} query - The query string.
* @returns {HtmlElement[]} An array of matching elements.
*/
querySelectorAll(query) {
let ks = sendMessage({
method: "html",
function: "dom_querySelectorAll",
key: this.key,
query: query
})
return ks.map(k => new HtmlElement(k));
}
/**
* Get the children of the current element.
* @returns {HtmlElement[]} An array of child elements.
*/
get children() {
let ks = sendMessage({
method: "html",
function: "getChildren",
key: this.key
})
return ks.map(k => new HtmlElement(k));
}
}
function log(level, title, content) {
sendMessage({
method: 'log',
level: level,
title: title,
content: content,
})
}
let console = {
log: (content) => {
log('info', 'JS Console', content)
},
warn: (content) => {
log('warning', 'JS Console', content)
},
error: (content) => {
log('error', 'JS Console', content)
},
};
class ComicSource {
name = ""
key = ""
version = ""
minAppVersion = ""
url = ""
/**
* load data with its key
* @param {string} dataKey
* @returns {any}
*/
loadData(dataKey) {
return sendMessage({
method: 'load_data',
key: this.key,
data_key: dataKey
})
}
/**
* save data
* @param {string} dataKey
* @param data
*/
saveData(dataKey, data) {
return sendMessage({
method: 'save_data',
key: this.key,
data_key: dataKey,
data: data
})
}
/**
* delete data
* @param {string} dataKey
*/
deleteData(dataKey) {
return sendMessage({
method: 'delete_data',
key: this.key,
data_key: dataKey,
})
}
init() { }
static sources = {}
}
================================================
FILE: assets/tags.json
================================================
{
"rows": {
"female": "女性",
"male": "男性",
"mixed": "混合",
"language": "语言",
"other": "其他",
"group": "团队",
"artist": "艺术家",
"cosplayer": "Coser",
"parody": "原作",
"character": "角色",
"reclass": "重新分类",
"temp": "临时"
},
"reclass": {
"doujinshi": "同人志",
"manga": "漫画",
"artistcg": "画师CG",
"gamecg": "游戏CG",
"non-h": "无H",
"imageset": "图集",
"western": "西方",
"cosplay": "Cosplay",
"misc": "杂项",
"asianporn": "亚洲色情",
"private": "私有"
},
"language": {
"afrikaans": "南非语",
"albanian": "阿尔巴尼亚语",
"arabic": "阿拉伯语",
"aramaic": "阿拉姆语",
"armenian": "亚美尼亚语",
"bengali": "孟加拉语",
"bosnian": "波斯尼亚语",
"bulgarian": "保加利亚语",
"burmese": "缅甸语",
"catalan": "加泰罗尼亚语",
"cebuano": "宿务语",
"chinese": "汉语",
"cree": "克里语",
"creole": "克里奥尔语",
"croatian": "克罗地亚语",
"czech": "捷克语",
"danish": "丹麦语",
"dutch": "荷兰语",
"english": "英语",
"esperanto": "世界语",
"estonian": "爱沙尼亚语",
"finnish": "芬兰语",
"french": "法语",
"georgian": "格鲁吉亚语",
"german": "德语",
"greek": "希腊语",
"gujarati": "古吉拉特语",
"hebrew": "希伯来语",
"hindi": "印地语",
"hmong": "苗语",
"hungarian": "匈牙利语",
"icelandic": "冰岛语",
"indonesian": "印尼语",
"irish": "爱尔兰语",
"italian": "意大利语",
"japanese": "日语",
"javanese": "爪哇語",
"kannada": "卡纳达语",
"kazakh": "哈萨克语",
"khmer": "高棉语",
"korean": "韩语",
"kurdish": "库尔德语",
"ladino": "犹太西班牙语",
"lao": "老挝语",
"latin": "拉丁语",
"latvian": "拉脱维亚语",
"marathi": "马拉地语",
"mongolian": "蒙古语",
"ndebele": "恩德贝莱语",
"nepali": "尼泊尔语",
"norwegian": "挪威语",
"oromo": "奥罗莫语",
"papiamento": "帕皮阿门托语",
"pashto": "普什图语",
"persian": "波斯语",
"polish": "波兰语",
"portuguese": "葡萄牙语",
"punjabi": "旁遮普语",
"romanian": "罗马尼亚语",
"russian": "俄语",
"sango": "桑戈语",
"sanskrit": "梵语",
"serbian": "塞尔维亚语",
"shona": "绍纳语",
"slovak": "斯洛伐克语",
"slovenian": "斯洛文尼亚语",
"somali": "索马里语",
"spanish": "西班牙语",
"swahili": "斯瓦希里语",
"swedish": "瑞典语",
"tagalog": "他加禄语",
"tamil": "泰米尔语",
"telugu": "泰卢固语",
"thai": "泰语",
"tibetan": "藏语",
"tigrinya": "提格雷尼亚语",
"turkish": "土耳其语",
"ukrainian": "乌克兰语",
"urdu": "乌尔都语",
"vietnamese": "越南语",
"welsh": "威尔士语",
"yiddish": "意第绪语",
"zulu": "祖鲁语",
"speechless": "无言",
"text cleaned": "文字清除",
"translated": "翻译",
"rewrite": "改写"
},
"parody": {
"86": "86 -不存在的战区-",
"300": "300",
"original": "原创",
"touhou project": "东方Project",
"moetan": "萌单✏️",
"kanon": "Kanon❄",
"air": "AIR🕊",
"clannad": "CLANNAD👪",
"angel beats": "Angel Beats!❤",
"charlotte": "Charlotte🌠",
"little busters": "Little Busters!⚾🐈",
"rewrite": "Rewrite",
"ore no imouto ga konna ni kawaii wake ga nai": "我的妹妹不可能那么可爱",
"kantai collection": "舰队Collection",
"pokemon": "精灵宝可梦",
"higurashi no naku koro ni": "寒蝉鸣泣之时🔪",
"saki": "天才麻将少女🀄️",
"puella magi madoka magica": "魔法少女小圆",
"puella magi madoka magica side story magia record": "魔法纪录 魔法少女小圆外传",
"toradora": "龙与虎",
"lotte no omocha": "露蒂的玩具",
"sword art online": "刀剑神域",
"sword art online alternative gun gale online": "刀剑神域外传Gun Gale Online",
"to love-ru": "出包王女",
"ro-kyu-bu": "萝球社🏀",
"tantei opera milky holmes": "侦探歌剧 少女福尔摩斯🔎",
"hyperdimension neptunia": "超次元游戏:海王星🎮",
"love live": "LoveLive! School idol project",
"love live sunshine": "Love Live! Sunshine!!",
"love live nijigasaki high school idol club": "LoveLive!虹咲学园学园偶像同好会",
"sora no otoshimono": "天降之物",
"boku wa tomodachi ga sukunai": "我的朋友很少",
"vocaloid": "VOCALOID",
"voiceroid": "VOICEROID",
"date a live": "约会大作战",
"the idolmaster": "偶像大师",
"my little pony friendship is magic": "小马宝莉:友谊就是魔法🐎",
"himouto umaru-chan": "干物妹!小埋",
"bakemonogatari": "化物语",
"yahari ore no seishun love come wa machigatteiru": "我的青春恋爱物语果然有问题",
"tengen toppa gurren lagann": "天元突破",
"cardcaptor sakura": "魔卡少女樱",
"mayoi neko overrun": "迷途猫OverRun",
"outbreak company": "萌萌侵略者",
"kyoukai no kanata": "境界的彼方",
"hataraku maou-sama": "打工吧!魔王大人",
"haiyore nyaruko-san": "潜行吧!奈亚子",
"hentai ouji to warawanai neko": "变态王子与不笑猫",
"nagi no asukara": "来自风平浪静的明天",
"sekai seifuku bouryaku no zvezda": "世界征服~谋略之星~",
"no game no life": "游戏人生",
"barakamon": "元气囝仔",
"divine gate": "神圣之门",
"sayonara zetsubou sensei": "再见!绝望先生",
"highschool of the dead": "学园默示录",
"gakkou gurashi": "学园孤岛",
"a channel": "A频道",
"granblue fantasy": "碧蓝幻想",
"gundam": "高达",
"gundam age": "机动战士高达AGE",
"gundam 00": "机动战士高达00",
"gundam 0080": "机动战士高达0080 口袋里的战争",
"gundam 0083": "机动战士高达0083 星尘回忆录",
"gundam unicorn": "机动战士高达UC",
"gundam f91": "机动战士高达F91",
"gundam seed": "机动战士高达SEED",
"gundam seed destiny": "机动战士高达SEED DESTINY",
"gundam zz": "机动战士高达ZZ",
"mobile suit gundam": "机动战士高达",
"mobile suit gundam lost war chronicles": "机动战士高达战记 Lost War Chronicles",
"mobile suit gundam tekketsu no orphans": "机动战士高达 铁血的孤儿",
"gundam wing": "新机动战记高达W",
"gundam build fighters": "高达创战者",
"gundam build fighters try": "高达创战者TRY",
"gundam build divers": "高达创形者",
"gundam g no reconguista": "高达G之复国运动",
"gundam x": "机动新世纪高达X",
"victory gundam": "机动战士V高达",
"zeta gundam": "机动战士Z高达",
"g gundam": "机动武斗传G高达",
"turn a gundam": "∀高达",
"kiniro mosaic": "黄金拼图",
"gochuumon wa usagi desu ka": "请问您今天要来点兔子吗?",
"non non biyori": "悠哉日常大王",
"oda nobuna no yabou": "织田信奈的野望",
"tamako market": "玉子市场",
"yama no susume": "向山进发",
"pripara": "美妙天堂",
"sora no method": "天体的秩序",
"accel world": "加速世界",
"dungeon ni deai o motomeru no wa machigatteiru darou ka": "在地下城寻求邂逅是否搞错了什么",
"c cube": "C³-魔方少女-",
"shingeki no kyojin": "进击的巨人",
"onidere": "鬼骄",
"infinite stratos": "无限斯特拉托斯",
"disgaea": "魔界战记",
"chuunibyou demo koi ga shitai": "中二病也要谈恋爱!",
"ano hi mita hana no namae wo bokutachi wa mada shiranai": "我们仍未知道那天所看见的花的名字。",
"amagi brilliant park": "甘城光辉游乐园",
"hidan no aria": "绯弹的亚莉亚🔫",
"steinsgate": "命运石之门",
"lucky star": "幸运☆星",
"zero no tsukaima": "零之使魔",
"shakugan no shana": "灼眼的夏娜",
"the melancholy of haruhi suzumiya": "凉宫春日的忧郁",
"kannagi": "神薙",
"kashimashi": "女生爱女生",
"to heart": "ToHeart",
"toheart2": "ToHeart2",
"k-on": "轻音少女",
"he is my master": "我的主人",
"code geass": "叛逆的鲁鲁修",
"naruto": "火影忍者",
"school rumble": "校园迷糊大王",
"mahou sensei negima": "魔法老师",
"uq holder": "悠久持有者!",
"neon genesis evangelion": "新世纪福音战士",
"hidamari sketch": "向阳素描",
"mahou shoujo lyrical nanoha": "魔法少女奈叶",
"rosario vampire": "十字架与吸血鬼",
"pretty cure": "光之美少女",
"futari wa pretty cure": "光之美少女",
"futari wa precure splash star": "光之美少女 Splash Star",
"yes precure 5": "Yes! 光之美少女5",
"fresh precure": "光之美少女:幸福精灵",
"heartcatch precure": "光之美少女:甜蜜天使!",
"suite precure": "光之美少女:美乐天使",
"smile precure": "Smile 光之美少女!",
"dokidoki precure": "心跳!光之美少女",
"happinesscharge precure": "幸福爆发 光之美少女!",
"go princess precure": "Go! 公主 光之美少女",
"maho girls precure": "魔法使 光之美少女!",
"kirakira precure a la mode": "光之美少女:食尚甜心",
"hugtto precure": "拥抱!光之美少女",
"star twinkle precure": "星光闪亮☆光之美少女",
"jojos bizarre adventure": "JOJO的奇妙冒险",
"pangya": "魔法飞球",
"shokugeki no soma": "食戟之灵",
"working": "迷糊餐厅🍴",
"kono subarashii sekai ni syukufuku o": "为美好的世界献上祝福!",
"ore no kanojo to osananajimi ga shuraba sugiru": "我女友与青梅竹马的惨烈修罗场",
"ore no nounai sentakushi ga gakuen love comedy wo zenryoku de jama shiteiru": "我的脑内恋碍选项",
"overwatch": "守望先锋",
"halo": "光环",
"mass effect": "质量效应",
"half-life": "半衰期",
"portal": "传送门",
"the witcher": "巫师",
"the elder scrolls": "上古卷轴",
"defense of the ancients": "刀塔",
"re zero kara hajimeru isekai seikatsu": "Re:从零开始的异世界生活",
"saenai heroine no sodatekata": "路人女主的养成方法",
"koihime musou": "恋姬†无双",
"senran kagura": "闪乱神乐",
"kobayashi-san-chi no maid dragon": "小林家的龙女仆",
"new game": "NEW GAME!",
"shirobako": "白箱",
"girlish number": "少女编号",
"gabriel dropout": "珈百璃的堕落",
"chobits": "人形电脑天使心",
"dead or alive": "死或生",
"eromanga sensei": "埃罗芒阿老师",
"dorei to no seikatsu": "与奴隶的生活 -Teaching Feeling-",
"girls und panzer": "少女与战车",
"seto no hanayome": "濑户的花嫁",
"brave witches": "无畏魔女",
"strike witches": "强袭魔女",
"kemono friends": "兽娘动物园",
"league of legends": "英雄联盟",
"kill la kill": "斩服少女",
"dagashi kashi": "粗点心战争",
"street fighter": "街头霸王",
"fate grand order": "Fate/Grand Order",
"fate stay night": "Fate/stay night",
"fate apocrypha": "Fate/Apocrypha",
"fate zero": "Fate/Zero",
"fate hollow ataraxia": "Fate/hollow ataraxia",
"fate extra": "Fate/EXTRA",
"fate kaleid liner prisma illya": "Fate/kaleid liner 魔法少女☆伊莉雅",
"mahou tsukai no yoru": "魔法使之夜",
"kara no kyoukai": "空之境界",
"canaan": "迦南",
"tsukihime": "月姬",
"kimi no na wa.": "你的名字。",
"mashiro iro symphony": "纯白交响曲",
"dragon quest": "勇者斗恶龙",
"dragon quest i": "勇者斗恶龙I",
"dragon quest ii": "勇者斗恶龙II 恶灵的众神",
"dragon quest iii": "勇者斗恶龙III 传说的开始",
"dragon quest iv": "勇者斗恶龙IV 被引导的人们",
"dragon quest v": "勇者斗恶龙V 天空的新娘",
"dragon quest vi": "勇者斗恶龙VI 幻之大地",
"dragon quest vii": "勇者斗恶龙VII 伊甸的战士们",
"dragon quest viii": "勇者斗恶龙VIII 天空、碧海、大地与被诅咒的公主",
"dragon quest ix": "勇者斗恶龙IX 星空的守护者",
"dragon quest x": "勇者斗恶龙X 觉醒的五种族 Online",
"dragon quest xi": "勇者斗恶龙XI 追寻逝去的时光",
"dragon quest dai no daibouken": "勇者斗恶龙 达尔大冒险",
"dragon quest monsters": "勇者斗恶龙怪兽篇",
"dragon quest yuusha abel densetsu": "勇者斗恶龙 勇者阿贝尔传说",
"dragon quest heroes": "勇者斗恶龙 英雄",
"left 4 dead": "求生之路",
"bloodrayne": "吸血莱恩",
"star wars": "星球大战",
"shin megami tensei": "真·女神转生",
"shin megami tensei devil children": "真·女神转生 恶魔之子",
"devil survivor": "女神异闻录 恶魔幸存者",
"persona": "女神异闻录",
"persona 2": "女神异闻录2",
"persona 3": "女神异闻录3",
"persona 4": "女神异闻录4",
"persona 5": "女神异闻录5",
"monsters inc.": "怪兽电力公司",
"hai to gensou no grimgar": "灰与幻想的格林姆迦尔",
"pretty rhythm": "美妙旋律",
"mamono musume zukan": "魔物娘图鉴",
"getsuyoubi no tawawa": "星期一的丰满",
"phantasy star": "梦幻之星",
"phantasy star 2": "梦幻之星II 不归的终点",
"phantasy star online": "梦幻之星Online",
"phantasy star online 2": "梦幻之星Online 2",
"phantasy star portable 2": "梦幻之星:携带版2",
"phantasy star universe": "梦幻之星 宇宙",
"phantasy star zero": "梦幻之星ZERO",
"arms": "ARMS",
"astro boy": "铁臂阿童木",
"detective conan": "名侦探柯南",
"ore twintail ni narimasu.": "我,要成为双马尾",
"kiss x sis": "亲吻姐姐",
"kimikiss": "君吻",
"super sonico": "超级索尼子",
"final fantasy": "最终幻想",
"final fantasy ii": "最终幻想II",
"final fantasy iii": "最终幻想III",
"final fantasy iv": "最终幻想IV",
"final fantasy v": "最终幻想V",
"final fantasy vi": "最终幻想VI",
"final fantasy vii": "最终幻想VII",
"final fantasy viii": "最终幻想VIII",
"final fantasy ix": "最终幻想IX",
"final fantasy x": "最终幻想X",
"final fantasy x-2": "最终幻想X-2",
"final fantasy xi": "最终幻想XI",
"final fantasy xii": "最终幻想XII",
"final fantasy xiii": "最终幻想XIII",
"final fantasy xiv": "最终幻想XIV",
"final fantasy xv": "最终幻想XV",
"final fantasy crystal chronicles": "最终幻想水晶编年史",
"final fantasy tactics": "最终幻想战略版",
"final fantasy tactics advance": "最终幻想战略版Advance",
"dissidia final fantasy": "最终幻想大乱斗",
"final fantasy unlimited": "最终幻想:无限",
"final fantasy type-0": "最终幻想 零式",
"kill me baby": "爱杀宝贝",
"shinryaku ika musume": "侵略!乌贼娘",
"one piece": "海贼王",
"dragon ball": "龙珠",
"dragon ball z": "龙珠Z",
"dragon ball gt": "龙珠GT",
"dragon ball super": "龙珠超",
"sakurasou no pet na kanojo": "樱花庄的宠物女孩",
"myriad colors phantom world": "无彩限的怪灵世界",
"soul eater": "噬魂师",
"urara meirochou": "Urara迷路帖",
"ranma 12": "乱马½",
"yosuga no sora": "缘之空",
"fire emblem if": "火焰之纹章 if",
"fire emblem": "火焰之纹章",
"fire emblem awakening": "火焰之纹章 觉醒",
"fire emblem gaiden": "火焰之纹章外传",
"fire emblem seisen no keifu": "火焰之纹章 圣战之系谱",
"fire emblem thracia 776": "火焰之纹章 多拉基亚776",
"fire emblem fuuin no tsurugi": "火焰之纹章 封印之剑",
"fire emblem rekka no ken": "火焰之纹章 烈火之剑",
"fire emblem the sacred stones": "火焰之纹章 圣魔之光石",
"fire emblem path of radiance": "火焰之纹章 苍炎之轨迹",
"fire emblem radiant dawn": "火焰之纹章 晓之女神",
"fire emblem mystery of the emblem": "火焰之纹章 纹章之谜",
"fire emblem heroes": "火焰之纹章 英雄",
"gintama": "银魂",
"panty and stocking with garterbelt": "吊带袜天使",
"kamen rider": "假面骑士",
"kamen rider decade": "假面骑士Decade",
"kamen rider amazon": "假面骑士亚马逊",
"kamen rider wizard": "假面骑士Wizard",
"kamen rider drive": "假面骑士Drive",
"kamen rider ex-aid": "假面骑士EX-AID",
"kamen rider w": "假面骑士W",
"kamen rider hibiki": "假面骑士响鬼",
"kamen rider kabuto": "假面骑士Kabuto",
"kamen rider den-o": "假面骑士电王",
"kamen rider fourze": "假面骑士Fourze",
"kamen rider ooo": "假面骑士OOO",
"kaiji": "赌博默示录",
"my hero academia": "我的英雄学院",
"shinmai maou no testament": "新妹魔王的契约者",
"youjo senki": "幼女战记",
"touken ranbu": "刀剑乱舞",
"teen titans": "少年泰坦",
"undertale": "传说之下",
"five nights at freddys": "在弗雷迪的五个夜晚",
"one punch man": "一拳超人",
"black rock shooter": "黑岩射手",
"dragons crown": "龙之皇冠",
"noir": "黑街二人组",
"guilty crown": "罪恶王冠",
"nana": "娜娜",
"nier": "尼尔",
"nier automata": "尼尔:机械纪元",
"psycho-pass": "心理测量者",
"ben 10": "少年骇客",
"hey arnold": "嘿,阿诺德!",
"bungou stray dogs": "文豪Stray Dogs",
"gugure kokkuri-san": "银仙",
"zootopia": "疯狂动物城",
"umineko no naku koro ni": "海猫鸣泣之时",
"ah my goddess": "我的女神",
"denpa onna to seishun otoko": "电波女与青春男",
"mirai nikki": "未来日记",
"oshiete galko-chan": "告诉我!辣妹子酱",
"eureka 7": "交响诗篇",
"darkstalkers": "恶魔战士",
"x-men": "X战警",
"x-men evolution": "X战警:进化",
"ichigo 100": "草莓100%",
"tonari no kaibutsu-kun": "邻座的怪同学",
"danganronpa": "弹丸论破",
"koutetsujou no kabaneri": "甲铁城的卡巴内利",
"yu-gi-oh": "游戏王",
"yu-gi-oh 5ds": "游戏王5D's",
"yu-gi-oh zexal": "游戏王ZEXAL",
"yu-gi-oh arc-v": "游戏王ARC-V",
"yu-gi-oh gx": "游戏王-怪兽之决斗GX",
"yu-gi-oh vrains": "游戏王VRAINS",
"kimi ni todoke": "好想告诉你",
"akatsuki no yona": "晨曦公主",
"onii-chan dakedo ai sae areba kankeinai yo ne": "就算是哥哥,有爱就没问题了,对吧",
"oniichan no koto nanka zenzen suki janain dakara ne": "腹黑妹妹控兄记!!",
"sora no woto": "空之音",
"occult academy": "世纪末超自然学院",
"gatchaman crowds": "科学小飞侠Crowds",
"saya no uta": "沙耶之歌",
"vividred operation": "绯色战姬",
"kodomo no jikan": "萝莉的时间",
"shuffle": "Shuffle!",
"power rangers": "超能战士",
"rune soldier": "魔法战士李维",
"kirby": "星之卡比",
"sakura quest": "樱花任务",
"aldnoah.zero": "ALDNOAH.ZERO",
"maoyuu maou yuusha": "魔王勇者",
"splatoon": "喷射战士",
"prunus girl": "樱桃少女",
"king of fighters": "拳皇",
"love plus": "爱相随",
"love hina": "纯情房东俏房客",
"akagami no shirayukihime": "赤发的白雪姬",
"minami-ke": "南家三姐妹",
"queens blade": "女王之刃",
"sekirei": "鹡鸰女神",
"yuuki yuuna wa yuusha de aru": "结城友奈是勇者",
"blazblue": "苍翼默示录",
"frame arms girl": "机甲少女",
"busou shinki": "武装神姬",
"bayonetta": "猎天使魔女",
"devil may cry": "鬼泣",
"tekken": "铁拳",
"super mario brothers": "超级马力欧兄弟",
"spider-man": "蜘蛛侠",
"gunsmith cats": "猫眼女枪手",
"puzzle and dragons": "智龙迷城",
"senki zesshou symphogear": "战姬绝唱Symphogear",
"shaman king": "通灵王",
"gegege no kitarou": "怪怪怪的鬼太郎",
"marmalade boy": "橘子酱男孩",
"esper mami": "超能力魔美",
"fushigi no umi no nadia": "蓝宝石之谜",
"martian successor nadesico": "机动战舰抚子",
"kino no tabi": "奇诺之旅",
"infinite ryvius": "无限的未知",
"machine robo": "天威勇士",
"rage of bahamut": "巴哈姆特之怒",
"kono naka ni hitori imouto ga iru": "其中1个是妹妹",
"sailor moon": "美少女战士",
"dog days": "犬勇者物语",
"onegai teacher": "拜托了☆老师",
"onegai twins": "拜托了☆双子星",
"rinne no lagrange": "轮回的拉格朗日",
"monster musume no iru nichijou": "魔物娘的相伴日常",
"black lagoon": "黑礁",
"steven universe": "史帝芬宇宙",
"the legend of zelda": "塞尔达传说",
"totally spies": "少女特工组",
"the legend of korra": "科拉传奇",
"kangoku senkan": "监狱战舰",
"prison school": "监狱学园",
"macross": "超时空要塞",
"the super dimension fortress macross": "超时空要塞Macross",
"macross 7": "超时空要塞7",
"macross frontier": "超时空要塞F",
"macross plus": "超时空要塞Plus",
"macross delta": "超时空要塞Δ",
"macross vf-x": "超时空要塞VF-X",
"little red riding hood": "小红帽",
"gekkan shoujo nozaki-kun": "月刊少女野崎君",
"girl friend beta": "临时女友",
"bakuman": "食梦者",
"nisekoi": "伪恋",
"blade and soul": "剑灵",
"inu x boku ss": "妖狐×仆SS",
"guilty gear": "罪恶装备",
"nanatsu no taizai": "七大罪",
"starcraft": "星际争霸",
"alice in wonderland": "爱丽丝梦游仙境",
"ikkitousen": "一骑当千",
"g.i. joe": "特种部队",
"metroid": "银河战士",
"metal gear solid": "合金装备",
"tomb raider": "古墓丽影",
"xena warrior princess": "战士公主西娜",
"the fifth element": "第五元素",
"terminator": "终结者",
"yurikuma arashi": "百合熊风暴",
"adventure time": "探险时光",
"strike the blood": "噬血狂袭",
"valkyrie drive": "女武神驱动",
"saber marionette": "机械女神",
"dance with devils": "与魔共舞",
"samurai 7": "七武士",
"samurai jack": "杰克武士",
"samurai deeper kyo": "鬼眼狂刀",
"samurai pizza cats": "功夫猫党",
"samurai spirits": "侍魂",
"hyakka ryouran samurai girls": "百花缭乱 武士少女",
"samurai champloo": "混沌武士",
"afro samurai": "爆炸头武士",
"samurai sentai shinkenger": "侍战队真剑者",
"samurai flamenco": "武士弗拉明戈",
"onechambara bikini samurai squad": "忌血的继承者",
"samurai warriors": "战国无双",
"dynasty warriors": "真·三国无双",
"demons souls": "恶魔之魂",
"seiken densetsu": "圣剑传说",
"seiken densetsu 3": "圣剑传说3",
"kore wa zombie desu ka": "这个是僵尸吗?",
"ojamajo doremi": "小魔女DoReMi",
"terra formars": "火星异种",
"spirited away": "千与千寻",
"el hazard": "神秘的世界",
"langrisser": "梦幻模拟战",
"slayers": "秀逗魔导士",
"grendizer": "UFO机器人 古连泰沙",
"keroro gunsou": "Keroro军曹",
"sakura taisen": "樱花大战",
"saint seiya": "圣斗士星矢",
"agent aika": "海底娇娃蓝华",
"city hunter": "城市猎人",
"super robot wars": "超级机器人大战",
"super robot wars w": "超级机器人大战W",
"super robot wars k": "超级机器人大战K",
"super robot wars z 2nd": "第2次超级机器人大战Z",
"endless frontier": "无限边界:超级机器人大战OG传说",
"hellsing": "地狱之歌",
"super black jack": "兔女郎的诱惑",
"hell teacher nube": "地狱老师",
"hitsugi no chaika": "棺姬嘉依卡",
"kishin douji zenki": "鬼神童子",
"muv-luv": "Muv-Luv",
"muv-luv alternative total eclipse": "Muv-Luv Alternative Total eclipse",
"dangaioh": "破邪大星弹劾皇",
"3x3 eyes": "三只眼",
"bakuretsu hunters": "爆走猎人",
"vampire princess miyu": "吸血姬美夕",
"reco love": "真爱记录",
"spice and wolf": "狼与香辛料",
"youkai watch": "妖怪手表",
"battle programmer shirase": "战争程序员白濑",
"kung fu panda": "功夫熊猫",
"star vs. the forces of evil": "星蝶公主",
"the amazing world of gumball": "阿甘妙世界",
"wakfu": "沃土",
"wander over yonder": "宇宙小奇兵",
"batman": "蝙蝠侠",
"resident evil": "生化危机",
"kim possible": "麻辣女孩",
"jinrui wa suitai shimashita": "人类衰退之后",
"miss machiko": "真知子老师",
"gaogaigar": "勇者王",
"hibike euphonium": "吹响!上低音号",
"ragnarok online": "仙境传说",
"no more heroes": "英雄不再",
"akuma no riddle": "恶魔之谜",
"overlord": "不死者之王",
"full ani": "Fullani",
"full metal panic": "全金属狂潮",
"fullmetal alchemist": "钢之炼金术师",
"full moon o sagashite": "寻找满月",
"full metal daemon muramasa": "装甲恶鬼村正",
"futsuu no joshikousei ga locodol yattemita.": "普通女高中生要做当地偶像",
"fallout": "辐射",
"fancy lala": "梦幻拉拉",
"final fight": "快打旋风",
"beauty and the beast": "美女与野兽",
"baka to test to shoukanjuu": "笨蛋测验召唤兽",
"arcana heart": "圣灵之心",
"heroman": "HEROMAN",
"anyamaru tantei kiruminzoo": "动物侦探奇鲁米",
"kyoukai senjou no horizon": "境界线上的地平线",
"rwby": "RWBY",
"lupin iii": "鲁邦三世",
"ensemble stars": "偶像梦幻祭",
"ajin": "亚人",
"kingdom hearts": "王国之心",
"tobaku haouden zero": "赌博霸王传 零",
"kannazuki no miko": "神无月的巫女",
"haikyuu": "排球少年!!",
"free": "Free! 男子游泳部",
"itsuka tenma no kuro usagi": "曾几何时天魔的黑兔",
"magic knight rayearth": "魔法骑士雷亚斯",
"kochikame": "乌龙派出所",
"bakusou kyoudai lets and go": "四驱兄弟",
"the powerpuff girls": "飞天小女警",
"powerpuff girls z": "飞天小女警Z",
"omoikkiri kagaku adventure sou nanda": "充满干劲十足的科学冒险—神秘智慧石",
"wedding peach": "爱天使传说 婚纱桃子",
"fushigiboshi no futagohime": "不可思议星球的☆双胞胎公主",
"aquarion": "创圣的亚库艾里翁",
"aquarion logos": "创圣的亚库艾里翁LOGOS",
"aquarion evol": "创圣的亚库艾里翁EVOL",
"welcome to the n.h.k.": "欢迎加入NHK!",
"sakurako-san no ashimoto ni wa shitai ga umatteiru": "樱子小姐的脚下埋着尸体",
"shimoneta to iu gainen ga sonzai shinai taikutsu na sekai": "下流梗不存在的灰暗世界",
"kyonyuu fantasy": "巨乳幻想",
"puyo puyo": "噗哟噗哟",
"kaku-san-sei million arthur": "扩散性百万亚瑟王",
"genji tsuushin agedama": "电脑小奇侠",
"dennou coil": "电脑线圈",
"god eater": "噬神者",
"demi-chan wa kataritai": "亚人酱有话要说",
"akazukin chacha": "小红帽恰恰",
"idol janshi suchie-pai": "美少女雀士",
"twin angels": "淫兽圣战",
"shadow lady": "月光淑女",
"oboro muramasa": "胧村正",
"zettai bouei leviathan": "绝对防卫利维坦",
"tokimeki memorial": "心跳回忆",
"future card buddyfight": "未来卡 搭档对战",
"fun fun pharmacy": "不可思议魔法药店",
"aiura": "校园日记 AIURA",
"gokujou seitokai": "极上学生会",
"show by rock": "Show By Rock!!",
"star fox": "星际火狐",
"white album": "白色相簿❄",
"tenchi muyo": "天地无用!",
"variable geo": "格斗女神",
"ashita no nadja": "明日的娜嘉",
"goldfish warning": "魔力小金鱼",
"mazinger z": "魔神Z",
"magi the labyrinth of magic": "魔笛MAGI",
"ultraman": "奥特曼",
"we bare bears": "咱们裸熊",
"gravity falls": "怪诞小镇",
"karakai jouzu no takagi-san": "擅长捉弄人的高木同学",
"goshogun": "战国魔神豪将军",
"plawres sanshiro": "无敌三四郎",
"hime-chans ribbon": "缎带魔法少女",
"taimanin asagi": "对魔忍阿莎姬",
"makai kishi ingrid": "魔界骑士英格丽德",
"taimanin yukikaze": "对魔忍雪风",
"kick-ass": "海扁王",
"gad guard": "钢铁守护者",
"tears to tiara": "提亚拉之泪",
"tenshi no inai 12-gatsu": "天使不在的12月",
"comic party": "漫画同人会",
"kizuato": "痕",
"sentimental graffiti": "青涩宝贝",
"bleach": "死神",
"hayate no gotoku": "旋风管家",
"yoake mae yori ruriiro na": "更胜黎明前的琉璃色",
"fortune arterial": "FORTUNE ARTERIAL",
"princess holiday": "公主假日 ~回转苹果亭的一千零一夜~",
"tsuki wa higashi ni hi wa nishi ni": "东月西阳",
"daitoshokan no hitsujikai": "大图书馆的牧羊人",
"aiyoku no eustia": "秽翼的尤斯蒂娅",
"rokka no yuusha": "六花的勇者",
"seiren": "清恋",
"oniisama e...": "亲亲天使心",
"long riders": "长骑美眉",
"flower knight girl": "美少女花骑士",
"mitsudomoe": "超元气三姐妹",
"no-rin": "农林",
"space battleship yamato": "宇宙战舰大和号",
"utawarerumono": "传颂之物",
"utawarerumono itsuwari no kamen": "传颂之物 虚伪的假面",
"highschool dxd": "恶魔高校D×D",
"the world god only knows": "只有神知道的世界",
"mabinogi": "洛奇",
"m.u.g.e.n": "MUGEN",
"summon night": "召唤之夜",
"mai-hime": "舞-HiME",
"mai-otome": "舞-乙HiME",
"hyouka": "冰菓",
"ookami-san to shichinin no nakama-tachi": "大神与七位伙伴",
"machine-doll wa kizutsukanai": "机巧少女不会受伤",
"its not my fault that im not popular": "我不受欢迎,怎么想都是你们的错!",
"mouretsu pirates": "迷你裙宇宙海贼",
"gantz": "杀戮都市",
"angry birds": "愤怒的小鸟",
"zero kara hajimeru mahou no sho": "从零开始的魔法书",
"knights of sidonia": "希德尼娅的骑士",
"sket dance": "学园救援团",
"summer wars": "夏日大作战",
"flcl": "特别的她",
"the girl who leapt through time": "穿越时空的少女",
"inazuma eleven": "闪电十一人",
"battle royale": "大逃杀",
"archaic sealed heat": "远古封印之炎",
"fruits basket": "水果篮子",
"tari tari": "TARI TARI",
"the legend of heroes": "英雄传说",
"the legend of the legendary heroes": "传说中勇者的传说",
"the last of us": "最后生还者",
"wall-e": "机器人总动员",
"alpha teens on machines": "A.T.O.M.",
"tera": "神谕之战",
"digimon": "数码宝贝",
"digimon adventure": "数码宝贝大冒险",
"digimon tamers": "数码宝贝03驯兽师之王",
"digimon frontier": "数码宝贝04无限地带",
"digimon savers": "数码宝贝05拯救者",
"digimon xros wars": "数码宝贝06合体战争",
"digimon universe appli monsters": "数码宝贝宇宙-应用怪兽",
"snow white and the seven dwarfs": "白雪公主和七个小矮人",
"shadowverse": "影之诗",
"eyeshield 21": "光速跑者21号",
"skullgirls": "骷髅女孩",
"the ring": "午夜凶铃",
"the lord of the rings": "指环王",
"the matrix": "黑客帝国",
"evil dead": "鬼玩人",
"from dusk till dawn": "杀出个黎明",
"the sims": "模拟人生",
"the big o": "魅影巨神",
"the lion king": "狮子王",
"frozen": "冰雪奇缘",
"mortal kombat": "格斗之王",
"aladdin": "阿拉丁",
"the little mermaid": "小美人鱼",
"atlantis the lost empire": "亚特兰蒂斯:失落的帝国",
"sengoku otome": "战国少女~桃色异传~",
"monster hunter": "怪物猎人",
"sennen sensou aigis": "千年战争Aigis",
"star ocean 3": "星之海洋3",
"kokoro connect": "心灵链环",
"robopon": "机甲宝贝",
"upotte": "枪械少女!!",
"tokyo mew mew": "东京喵喵",
"mahoromatic": "魔力女管家",
"sister princess": "妹妹公主",
"ace attorney": "逆转裁判",
"tiger and bunny": "老虎和兔子",
"ghost in the shell": "攻壳机动队",
"hunter x hunter": "全职猎人",
"howls moving castle": "哈尔的移动城堡",
"kikis delivery service": "魔女宅急便",
"ace combat": "皇牌空战",
"mermaid melody pichi pichi pitch": "人鱼的旋律",
"attack no. 1": "女排No.1",
"devilman": "恶魔人",
"la seine no hoshi": "月光女侠",
"winx club": "魔法俏佳人",
"cats eye": "猫眼三姐妹",
"transformers": "变形金刚",
"high school fleet": "高校舰队",
"shinmai fukei kiruko-san": "新人女警斩子小姐",
"how to train your dragon": "驯龙高手",
"hacka doll": "骇客娃娃",
"kaiju girls": "怪兽娘",
"shinrabansho": "神罗万象",
"azumanga daioh": "阿滋漫画大王",
"galaxy fight": "银河快打",
"youkai hyakkitan": "妖怪百姬谭",
"papa no iu koto wo kikinasai": "要听爸爸的话!",
"himegoto": "搞姬日常",
"nogizaka haruka no himitsu": "乃木坂春香的秘密",
"south park": "南方公园",
"soushin shoujo matoi": "装神少女小缠",
"kindaichi shounen no jikenbo": "金田一少年事件簿",
"kekkai sensen": "血界战线",
"tokyo afterschool summoners": "东京放课后召唤师",
"saga frontier": "沙加开拓者",
"twelve kingdoms": "十二国记",
"atelier series": "炼金工作室",
"atelier marie": "玛莉的工作室",
"atelier elie": "艾莉的工作室",
"atelier lilie": "莉莉的工作室",
"atelier judie": "尤蒂的工作室",
"atelier iris": "伊莉斯的工作室",
"mana khemia": "玛娜传奇",
"atelier rorona": "罗罗娜的工作室",
"atelier totori": "托托莉的工作室",
"atelier meruru": "梅露露的工作室",
"atelier ayesha": "爱夏的工作室",
"atelier escha and logy": "艾斯卡与罗吉的工作室",
"atelier shallie": "夏莉的工作室",
"atelier sophie": "索菲的工作室",
"atelier firis": "菲莉丝的工作室",
"atelier lulua": "露露亚的工作室",
"atelier ryza": "莱莎的工作室",
"atelier lina": "莉娜的工作室",
"my neighbor totoro": "龙猫",
"professor layton": "雷顿教授",
"bubblegum crisis": "泡泡糖危机",
"kamikaze kaitou jeanne": "神风怪盗贞德",
"boruto": "博人传",
"kuromukuro": "黑骸",
"minecraft": "我的世界",
"world masterpiece theater": "世界名作剧场",
"the adventures of tom sawyer": "汤姆·索亚历险记",
"les miserables shoujo cosette": "悲惨世界 少女珂赛特",
"lucy of the southern rainbow": "南方彩虹的露西",
"tico of the seven seas": "七海的堤可",
"space adventure cobra": "哥布拉传奇",
"cutey honey": "甜心战士",
"megazone 23": "无限地带23",
"ganbare robocon": "加油啊!!小露宝",
"moero robocon": "燃烧吧!!小露宝",
"rainbow sentai robin": "彩虹战队罗宾",
"remi nobodys girl": "无家可归的孩子蕾米",
"revolutionary girl utena": "少女革命",
"corrector yui": "Cyber守护星",
"steel angel kurumi": "钢铁天使胡桃",
"zoids": "ZOIDS",
"world of warcraft": "魔兽世界",
"diablo": "暗黑破坏神",
"star trek": "星际迷航",
"binan koukou chikyuu bouei-bu love": "美男高校地球防卫部LOVE!",
"asobi ni iku yo": "玩伴猫耳娘",
"assassins creed": "刺客信条",
"peter pan": "小飞侠",
"romeos blue skies": "罗密欧的蓝天",
"3000 leagues in search of mother": "三千里寻母记",
"alps no shoujo heidi": "阿尔卑斯山的少女",
"anne of green gables": "绿山墙的安妮",
"futari no lotte": "我与我 两个绿蒂",
"katri girl of the meadows": "牧场上的少女卡特莉",
"the bush baby": "大草原上的小天使 灌丛婴猴",
"the story of perrine": "佩琳物语",
"dr. slump": "阿拉蕾",
"zettai muteki raijin-oh": "绝对无敌",
"dirty pair": "搞怪拍档",
"ai no wakakusa monogatari": "爱的小妇人物语",
"the story of pollyanna": "爱少女波丽安娜物语",
"princess sarah": "小公主莎拉",
"tobe isami": "伊沙米大冒险",
"doraemon": "哆啦A梦",
"pretty sammy": "魔法少女砂沙美",
"ochame na futago": "青葱岁月",
"miracle girl limit-chan": "奇迹少女理美",
"mahou no yousei persia": "魔法妖精贝露莎",
"minky momo": "魔法公主明琪桃子",
"majokko megu-chan": "魔女Megu",
"creamy mami": "我是小甜甜",
"magical angel sweet mint": "欢欢仙子",
"sally the witch": "魔法使莎莉",
"mahou shoujo lalabel": "魔法少女拉拉贝尔",
"hana no ko lunlun": "花仙子",
"magical emi": "魔法之星爱美",
"floral magician mary bell": "俏皮小花仙",
"mahou tsukai chappy": "魔法使恰比",
"marvelous melmo": "神奇糖",
"pastel yumi": "魔法偶像神笔由美",
"laputa castle in the sky": "天空之城",
"appleseed": "苹果核战记",
"himitsu no akko-chan": "亚子的秘密",
"yawara": "以柔克刚",
"cyborg 009": "人造人009",
"future boy conan": "未来少年柯南",
"muka muka paradise": "为食龙少爷",
"the goose that laid the golden eggs": "下金蛋的鹅",
"andersen monogatari": "安徒生童话",
"cinderella": "灰姑娘",
"k.o. beast": "KO世纪三兽士",
"trapp family story": "崔普一家物语",
"wakakusa monogatari nan to jo-sensei": "小妇人物语 南与乔老师",
"watashi no ashinaga ojisan": "长腿叔叔",
"nurse angel ririka sos": "守护天使莉莉佳",
"youre under arrest": "逮捕令",
"phantom quest corp": "幽幻怪社",
"urusei yatsura": "福星小子",
"attacker you": "胜利女排",
"giant gorg": "巨神GORG",
"gunslinger girl": "神枪少女",
"yu yu hakusho": "幽游白书",
"stella no mahou": "斯特拉的魔法",
"hinako note": "雏子的笔记",
"hoozuki no reitetsu": "鬼灯的冷彻",
"daiya no ace": "钻石王牌",
"durarara": "无头骑士异闻录 DuRaRaRa!!",
"supernatural": "邪恶力量",
"koi to senkyo to chocolate": "恋爱与选举与巧克力",
"goblin slayer": "哥布林杀手",
"dungeon meshi": "迷宫饭",
"kanokon": "我的狐仙女友",
"ladies versus butlers": "大小姐×执事!",
"arpeggio of blue steel": "苍蓝钢铁的琶音",
"maken-ki": "魔剑姬!",
"expelled from paradise": "乐园追放 -Expelled from Paradise-",
"glasslip": "玻璃之唇",
"hanasaku iroha": "花开伊吕波",
"akaneiro ni somaru saka": "茜色染红的街道",
"hoshizora e kakaru hashi": "架向星空之桥",
"gj-bu": "GJ部",
"kaze no yojimbo": "旋风之用心棒",
"kishin taisen gigantic formula": "机神大战-巨型方程式",
".hack": ".hack",
".hacksign": ".hack//SIGN",
".hackg.u.": ".hack//G.U.",
".hackroots": ".hack//Roots",
".hacklegend of the twilight": ".hack//黄昏的腕轮传说",
"log horizon": "记录的地平线",
"kamisama minarai himitsu no cocotama": "见习神明 秘密的COCOTAMA",
"phantom of inferno": "幻灵镇魂曲",
"dramatical murder": "戏剧性谋杀",
"robotics notes": "机器人笔记",
"rampo kitan game of laplace": "乱步奇谭 拉普拉斯的游戏",
"gravity rush": "重力眩晕",
"cowboy bebop": "星际牛仔",
"wii fit": "Wii Fit",
"uta no prince-sama": "歌之王子殿下",
"hime chen otogi chikku idol lilpri": "变身!公主偶像",
"ib": "Ib",
"ichigo mashimaro": "草莓棉花糖",
"yuusha ni narenakatta ore wa shibushibu shuushoku wo ketsui shimashita.": "当不成勇者的我,只好认真找工作了。",
"chrono crusade": "圣枪修女",
"lost universe": "宇宙刑警",
"amanchu": "蓝海少女!",
"mangaka-san to assistant-san to": "漫画家与助手",
"sisters natsu no saigo no hi": "SISTERS~夏最后之日~",
"tokyo 7th sisters": "东京 7th Sisters",
"7th dragon": "第七龙神",
"project blue earth sos": "蓝色计划-地球SOS",
"sakura hime": "樱姬华传",
"the 3rd birthday": "第三次生日",
"asuka 120": "飞鸟120% 燃烧的学园祭",
"jumping rabbit": "小兔飞飞",
"the fairly oddparents": "反斗家族",
"amagami": "圣诞之吻",
"fosters home for imaginary friends": "亲亲麻吉",
"futurama": "飞出个未来",
"kimi ga yobu megiddo no oka de": "你在米吉多之丘的呼唤",
"kuroko no basuke": "黑子的篮球",
"boku to maou": "魔王与我",
"cerberus": "刻耳柏洛斯",
"robot girls z": "机器人少女Z",
"akibas trip": "秋叶原之旅",
"bravely default": "勇气默示录",
"madan no ou to vanadis": "魔弹之王与战姬",
"star driver": "STAR DRIVER 闪亮的塔科特",
"tales of": "传说",
"tales of phantasia": "幻想传说",
"tales of destiny": "宿命传说",
"tales of eternia": "永恒传说",
"tales of symphonia": "仙乐传说",
"tales of rebirth": "重生传说",
"tales of legendia": "遗迹传说",
"tales of the abyss": "深渊传说",
"tales of innocence": "圣洁传说",
"tales of vesperia": "薄暮传说",
"tales of hearts": "心灵传说",
"tales of graces": "圣恩传说",
"tales of xillia": "无尽传说",
"tales of zestiria": "情热传说",
"tales of berseria": "狂战传说",
"tales of asteria": "星彩传说",
"little witch academia": "小魔女学园",
"rokudenashi majutsu koushi to akashic records": "不正经的魔术讲师与禁忌教典",
"martial champion": "武术冠军",
"virtua fighter": "VR战士",
"muscle bomber": "摔跤霸王",
"aria": "水星领航员",
"rozen maiden": "蔷薇少女",
"soulcalibur": "魂之系列",
"empowered": "Empowered",
"parasite eve": "寄生前夜",
"predator": "铁血战士",
"underworld": "黑夜传说",
"danny phantom": "幻影丹尼",
"the loud house": "喧闹一家亲",
"nodame cantabile": "交响情人梦",
"another": "Another",
"valkyria chronicles": "战场女武神",
"princess lover": "公主恋人",
"witchblade": "魔女之刃",
"warship girls": "战舰少女",
"sexfriend": "SEXFRIEND",
"school days": "日在校园",
"walkure romanze": "少女骑士物语",
"majin bone": "魔神之骨",
"starry sky": "Starry☆Sky",
"amano megumi ha sukidarake": "天野惠浑身是破绽!",
"yowamushi pedal": "飚速宅男",
"black cat": "黑猫",
"superjail": "超级监狱",
"superman": "超人",
"iron man": "钢铁侠",
"iron man armored adventures": "钢铁侠:装甲冒险",
"jackie chan adventures": "成龙历险记",
"avengers": "复仇者联盟",
"monster": "怪物",
"jungle wa itsumo hare nochi guu": "热带雨林的爆笑生活",
"w.i.t.c.h.": "魔力W.i.t.c.h.",
"ninja gaiden": "忍者外传",
"otome wa boku ni koishiteru": "少女爱上姐姐",
"fairy tail": "妖精的尾巴",
"oni chichi": "鬼父",
"clamp gakuen tanteidan": "CLAMP学园侦探团",
"soredemo machi wa mawatteiru": "女仆咖啡厅",
"happy tree friends": "欢乐树的朋友们",
"kare kano": "他和她的事情",
"spongebob squarepants": "海绵宝宝",
"wizard of oz": "绿野仙踪",
"cream lemon": "乳霜柠檬",
"dream c club": "梦幻俱乐部",
"katekyo hitman reborn": "家庭教师HITMAN REBORN!",
"tsugumomo": "怪怪守护神",
"the simpsons": "辛普森一家",
"ano natsu de matteru": "在盛夏等待",
"net ghost pipopa": "网络精灵PIPOPA",
"dominion tank police": "特搜战车队",
"ruin explorers": "秘境探险",
"streets of rage": "怒之铁拳",
"yume no crayon oukoku": "梦之蜡笔王国",
"megaman": "洛克人",
"megaman zero": "洛克人ZERO",
"megaman zx": "洛克人ZX",
"mega man x": "洛克人X",
"megaman battle network": "洛克人EXE",
"mega man legends": "洛克人DASH",
"mega man star force": "流星洛克人",
"konjiki no gash": "金色的卡修",
"super doll licca-chan": "丽佳公主",
"kasumin": "妙妙魔法屋",
"di gi charat": "铃铛猫娘",
"lamento": "挽歌",
"dexters laboratory": "德克斯特的实验室",
"mahoujin guru guru": "咕噜咕噜魔法阵",
"mon colle knights": "六门天外",
"is": "I\"s",
"beast wars": "百变金刚",
"wonder project j2": "J计划2",
"nights into dreams...": "梦精灵",
"waku waku 7": "火热火热7",
"okusan": "新手人妻",
"gakkou no kaidan": "学校怪谈",
"gear fighter dendoh": "GEAR战士电童",
"hand maid may": "袖珍女侍小梅",
"vandread": "银河冒险战记",
"mahou shoujo ai": "魔法少女爱",
"ys": "伊苏",
"yumeria": "梦物语",
"re creators": "Re:CREATORS",
"gasaraki": "饿沙罗鬼",
"yuyushiki": "悠悠式",
"sonic the hedgehog": "刺猬索尼克",
"beat blades haruka": "超昂闪忍遥",
"hikaru no go": "棋魂",
"rosenkreuzstilette": "蔷薇十字小剑",
"kuon no kizuna": "久远之绊",
"viper gts": "蝰蛇GTS",
"dragon age": "龙腾世纪",
"nyan koi": "猫愿三角恋",
"another lady innocent": "Front Innocent",
"historys strongest disciple kenichi": "史上最强弟子兼一",
"growlanser": "梦幻骑士",
"kono bijutsubu ni wa mondai ga aru": "这个美术社大有问题!",
"seikon no qwaser": "圣痕炼金士",
"high school kimengumi": "高校奇面组",
"onmyou taisenki": "阴阳大战记",
"ao no kanata no four rhythm": "苍之彼方的四重奏",
"captain commando": "名将",
"voltage fighter gowcaizer": "超人学园钢帝王",
"legend of lemnear": "极黑之翼",
"duel masters": "决斗大师",
"battle spirits": "战斗之魂",
"galaxy express 999": "银河铁道999",
"gaiking": "新大空魔龙",
"girls frontline": "少女前线",
"zettai karen children": "绝对可怜CHILDREN",
"selector infected wixoss": "选择感染者WIXOSS",
"chain chronicle": "锁链战记",
"the vision of escaflowne": "圣天空战记",
"kodomo no omocha": "玩偶游戏",
"quiz nanairo dreams": "七彩梦",
"rival schools": "私立正义学园",
"medabots": "徽章战士",
"zettai junpaku mahou shoujo": "绝对纯白魔法少女",
"namiuchigiwa no muromi-san": "人鱼又上钩",
"kuttsukiboshi": "紧扣的星星",
"maria-sama ga miteru": "圣母在上",
"youkoso jitsuryoku shijou shugi no kyoushitsu e": "欢迎来到实力至上主义的教室",
"kakegurui": "狂赌之渊",
"hajimete no gal": "第一次的辣妹",
"medaka box": "最强会长黑神",
"suisei no gargantia": "翠星之加尔刚蒂亚",
"mayo chiki": "迷茫管家与懦弱的我",
"rance": "兰斯",
"brave police j-decker": "勇者警察",
"witch craft works": "魔女的使命",
"heavy object": "重装武器",
"baby princess": "宝贝公主",
"bioshock": "生化奇兵",
"bioshock infinite": "生化奇兵:无限",
"akame ga kill": "斩·赤红之瞳!",
"harry potter": "哈利波特",
"tom and jerry": "猫和老鼠",
"mahouka koukou no rettousei": "魔法科高中的劣等生",
"euphoria": "euphoria",
"tangled": "长发公主",
"inside out": "头脑特工队",
"danball senki": "纸箱战机",
"hyper police": "猫狐警探",
"cosmic baton girl comet-san": "彗星公主",
"zone of the enders": "终极地带",
"photo kano": "写真女友",
"the kabocha wine": "南瓜酒",
"joshi shougakusei hajimemashita": "今天开始当女子小学生",
"cardfight vanguard": "卡片战斗先导者",
"the onechanbara": "THE 御姐玫瑰",
"gosick": "GOSICK",
"beyblade": "战斗陀螺",
"big hero 6": "超能陆战队",
"yuragisou no yuuna-san": "汤摇庄的幽奈同学",
"teekyuu": "女高网球部",
"jinsei": "人生",
"rail wars": "RAIL WARS! -日本国有铁道公安队-",
"rokujouma no shinryakusha": "三坪房间的侵略者!?",
"sabagebu": "生存游戏社",
"occultic nine": "超自然9人组",
"fist of the north star": "北斗神拳",
"monster girl quest": "勇者大战魔物娘",
"ghost sweeper mikami": "GS美神 极乐大作战!!",
"battle athletes": "大运动会",
"knights of ramune": "柠檬汽水骑士",
"saint tail": "怪盗圣少女",
"kyouran kazoku nikki": "狂乱家族日记",
"2x2 shinobuden": "酷伊忍者传",
"marriage royale": "皇家新娘",
"choukou tenshi escalayer": "超昂天使 Escalayer",
"mahou senshi sweet knights": "魔法战士 Sweet Knights",
"read or die": "R.O.D",
"uchuu no stellvia": "宇宙星路",
"ore monogatari": "俺物语!!",
"yuruyuri": "摇曳百合",
"death note": "死亡笔记",
"cooking papa": "妙厨老爹",
"rumble roses": "火爆玫瑰",
"genshiken": "现视研",
"pia carrot e youkoso": "欢迎来到Pia Carrot!!",
"pia carrot e youkoso 2": "欢迎来到Pia Carrot!!2",
"pia carrot e youkoso 3": "欢迎来到Pia Carrot!!3",
"bokutachi wa benkyou ga dekinai": "我们真的学不来",
"netoge no yome wa onnanoko ja nai to omotta": "线上游戏的老婆不可能是女生?",
"schoolgirl strikers": "学园少女突袭者",
"danna ga nani o itteiru ka wakaranai ken": "关于完全听不懂老公在说什么的事",
"golden sun": "黄金太阳",
"the grim adventures of billy and mandy": "爱酷一族",
"inspector gadget": "神探加杰特",
"the life and times of juniper lee": "魔法少女Juniper Lee",
"sousei no onmyouji": "双星之阴阳师",
"sengoku collection": "战国Collection",
"doctor strange": "奇异博士",
"knights and magic": "骑士&魔法",
"mahou shoujo ikusei keikaku": "魔法少女育成计划",
"arslan senki": "亚尔斯兰战记",
"chousoku henkei gyrozetter": "超速变形螺旋杰特",
"kengan ashura": "拳愿阿修罗",
"tonari no miko-san wa minna warau": "邻家的巫女在微笑",
"aikatsu": "偶活学园!",
"aho-girl": "笨女孩",
"azur lane": "碧蓝航线",
"isekai shokudou": "异世界食堂",
"baccano": "永生之酒",
"berserk": "剑风传奇",
"isekai wa smartphone to tomo ni.": "带着智能手机闯荡异世界。",
"atelier tanaka": "田中是年龄=没女朋友的魔法师",
"servant x service": "跟班×服务",
"bakuon": "爆音少女!!",
"inou-battle wa nichijou-kei no naka de": "日常系的异能战斗",
"denkigai no honya-san": "电器街的漫画店",
"bladedance of elementalers": "精灵使的剑舞",
"da capo": "初音岛",
"da capo ii": "初音岛II",
"da capo iii": "初音岛III",
"tejina senpai": "魔术前辈",
"valkyrie no bouken": "女武士大冒险",
"mugen senshi valis": "梦幻战士",
"dream hunter rem": "梦猎人丽梦",
"made in abyss": "来自深渊",
"wonder momo": "神奇桃子",
"hero bank": "英雄银行",
"monsuno": "兽旋战斗",
"tengai makyou": "天外魔境",
"wingman": "银翼超人",
"fight ippatsu juuden-chan": "魔力充电娘",
"needless": "超能力大战",
"the sacred blacksmith": "圣剑锻造师",
"kampfer": "肯普法",
"onmyoji": "阴阳师",
"brynhildr in the darkness": "极黑的布伦希尔特",
"super real mahjong": "超真实麻将",
"journey to the west": "西游记",
"busou renkin": "武装炼金",
"jigoku shoujo": "地狱少女",
"midori no hibi": "美鸟的日记",
"seirei no moribito": "精灵守护者",
"air gear": "飞轮少年",
"bamboo blade": "竹刀少女",
"dance in the vampire bund": "吸血鬼同盟",
"freezing": "零度战姬",
"omamori himari": "守护猫娘绯鞠",
"shinkyoku soukai polyphonica": "神曲奏界Polyphonica",
"tenjou tenge": "天上天下",
"unbalance x unbalance": "萌道鲜师",
"ange vierge": "圣洁天使",
"blend s": "调教咖啡厅",
"command and conquer": "命令与征服",
"uninhabited planet survive": "星球流浪记",
"fatal fury": "饿狼传说",
"princess crown": "公主王冠",
"burst angel": "爆裂天使",
"k": "K",
"prince of tennis": "网球王子",
"lord of lords ryu knight": "霸王大系龙骑士",
"tonde buurin": "飞天少女猪",
"nano core": "纳米核心",
"elsword": "艾尔之光",
"betterman": "进化战记",
"tenshi ni narumon": "天使不设防!",
"kamen no maid guy": "假面男仆",
"etrian odyssey": "世界树的迷宫",
"in search of the lost future": "寻找失去的未来",
"art of fighting": "龙虎之拳",
"burning force": "燃烧战队",
"golden axe": "战斧",
"popful mail": "啵咕物语",
"the wing of madoola": "玛多拉之翼",
"gakusen toshi asterisk": "学战都市Asterisk",
"tokyo ghoul": "东京食尸鬼",
"doki doki literature club": "心动文学俱乐部!",
"regalia the three sacred stars": "雷加利亚三圣星",
"kaze no densetsu xanadu": "风之传说XANADU",
"tower of druaga": "迷宫塔",
"valkyrie profile": "北欧女神",
"serial experiments lain": "玲音",
"ansatsu kyoushitsu": "暗杀教室",
"mirrors edge": "镜之边缘",
"galilei donna": "伽利略少女",
"teenage mutant ninja turtles": "忍者神龟",
"all purpose cultural cat girl nuku nuku": "万能文化猫娘",
"absolute duo": "绝对双刃",
"avatar": "阿凡达",
"avatar the last airbender": "降世神通:最后的气宗",
"coppelion": "核爆末世录",
"maison ikkoku": "相聚一刻",
"mikakunin de shinkoukei": "未确认进行式",
"tasogare otome x amnesia": "黄昏少女×失忆",
"guild wars": "激战",
"battle girl high school": "战斗女子高校",
"nausicaa of the valley of the wind": "风之谷",
"porco rosso": "红猪",
"princess mononoke": "幽灵公主",
"the secret world of arrietty": "借东西的小人阿莉埃蒂",
"mimi wo sumaseba": "侧耳倾听",
"space patrol luluco": "宇宙巡警露露子",
"shakunetsu no takkyuu musume": "灼热的乒乓球娘",
"silver spoon": "银之匙",
"imouto sae ireba ii.": "如果有妹妹就好了。",
"bang dream": "BanG Dream!",
"fantasy earth zero": "幻想大陆",
"fantastic four": "神奇四侠",
"wonder woman": "神奇女侠",
"family guy": "恶搞之家",
"galaxy angel": "银河天使",
"nurse witch komugi": "魔法护士小麦",
"popotan": "蒲公英之恋",
"xenoblade": "异度之刃",
"xenoblade x": "异度之刃X",
"xenoblade chronicles 2": "异度之刃2",
"xenogears": "异度装甲",
"xenosaga": "异度传说",
"shining sword romance": "剑芒罗曼史",
"shining in the darkness": "光明与黑暗",
"shining force": "光明力量",
"shining force exa": "光明力量EXA",
"shining force feather": "光明力量 羽翼",
"shining soul": "光明之魂",
"shining tears": "光明之泪",
"shining wind": "光明之风",
"shining hearts": "光明之心",
"shining blade": "光明之刃",
"shining ark": "光明之舟",
"shining resonance": "光明之响",
"lunar silver star story": "露娜 银河之星物语",
"lunar eternal blue": "露娜 永恒之蓝",
"maria holic": "玛莉亚狂热",
"boku no pico": "我的Pico",
"azure striker gunvolt": "苍蓝雷霆:刚巴尔特",
"narutaru": "星星公主",
"bokusatsu tenshi dokuro-chan": "扑杀天使朵库萝",
"rick and morty": "瑞克和莫蒂",
"slow start": "Slow Start",
"princess principal": "Princess Principal",
"sangokushi taisen": "三国志大战",
"sengoku taisen": "战国大战",
"chinpui": "大耳鼠",
"pani poni dash": "不可思议的教室",
"suigetsu": "水月",
"mizuiro": "水色",
"dragonaut": "龙鸣",
"under night in-birth": "夜下降生",
"world trigger": "境界触发者",
"mouse": "MØUSE",
"atashinchi": "我们这一家",
"crayon shin-chan": "蜡笔小新",
"looney tunes": "乐一通",
"yuru camp": "摇曳露营△",
"saiki kusuo no psi nan": "齐木楠雄的灾难",
"monster strike": "怪物弹珠",
"noragami": "野良神",
"z slash x": "Z/X",
"shin angyo onshi": "新暗行御史",
"kouchuu ouja mushiking": "甲虫王者",
"darling in the franxx": "DARLING in the FRANXX",
"fairy fencer f": "妖精剑士f",
"honkai gakuen": "崩坏学园",
"quiz magic academy": "问答魔法学院",
"houseki no kuni": "宝石之国",
"atlach-nacha": "ATLACH=NACHA",
"princess maker": "美少女梦工场",
"grisaia no kajitsu": "灰色的果实",
"sakura trick": "樱Trick",
"pop team epic": "pop子和pipi美的日常",
"lollipop chainsaw": "电锯甜心",
"alternative girls": "妃十三学园 Alternative Girls",
"deadpool": "死侍",
"mitsuboshi colors": "三颗星彩色冒险",
"nekopara": "猫娘乐园",
"keijo": "竞女!!!!!!!!",
"the emoji movie": "表情奇幻冒险",
"animal crossing": "动物之森",
"black clover": "黑色五叶草",
"blues clues": "蓝色斑点狗",
"cooking mama": "料理妈妈",
"dragons lair": "龙穴历险记",
"romance of the three kingdoms": "三国演义",
"death march kara hajimaru isekai kyousoukyoku": "爆肝工程师的异世界狂想曲",
"shironeko project": "白猫计划",
"toji no miko": "刀使之巫女",
"major": "棒球大联盟",
"sora yori mo tooi basho": "比宇宙更远的地方",
"border break": "边境保卫战",
"last period": "最终休止符 -无止境的螺旋物语-",
"stella glow": "星光幻歌",
"ryuuou no oshigoto": "龙王的工作!",
"uma musume pretty derby": "赛马娘Pretty Derby🐎",
"os-tan": "OS娘",
"sunohara-sou no kanrinin-san": "春原庄的管理员小姐",
"yotsubato": "四叶妹妹!",
"dragon nest": "龙之谷",
"kuroinu kedakaki seijo wa hakudaku ni somaru": "黑兽~被白浊沾污的高傲圣女~",
"initial d": "头文字D",
"final romance": "对战偶像麻雀:最终罗曼史",
"violet evergarden": "紫罗兰永恒花园",
"sokkou seitokai": "速攻学生会",
"shantae": "桑塔",
"nekojishi": "家有大猫",
"tomo-chan wa onnanoko": "小智是女孩啦!",
"strawberry panic": "惊爆草莓",
"isekai izakaya nobu": "异世界居酒屋「阿信」",
"alias carnival": "ALIA's CARNIVAL!",
"tesagure bukatsu-mono": "摸索吧!部活剧",
"dna2": "DNA²",
"guardians of the galaxy": "银河护卫队",
"legendz": "龙王传说",
"cross ange": "天使与龙的轮舞",
"dungeon fighter online": "地下城与勇士",
"warhammer": "战锤",
"rakudai kishi no cavalry": "落第骑士英雄谭",
"xxxholic": "×××HOLiC",
"beatless": "BEATLESS",
"ao no exorcist": "青之驱魔师",
"gate - jieitai kano chi nite kaku tatakaeri": "GATE奇幻自卫队",
"playerunknowns battlegrounds": "绝地求生",
"masamune-kun no revenge": "政宗君的复仇",
"hataraku saibou": "工作细胞",
"binbougami ga": "穷神来了",
"princess connect": "公主连结Re:Dive",
"kuzu no honkai": "人渣的本愿",
"elfen lied": "妖精的旋律",
"katanagatari": "刀语",
"plastic memories": "可塑性记忆",
"ijiranaide nagatoro-san": "不要欺负我,长瀞同学",
"bijin onna joushi takizawa-san": "美女上司泷泽小姐",
"bible black": "黑暗圣经",
"uzaki-chan wa asobitai": "宇崎酱想要玩耍!",
"one kagayaku kisetsu e": "ONE~光辉的季节~",
"guardian heroes": "守护英雄",
"the incredibles": "超人总动员",
"yakitate japan": "日式面包王",
"planetarian": "星之梦",
"cave story": "洞窟物语",
"btooom": "BTOOOM!惊爆游戏",
"nichijou": "日常",
"isekai maou to shoukan shoujo no dorei majutsu": "异界少女召唤术",
"winnie the pooh": "小熊维尼",
"bravest warriors": "无惧勇士",
"candy candy": "小甜甜",
"moana": "海洋奇缘",
"scooby-doo": "叔比狗",
"miraculous ladybug": "瓢虫少女",
"inazuma eleven go": "闪电十一人GO",
"mushibugyo": "虫奉行",
"kid icarus": "光神话 帕尔提娜之镜",
"legend of queen opala": "奥帕拉女王传奇",
"shoujo kageki revue starlight": "少女歌剧Revue Starlight",
"deathsmiles": "死亡微笑",
"kaitou joker": "怪盗Joker",
"qualidea code": "Qualidea Code",
"shuumatsu no izetta": "终末的伊泽塔",
"donkey kong": "大金刚",
"whistle": "哨声响起",
"ore ga suki nano wa imouto dakedo imouto ja nai": "我喜欢的是小说里的你",
"seishun buta yarou wa bunny girl senpai no yume o minai": "青春猪头少年不会梦到兔女郎学姐",
"ssss.gridman": "SSSS.GRIDMAN",
"barbie": "芭比娃娃",
"hellboy": "地狱男爵",
"akebi no mi": "山姬之实",
"stardew valley": "星露谷物语",
"tensei shitara slime datta ken": "关于我转生变成史莱姆这档事",
"quiz rpg mahoutsukai to kuroneko no wiz": "黑猫维兹",
"boku no dorei shoukan": "我的奴隶妓院",
"silent mobius": "魔法阵都市",
"sora wo kakeru shoujo": "穿越宇宙的少女",
"cevio": "CeVIO",
"gotoubun no hanayome": "五等分的新娘",
"pan de peace": "面包带来和平",
"borderlands": "无主之地",
"usagi-chan de cue": "天生兔女郎",
"ueno-san wa bukiyou": "笨拙之极的上野",
"wake up girls": "Wake Up, Girls!",
"golden kamuy": "黄金神威",
"komi-san wa komyushou desu.": "古见同学有交流障碍症",
"kaguya-sama wa kokurasetai": "辉夜大小姐想让我告白",
"watashi ni tenshi ga maiorita": "天使降临到我身边!",
"darkest dungeon": "暗黑地牢",
"idol wars z": "IDOL WARS Z",
"sewayaki kitsune no senko-san": "贤惠幼妻仙狐小姐",
"shomin sample": "我被绑架到贵族女校当“庶民样本”",
"arknights": "明日方舟",
"kimetsu no yaiba": "鬼灭之刃",
"tenki no ko": "天气之子",
"arifureta shokugyou de sekai saikyou": "平凡职业造就世界最强",
"asobi asobase": "游戏3人娘",
"zombie land saga": "佐贺偶像是传奇",
"nazo no kanojo x": "谜样女友X",
"shoujo shuumatsu ryokou": "少女终末旅行",
"dumbbell nan kilo moteru": "流汗吧!健身少女",
"thumbelina": "拇指姑娘",
"masou gakuen hxh": "魔装学园H×H",
"hundred": "百武装战记",
"dr. stone": "石纪元",
"uchi no ko no tame naraba ore wa moshikashitara maou mo taoseru kamo shirenai": "为了女儿,我说不定连魔王都能干掉。",
"tsujou kougeki ga zentai kougeki de 2-kai kougeki no okaasan wa suki desu ka": "普通攻击是全体二连击,这样的妈妈你喜欢吗?",
"wagaya no oinari-sama": "我家有个狐仙大人",
"enen no shouboutai": "炎炎消防队",
"lord el-melloi ii sei no jikenbo": "君主·埃尔梅罗二世事件簿",
"inuyasha": "犬夜叉",
"jashin-chan dropkick": "邪神与厨二病少女",
"ishuzoku reviewers": "异种族风俗娘评鉴指南",
"d-frag": "属性同好会",
"heavens memo pad": "神的记事本",
"houkago play": "放课后play",
"ookiku furikabutte": "王牌投手 振臂高挥",
"black bullet": "漆黑的子弹",
"mawaru penguindrum": "回转企鹅罐",
"ben-to": "便·当",
"one week friends": "一周的朋友",
"sanoba witch": "魔女的夜宴",
"tonari no seki-kun": "上课小动作",
"high score girl": "高分少女",
"claymore": "大剑",
"sinoalice": "死亡爱丽丝",
"machikado mazoku": "街角魔族",
"the hunchback of notre dame": "钟楼怪人",
"kodoku no gourmet": "孤独的美食家",
"kishuku gakkou no juliet": "寄宿学校的朱丽叶",
"kemurikusa": "烟草",
"tate no yuusha no nariagari": "盾之勇者成名录",
"watashi nouryoku wa heikinchi de tte itta yo ne": "我,不是说了能力要平均值么!",
"itai no wa iya nano de bougyoryoku ni kyokufuri shitai to omoimasu.": "因为太怕痛就全点防御力了",
"rurouni kenshin": "浪客剑心",
"gankutsuou": "岩窟王",
"kiddy grade": "天使特警",
"yat space travel agency": "星际漫游YAYAYA",
"teisou gyakuten sekai": "贞操逆转世界",
"mondaiji-tachi ga isekai kara kuru sou desu yo": "问题儿童都来自异世界?",
"alice gear aegis": "机战少女Alice",
"houkago no pleiades": "放学后的昴星团",
"senren banka": "千恋*万花",
"kiratto pri chan": "美妙☆频道",
"cafe stella to shinigami no chou": "星光咖啡馆与死神之蝶",
"riddle joker": "RIDDLE JOKER",
"grand theft auto": "侠盗猎车手",
"hitori bocchi no marumaru seikatsu": "一个人的OO小日子",
"asteroid in love": "恋爱小行星",
"koi wa ameagari no you ni": "恋如雨止",
"fire emblem three houses": "火焰之纹章 风花雪月",
"kanojo okarishimasu": "租借女友",
"15 bishoujo hyouryuuki": "15美少女漂流记",
"ore no natsuyasumi": "我的暑假",
"shinchou yuusha kono yuusha ga ore tueee kuse ni shinchou sugiru": "这个勇者明明超强却过分慎重",
"helltaker": "Helltaker",
"cyborg kuro-chan": "超级酷乐猫",
"oretachi ni tsubasa wa nai": "我们没有翅膀",
"blade of the immortal": "无限之住人",
"nande koko ni sensei ga": "为什么老师会在这里!?",
"what happens in vegas": "情迷拉斯维加斯",
"ore o suki nano wa omae dake kayo": "喜欢本大爷的竟然就你一个?",
"tricolour lovestory": "三色△绘恋",
"mahjong soul": "雀魂麻将",
"genshin impact": "原神",
"mobile suit gundam the 08th ms team": "机动战士高达 第08MS小队",
"hoshizora no memoria": "星空的记忆",
"bocchi kaibutsu to moumoku shoujo": "孤独怪物与盲少女",
"choujin koukousei-tachi wa isekai demo yoyuu de ikinuku you desu": "超人高中生们即便在异世界也能从容生存!",
"maou-sama retry": "重来吧,魔王大人!",
"maitetsu": "爱上火车",
"houkago teibou nisshi": "放学后海堤日记",
"ochikobore fruit tart": "满溢的水果挞",
"comic girls": "Comic Girls",
"endro": "Endro!",
"harukana receive": "遥的接球",
"majo no tabitabi": "魔女之旅",
"chainsaw man": "电锯人",
"josou sanmyaku": "女装山脉",
"penguin highway": "企鹅公路",
"irotoridori no sekai": "五彩斑斓的世界",
"tokyo xanadu": "东京迷城",
"terra battle": "地球战争",
"summer pockets": "Summer Pockets",
"the tatami galaxy": "四叠半神话大系",
"glitch techs": "电玩先锋",
"the owl house": "猫头鹰魔法社",
"maoujou de oyasumi": "在魔王城说晚安",
"dungeons and dragons": "龙与地下城",
"lilo and stitch": "星际宝贝",
"my life as a teenage robot": "我的青少年机器人时代",
"milo murphys law": "迈罗·墨菲定律",
"phineas and ferb": "飞哥与小佛",
"cthulhu mythos": "克苏鲁神话",
"kipo and the age of wonderbeasts": "奇波和神奇动物的时代",
"amphibia": "奇幻沼泽",
"american dragon jake long": "美国龙:杰克龙",
"hazbin hotel": "地狱客栈",
"hotel transylvania": "精灵旅社",
"hilda": "希尔达",
"the dragon prince": "龙太子",
"code lyoko": "虚幻勇士",
"the smurfs": "蓝精灵",
"young justice": "少年正义联盟",
"justice league": "正义联盟",
"avalon code": "创世法典",
"doctor who": "神秘博士",
"rune factory": "符文工房",
"coraline": "鬼妈妈",
"dororo": "多罗罗",
"sekiro shadows die twice": "只狼:影逝二度",
"kamihime project": "神姬Project",
"merc storia": "梅露可物语",
"twelve forever": "永远12岁",
"warriors orochi": "无双大蛇",
"little nightmares": "小小噩梦",
"healin good precure": "元气魔法♡光之美少女",
"uchi no maid ga uzasugiru": "我家的女仆有够烦!",
"flying witch": "飞翔的魔女",
"mushoku tensei": "无职转生",
"tanaka-kun wa itsumo kedaruge": "田中君总是如此慵懒",
"yakusoku no neverland": "约定的梦幻岛",
"iya na kao sare nagara opantsu misete moraitai": "很想被人用一脸嫌弃的眼神把胖次给我看",
"wrestle angels": "摔角天使",
"nijisanji": "彩虹社",
"blue archive": "蔚蓝档案",
"the legend of luo xiaohei": "罗小黑战记",
"sk8 the infinity": "SK8 无限滑板",
"beatmania": "狂热节拍",
"honzuki no gekokujou": "小书痴的下克上",
"oide yo mizuryuu kei land": "欢迎光临!水龙敬乐园",
"shuriken sentai ninninger": "手里剑战队忍忍者",
"hajimete no hitozuma": "第一次的人妻体验",
"sdorica": "Sdorica",
"kaifuku jutsushi no yarinaoshi": "回复术士的重启人生",
"sd gundam sangokuden": "SD高达三国传",
"promare": "普罗米亚",
"ssss.dynazenon": "SSSS.电光机王",
"yagate kimi ni naru": "终将成为你",
"maji de watashi ni koi shinasai": "请认真的和我恋爱",
"lodoss-tou senki": "罗德岛战记",
"tantei wa mou shindeiru.": "侦探已死",
"the secret of kells": "凯尔经的秘密",
"anarchy reigns": "极度混乱",
"tropical-rouge precure": "热情闪耀!光之美少女",
"jujutsu kaisen": "咒术回战",
"shugo chara": "守护甜心",
"manatsu no yo no inmu": "仲夏夜之淫梦 | Cookie☆",
"mujaki no rakuen": "无邪气乐园",
"hololive": "Hololive",
"hinamatsuri": "超能力女儿",
"citrus": "citrus~柑橘味香气~",
"tsubasa reservoir chronicle": "翼·年代记",
"yamada-kun to 7-nin no majo": "山田君与7人魔女",
"aki sora": "秋日天空",
"beelzebub": "魔王奶爸",
"kaichou wa maid-sama": "会长是女仆大人",
"el shaddai": "全能之神:梅塔特隆的升天",
"plants vs. zombies": "植物大战僵尸",
"madou king granzort": "魔动王",
"sono hanabira ni kuchizuke o": "亲吻那片花瓣🌸",
"jormungand": "军火女王",
"the wolf and the seven young kids": "狼和七只小山羊",
"the ugly duckling": "丑小鸭",
"the little match girl": "卖火柴的小女孩",
"hansel and gretel": "糖果屋",
"slime taoshite 300-nen shiranai uchi ni level max ni nattemashita": "打了300年的史莱姆,不知不觉就练到了满级",
"shinsekai yori": "来自新世界",
"tonikaku kawaii": "总之就是非常可爱",
"danshi koukousei no nichijou": "男子高中生的日常",
"seitokai yakuindomo": "妄想学生会",
"parasyte": "寄生兽",
"mairimashita iruma-kun": "入间同学入魔了",
"yubisaki milk tea": "指尖奶茶",
"kyoukai no rinne": "境界之轮回",
"shuumatsu no harem": "终末的后宫",
"bishoujo mangekyou": "美少女万华镜",
"koe de oshigoto": "声优初体验!",
"id invaded": "异度侵入 ID:INVADED",
"hataage kemono michi": "萌兽宠物店",
"valkyria chronicles 2": "战场女武神2",
"valkyria chronicles 3": "战场女武神3",
"kumo desu ga nani ka": "转生成蜘蛛又怎样!",
"kuma kuma kuma bear": "熊熊勇闯异世界",
"marco to ginga ryuu": "丸子与银河龙",
"moyashimon": "萌菌物语",
"wonder egg priority": "奇蛋物语",
"love live superstar": "Love Live! Superstar!!",
"tales of arise": "破晓传说",
"osananajimi ga zettai ni makenai love comedy": "青梅竹马绝对不会输的恋爱喜剧",
"buried stars": "深埋之星",
"gunbuster": "飞跃巅峰",
"13 sentinels aegis rim": "十三机兵防卫圈",
"infinite space": "无限航路",
"tonari no kyuuketsuki-san": "邻家索菲",
"rabi ribi": "Rabi-Ribi",
"little witch nobeta": "小魔女诺贝塔",
"mieruko-chan": "看得见的女孩",
"shigatsu wa kimi no uso": "四月是你的谎言",
"axis powers hetalia": "黑塔利亚 Axis Powers",
"disney twisted-wonderland": "迪士尼扭曲仙境",
"sono bisque doll wa koi o suru": "更衣人偶坠入爱河",
"hypnosis mic": "催眠麦克风",
"project sekai": "世界计划",
"needy streamer overload": "主播女孩重度依赖",
"elden ring": "艾尔登法环",
"otome game no hametsu flag shika nai akuyaku reijou ni tensei shiteshimatta...": "转生成为了只有乙女游戏破灭Flag的邪恶大小姐",
"osomatsu-san": "阿松",
"arena of valor": "王者荣耀",
"douluo continent": "斗罗大陆",
"grand blue": "碧蓝之海",
"blue submarine no. 6": "青之6号",
"jaku-chara tomozaki-kun": "弱势角色友崎君",
"aikatsu friends": "偶活学园Friends!",
"jahy-sama wa kujikenai": "贾希大人不气馁",
"ling long incarnation": "灵笼:INCARNATION",
"kouyoku senki exs-tia": "光翼战姬EXS-TIA",
"assault lily": "突击莉莉",
"harem tengoku da to omottara yandere jigoku datta.": "原本以为是后宫天国谁知道竟是病娇地狱",
"akebi-chan no sailor fuku": "明日同学的水手服",
"mahou shoujo celesphonia": "魔法少女天穹法妮雅",
"noel": "NOeL: NOT DiGITAL",
"tsumamigui": "妻中蜜",
"senpai ga uzai kouhai no hanashi": "关于前辈很烦人的事",
"neko no otera no chion-san": "猫之寺的知恩姐",
"spy x family": "间谍过家家",
"kawaikereba hentai demo suki ni natte kuremasu ka": "只要长得可爱,即使是变态你也喜欢吗?",
"dorohedoro": "异兽魔都",
"bokura wa minna kawaisou": "我们大家的河合庄",
"game of thrones": "权力的游戏",
"red pride of eden": "伊甸园的骄傲",
"nana to kaoru": "奈奈与薰的SM日记",
"kawaii dake ja nai shikimori-san": "式守同学不只可爱而已",
"toaru project": "魔法禁书系列",
"tenka hyakken": "天华百剑",
"oshiro project": "御城少女Project",
"amaama to inazuma": "天真与闪电",
"kin-iro loveriche": "金辉恋曲四重奏",
"ganbare douki-chan": "加油吧同期酱",
"drakengard": "龙背上的骑兵",
"bobobo-bo bo-bobo": "鼻毛真拳",
"majuu senshi luna varga": "魔兽战士",
"saijaku muhai no bahamut": "最弱无败神装机龙",
"trinity seven": "七人魔法使",
"venus eleven vivid": "Venus Eleven Vivid!",
"emil chronicle online": "艾米尔编年史",
"megido 72": "恶魔72",
"umihara kawase": "海腹川背",
"owari no seraph": "终结的炽天使",
"starless": "STARLESS",
"smite": "神之浩劫",
"takopii no genzai": "章鱼噼的原罪",
"super cub": "本田小狼与我",
"kekkaishi": "结界师",
"senyoku no sigrdrifa": "战翼的希格德莉法",
"densetsu no yuusha da garn": "勇者传说",
"video girl ai": "电影少女",
"last origin": "Last Origin",
"seven mortal sins": "sin 七大罪",
"jibaku shounen hanako-kun": "地缚少年花子君",
"shinkansen henkei robo shinkalion": "新干线战士",
"07-ghost": "07-GHOST",
"10 carat torte": "天降托蒂!",
"11eyes": "11eyes -罪与罚与赎的少女-",
"12-sai.": "12岁。",
"13 reasons why": "十三个理由",
"21 emon": "21卫门",
"nanabun no nijyuuni": "22/7",
"3-gatsu no lion": "3月的狮子",
"81diver": "81diver",
"91 days": "91Days",
"a dog of flanders": "弗兰德斯的狗",
"a little snow fairy sugar": "小小雪精灵",
"a nightmare on elm street": "猛鬼街",
"kimi no iru machi": "有你的小镇",
"a.d.police": "A.D.POLICE",
"abenobashi mahou shoutengai": "阿倍野桥魔法商店街",
"acca 13-ku kansatsu-ka": "ACCA13区监察课",
"acchi kocchi": "一起一起这里那里",
"adachi to shimamura": "安达与岛村",
"adventures of the gummi bears": "妙妙熊历险记",
"agarest senki": "亚迦雷斯特战记",
"ai no senshi rainbowman": "彩虹化身侠",
"ai shimai": "爱姐妹",
"ai yori aoshi": "青出于蓝",
"aim for the ace": "网球甜心",
"air master": "Air Master",
"akatsuki blitzkampf": "葬晓电光战记",
"akira": "阿基拉",
"aku no onna kanbu": "恶之女干部",
"akuyaku reijou nanode last boss o kattemimashita": "作为恶役大小姐就该养魔王",
"alice tantei kyoku": "爱丽丝侦探局",
"alien 9": "校园外星人",
"alien vs predator": "异形大战铁血战士",
"allison to lillia": "艾莉森与莉莉亚",
"a.i. ga tomaranai": "电脑情人梦",
"akihabara dennou gumi": "秋叶原电脑组",
"alpen rose": "阿尔卑斯杜鹃",
"alvin and the chipmunks": "鼠来宝",
"am driver": "滑板战士",
"amaenaideyo": "极乐天师",
"amazing nurse nanako": "菜菜子解体诊书",
"american dad": "特工老爹",
"american mcgees alice": "爱丽丝梦游魔境",
"amnesia": "失忆症",
"an american tail": "美国鼠谭",
"ane doki": "御姐百分百",
"ane haramix": "姐姐☆懷孕",
"angel blade": "Angel Blade",
"animal yokochou": "动物横町",
"animaniacs": "狂欢三宝",
"anna millers": "安娜·米勒",
"anne happy": "Anne Happy♪",
"anpanman": "面包超人",
"ao no flag": "青旗",
"aoharu x kikanjuu": "青春×机关枪",
"aoi shiro": "青城",
"aoi umi no tristia": "发明工坊",
"ape escape": "捉猴啦",
"ar nosurge": "Ar nosurge ~献给诞生之星的祈祷诗~",
"ciel nosurge": "静籁之空 ~献给失落之星的诗~",
"ar tonelico": "魔塔大陆",
"ar tonelico qoga": "魔塔大陆3",
"araiguma rascal": "小浣熊",
"arcana famiglia": "魔力家族",
"area no kishi": "足球骑士",
"ares no tsubasa": "传奇之翼",
"arete hime": "阿莱蒂公主",
"armored trooper votoms": "装甲骑兵波德姆兹",
"arrow emblem hawk of the grand prix": "神威赛车手",
"asa made jugyou chu": "授课到天亮Chu!",
"ashita e free kick": "踢向明天",
"ashita no joe": "明日之丈",
"ask dr. rin": "恋爱占卜师",
"asoko de hataraku musubu-san": "在那里工作的结小姐",
"astro fighter sunred": "天体战士桑雷德",
"astro plan": "太空历险记",
"asura cryin": "魔神相克者",
"atsumare fushigi kenkyuubu": "集合!不可思议研究社",
"aura battler dunbine": "圣战士丹拜因",
"ayashi no ceres": "梦幻妖子",
"azfareo no sobayounin": "苍龙的仆人",
"azuki-chan": "小红豆",
"b gata h kei": "B型H系",
"b-daman": "B传说!战斗弹珠人",
"back to the future": "回到未来",
"bagi the monster of mighty nature": "大自然的魔兽巴奇",
"bakuen campus guardress": "爆炎学院",
"bakugan": "爆丸",
"bakunyuu maid kari": "爆乳女仆狩猎",
"bakutou sengen daigunder": "爆斗宣言大钢弹",
"baldr force": "BALDR FORCE",
"ballroom e youkoso": "舞动青春",
"band yarouze": "来组乐队吧!",
"banished from the heros party i decided to live a quiet life in the countryside": "因为不是真正的伙伴而被逐出勇者队伍,流落到边境展开慢活人生",
"banjo-kazooie": "班卓熊大冒险",
"banner of the stars": "星界的战旗",
"baribari densetsu": "极速狂飙",
"battery": "野球少年",
"battle angel alita": "铳梦",
"battle arena toshinden": "斗神传",
"battle royal high school": "真魔神传",
"beck": "BECK",
"beelzebub-jou no okinimesu mama.": "只要贝尔哲布布大小姐喜欢就好",
"beet the vandel buster": "冒险王比特",
"beetlejuice": "阴间大法师",
"bemubemu hunter kotengu tenmaru": "伏魔小旋风",
"bernard-jou iwaku.": "伯纳德小姐说",
"beyond oasis": "托尔的传说",
"big wars": "Big Wars",
"binchou-tan": "备长炭",
"binzume yousei": "瓶诘妖精",
"birdy the mighty": "铁腕女警",
"bishounen tanteidan": "美少年侦探团",
"black butler": "黑执事",
"black desert online": "黑色沙漠",
"black jack": "怪医黑杰克",
"black magic m-66": "黑魔术玛丽奥M-66",
"blade runner": "银翼杀手",
"blast of tempest": "绝园的暴风雨",
"blood plus": "血战",
"blood royale": "BLOOD ROYAL",
"blood-c": "BLOOD-C",
"bloodstained": "血污",
"bloody roar": "血腥咆哮",
"blue dragon": "蓝龙",
"blue spring ride": "青春之旅",
"bna brand new animal": "动物新世代 BNA",
"boku dake ga inai machi": "只有我不存在的城市",
"boku no kanojo ga majimesugiru shobitch na ken": "关于我女友是个一本正经的碧池这件事",
"boku to misaki-sensei": "我和美咲老师",
"boku to roboko": "我与机器子",
"bokura no taiyou": "我们的太阳",
"bokutachi no remake": "我们的重制人生",
"bomberman jetters": "轰炸超人",
"boogiepop": "不吉波普",
"bounen no xamdou": "亡念之扎姆德",
"braceface": "Braceface",
"brandy and mr. whiskers": "小布与伟仔",
"bratz": "Bratz",
"brave 10": "BRAVE10",
"brave express might gaine": "勇者特急队",
"brave fencer musashi": "勇敢的剑士 武藏传",
"brave nine": "Brave Nine",
"brave story": "勇者物语",
"bravestarr": "布雷斯塔警长",
"breakers": "BREAKERS",
"breath of fire": "龙息之焰",
"breath of fire ii": "龙息之焰II",
"breath of fire iii": "龙息之焰III",
"breath of fire iv": "龙息之焰IV",
"breath of fire v": "龙息之焰V",
"breath of fire 6": "龙息之焰6",
"broken blade": "破刃之剑",
"bubuki buranki": "舞武器·舞乱伎",
"bucky ohare": "Bucky O'Hare",
"buffy the vampire slayer": "吸血鬼猎人巴菲",
"bully": "恶霸鲁尼",
"bungou to alchemist": "文豪与炼金术师",
"burn up": "杀人科",
"burn up w": "杀人科 W",
"burn up scramble": "杀人科 SCRAMBLE",
"busou shoujo machiavellianism": "武装少女Machiavellianism",
"buzz lightyear of star command": "巴斯光年的星际使命",
"c the money of soul and possibility control": "C钱‧未来式",
"cage of eden": "逃离伊甸园",
"caligula": "卡里古拉",
"call me by your name": "请以你的名字呼唤我",
"call of duty": "使命召唤",
"can can bunny": "Can Can Bunny",
"carole and tuesday": "卡罗尔与星期二",
"casshan": "再造人卡辛",
"casshern sins": "卡辛~罪~",
"fantasy bishoujo juniku ojisan to": "与变成了异世界美少女的大叔一起冒险",
"trauma center": "超执刀",
"alchemy stars": "白夜极光",
"genkai tokki monster monpiece": "限界凸骑 Monster Monpiece",
"castlevania": "恶魔城",
"casual romance club": "放学后恋爱俱乐部",
"chalkzone": "粉笔世界",
"chaos breaker": "混沌斩断",
"chaos child": "混沌之子",
"chaos head": "混沌之脑",
"cheer danshi": "男子啦啦队!!",
"chibi maruko-chan": "樱桃小丸子",
"chibi vampire": "增血鬼果林",
"chichi chichi": "乳乳乳乳",
"chikyu misaki": "地球美纱树",
"childs play": "鬼娃回魂",
"chio-chan no tsuugakuro": "千绪的通学路",
"chip n dale rescue rangers": "救援突击队",
"cho aniki": "超兄贵",
"chogattai majutsu robot ginguiser": "超合体魔术机器人",
"chokotto sister": "我的裘可妹妹",
"chou dokyuu shoujo 4946": "超弩级少女4946",
"chou kuse ni narisou": "城市小飞女",
"choudenshi bioman": "超电子生化人",
"chouja raideen": "超者雷登",
"choujikuu kidan southern cross": "超时空骑团",
"choujuu kishin dancougar": "超兽机神",
"choukou shinki ixseal": "超昂神骑爱克希尔",
"chrono cross": "穿越时空",
"chrono trigger": "时空之轮",
"chu-bra": "青春CUP",
"chuuka ichiban": "中华一番!",
"class of heroes": "剑与魔法与学园",
"clock tower": "钟楼惊魂",
"clover point": "Clover Point",
"cocoro restarter": "心灵重启!",
"code realize sousei no himegimi": "Code:Realize ~创世的姬君~",
"codename kids next door": "小孩大联盟",
"combat mecha xabungle": "战斗装甲Xabungle",
"combattler v": "超力电磁侠 孔巴特拉V",
"conan the barbarian": "蛮王柯南",
"concon-collector": "Concon-Collector",
"conker": "松鼠库克倒霉的一天",
"cooking idol ai mai main": "料理偶像",
"corruption of champions": "英雄的堕落",
"crash b-daman": "爆球Hit!轰烈弹珠人",
"crash bandicoot": "古惑狼",
"cross game": "幸运四叶草",
"crush gear nitro": "新超激力战斗车",
"crypt killer": "妖霸天下",
"cyberbots": "装甲战士",
"cyberpunk": "赛博朋克",
"d.gray-man": "驱魔少年",
"d.n.angel": "天使怪盗",
"d.p.s.": "D.P.S.",
"daa daa daa": "Da!Da!Da!",
"daiakuji": "大恶司",
"daibanchou -big bang age-": "大番长 -Big Bang Age-",
"daicon": "DAICON",
"daisenryaku": "大战略",
"daphne in the brilliant blue": "光与水的女神",
"dark chronicle": "暗云编年史",
"dark water": "Dark Water",
"darker than black": "DARKER THAN BLACK",
"darkwing duck": "狡猾飞天德",
"dave the barbarian": "野蛮人戴夫",
"day break illusion": "穿透幻影的太阳",
"dead end": "Dead End",
"dead rising": "丧尸围城",
"deadman wonderland": "死囚乐园",
"deception": "刻命馆",
"defense devil": "防御魔鬼",
"demento": "狂城丽影",
"demonbane": "斩魔大圣DEMONBANE",
"dennou boukenki webdiver": "电脑冒险记",
"makai tenshi jibril": "魔界天使吉普莉露",
"dennou tenshi djibril": "电脑天使吉普莉露",
"denpa teki na kanojo": "电波系彼女",
"detective school q": "侦探学园Q",
"the idolmaster sidem": "偶像大師SideM",
"ryuugajou nanana no maizoukin": "龙娘七七七埋藏的宝藏",
"grandia": "冒險奇譚",
"grappler baki": "刃牙",
"mayonaka no tantei nightwalker": "真夜中的侦探",
"boku no kokoro no yabai yatsu": "我内心的糟糕念头",
"inaka ni kaeru to yakeni natsuita kasshoku ponytail shota ga iru": "单马尾表弟 (暂译)",
"paripi koumei": "派对浪客诸葛孔明",
"sore ga seiyuu": "那就是声优!",
"advance of zeta": "ADVANCE OF Ζ 提坦斯的旗下",
"summertime render": "夏日重现",
"kiteretsu daihyakka": "奇天烈大百科",
"perman": "飞人",
"danshi koukousei de urekko light novel sakka o shiteiru keredo": "身为男高中生兼当红轻小说作家的我,正被年纪比我小且从事声优工作的女同学掐住脖子",
"destiny child": "命运之子",
"ousama ranking": "国王排名",
"regular show": "天兵公园",
"talespin": "航空小英雄",
"tiny toons": "迷你乐一通",
"recess": "下课后",
"garfield": "加菲猫",
"ok k.o. lets be heroes": "OK K.O.!英雄赞",
"ratchet and clank": "瑞奇与叮当",
"kangokutou mary skelter": "神狱塔:断罪玛丽",
"hourou musuko": "放浪男孩",
"moshidora": "如果杜拉",
"yumekui merry": "食梦者玛莉",
"ikoku meiro no croisee": "异国迷宫的十字路口",
"corpse party": "尸体派对",
"jewelpet tinkle": "宝石宠物Twinkle☆",
"dragon crisis": "龙之界点",
"who framed roger rabbit": "谁陷害了兔子罗杰",
"the bad guys": "坏蛋联盟",
"hige o soru. soshite joshikousei o hirou.": "剃须。然后捡到女高中生。",
"horimiya": "堀桑与宫村君",
"ef a tale of memories": "悠久之翼",
"gaikotsu kishi-sama tadaima isekai e odekakechuu": "骸骨骑士大人异世界冒险中",
"kou-1 desu ga isekai de joushu hajimemashita": "虽然才高一却在异世界当起城主",
"kansen x shoujo": "感染×少女",
"digimon story cyber sleuth": "数码宝贝物语 网络侦探",
"among us": "Among Us",
"landstalker": "秘境魔宝",
"wizardry": "巫术系列",
"cotton": "棉花小魔女系列",
"waccha primagi": "绫镜魔法",
"sonic soldier borgman": "超音战士",
"brave girl ravens": "Brave Girl Ravens",
"tsukuyomi moon phase": "月咏",
"punishing gray raven": "战双帕弥什",
"guardian tales": "坎公骑冠剑",
"otome game sekai wa mob ni kibishii sekai desu": "乙女游戏世界对路人角色很不友好",
"kenja no mago": "贤者之孙",
"lycoris recoil": "莉可丽丝",
"tachibana-san-chi no dansei jijou": "橘OO家O男性事情",
"dig delight direct drive dj": "D4DJ",
"seirei gensouki": "精灵幻想记",
"soredemo ayumu wa yosetekuru": "即使如此依旧步步进逼",
"nikujo no susume": "肉女的推荐",
"eiyuu senki": "英雄战姬",
"shoujo mahou gaku little witch romanesque": "少女魔法学",
"words worth": "光与影的传说",
"drifters": "漂流武士",
"counter side": "Counter:Side",
"kunoichi tsubaki no mune no uchi": "女忍者椿的心事",
"kanojo mo kanojo": "女友成双",
"ero trap dungeon": "色情迷宫",
"yofukashi no uta": "彻夜之歌",
"zannen onna kanbu black general-san": "遗憾女干部黑暗将军小姐",
"digimon ghost game": "数码宝贝幽灵游戏",
"yuusha to maou": "魔王勇者",
"onegai my melody": "我爱美乐蒂",
"bikkuriman": "仙魔大战",
"munou na nana": "无能力者娜娜",
"nurarihyon no mago": "滑头鬼之孙",
"bomber girl": "轰炸女孩",
"burn the witch": "龙与魔女(BURN THE WITCH)",
"hataraku onii-san": "打工小哥",
"tomica kizuna gattai earth granner": "极速牵绊 地球先锋队",
"netojuu no susume": "网络胜利组",
"camp buddy": "Camp Buddy",
"eto rangers": "十二生肖守护神",
"mob psycho 100": "灵能百分百",
"space pirate captain harlock": "宇宙海贼哈洛克船长",
"devil survivor 2": "恶魔幸存者2",
"henshin": "变身-emergence-",
"magika no kenshi to basileus": "魔技科的剑士与召唤魔王",
"aragami": "荒神",
"owari no chronicle": "终焉的年代记",
"les miserables": "悲惨世界",
"isekai ojisan": "异世界舅舅",
"star ocean": "星之海洋",
"kami no rhapsody": "神之狂想曲",
"nintama rantarou": "落第忍者乱太郎",
"mahoutsukai no yome": "魔法使的新娘",
"subarashiki hibi": "美好的每一天~不连续的存在~",
"tron": "创:战纪",
"tokyo revengers": "东京复仇者",
"mobile suit gundam the witch from mercury": "机动战士高达 水星的魔女",
"shijou saikyou no daimaou murabito a ni tensei suru": "史上最强大魔王转生为村民A",
"genjitsu shugi yuusha no oukoku saikenki": "现实主义勇者的王国重建记",
"zenless zone zero": "绝区零",
"mato seihei no slave": "魔都精兵的奴隶",
"bocchi the rock": "孤独摇滚!",
"scp foundation": "SCP基金会",
"kinnikuman": "金肉人",
"ever 17": "Ever17(时空轮回)",
"memories off": "告别回忆",
"shiei no sona-nyl -what a beautiful memories-": "紫影的索纳尼尔 ~何等美好的记忆~",
"katawa shoujo": "片轮少女",
"sound horizon": "泡沫の恋",
"honor of kings": "王者荣耀",
"naraka bladepoint": "永劫无间",
"teletubbies": "天线宝宝",
"goddess of victory nikke": "胜利女神:妮姬",
"identity v": "第五人格",
"morenatsu": "漏夏",
"mad rat dead": "疯老鼠之死",
"enjou genmu tan": "艳娘幻梦谭",
"from argonavis": "from ARGONAVIS",
"god of war": "战神",
"the world ends with you": "美妙世界",
"scarlet nexus": "绯红结系",
"dragalia lost": "Dragalia Lost ~失落的龙约~",
"kimi ga nozomu eien": "你所期望的永远",
"matantei loki ragnarok": "魔侦探洛基",
"washio sumi wa yuusha de aru": "鹫尾须美是勇者",
"kono healer mendokusai": "这个僧侣有够烦",
"super dimension century orguss": "超时空世纪",
"ouchi ni kaeru made ga mashimaro desu": "回家之前的棉花糖",
"karakuri circus": "傀儡马戏团",
"waka okami wa shougakusei": "温泉屋的小老板娘",
"kamen rider kuuga": "假面骑士空我",
"raramagi honyarara magic": "不确定魔法",
"space battleship yamato 2199": "宇宙战舰大和号2199",
"power pro kun pocket": "口袋力量棒球",
"anothereidos of dragon vein r": "龙脉·另一种姿态",
"the saga of darren shan": "向达伦大冒险",
"delicious party precure": "美味派对♡光之美少女",
"ai the somnium files": "AI:梦境档案",
"ku-neru maruta": "吃吃睡睡的玛璐塔",
"school shock": "雏蜂",
"shinigami bocchan to kuro maid": "死神少爷与黑女仆",
"2.43 seiin high school boys volleyball team": "2.43 清阴高中男子排球社",
"elf-san wa yaserarenai.": "精灵小姐瘦不下来",
"pretty face": "漂亮脸蛋",
"yi lian": "忆恋",
"meili xinshijie i": "美丽新世界i",
"kage no jitsuryokusha ni naritakute": "我想成为影之强者!",
"okane ga nai": "欠金情人",
"valvrave the liberator": "革命机",
"dodge danpei": "斗球儿弹平",
"sinbad legend of the seven seas": "辛巴达七海传奇",
"tenshin ranman": "天神乱漫",
"hajimete no orusuban": "第一次看家",
"nanami to konomi no oshiete a-b-c": "ななみとこのみのおしえてA・B・C",
"hajimete no oishasan": "はじめてのおいしゃさん",
"hajimete no otetsudai": "はじめてのおてつだい",
"otonari no tenshi-sama ni itsunomanika dame ningen ni sareteita ken": "关于我在无意间被隔壁的天使变成废柴这件事",
"onii-chan wa oshimai": "别当哥哥了!",
"shiki": "尸鬼",
"shikabane hime": "尸姬",
"ayakashi triangle": "妖幻三重奏",
"tensei oujo to tensai reijou no mahou kakumei": "转生公主与天才千金的魔法革命",
"summer camp island": "幽灵与莫莉·麦琪",
"luca": "夏日友晴天",
"spy kyoushitsu": "间谍教室",
"galaxy cyclone braiger": "银河旋风",
"mahou shoujo nante mouiidesukara.": "魔法少女什么的已经够了啦。",
"tom clancys rainbow six": "彩虹六号",
"sangoku rensenki": "三国恋战记~少女的兵法",
"epic seven": "第七史诗",
"godzilla": "哥斯拉",
"cloud meadow": "云端牧场",
"ookami kodomo no ame to yuki": "狼的孩子雨和雪",
"akiba maid sensou": "秋叶原冥途战争",
"kyuuketsuki sugu shinu": "吸血鬼马上死",
"devil summoner soul hackers": "恶魔召唤师",
"saikin yatotta maid ga ayashii": "最近雇的女仆有点怪",
"benriya saitou-san isekai ni iku": "万事屋斋藤先生转生异世界",
"mar": "MÄR魔兵传奇",
"kinsou no vermeil": "金装的维尔梅",
"ganbare goemon": "大盗五右卫门",
"jikkyou powerful pro yakyuu": "实况力量棒球系列",
"dolphin wave": "洶湧海豚",
"suzume no tojimari": "铃芽之旅",
"warframe": "星际战甲",
"brok the investigator": "鳄鱼侦探布罗格",
"horizon zero dawn": "地平线 零之曙光",
"un-go": "UN-GO",
"inma kourin devil carnival": "淫魔降臨デビル☆カーニバル",
"ryu ga gotoku": "如龙",
"atomic heart": "原子之心",
"yomawari": "夜廻",
"the addams family": "亚当斯一家",
"thundercats": "霹雳猫",
"gargoyles": "夜行神龙",
"dora the explorer": "爱探险的朵拉",
"gremlins": "小魔怪",
"lazytown": "懒人小镇",
"deltarune": "三角符文",
"vampire knight": "吸血鬼骑士",
"blue reflection": "蔚蓝反射(幻舞少女之剑)",
"fumikiri jikan": "平交道时间",
"all out": "ALL OUT!!",
"kuma miko": "熊巫女",
"tsuki ni yorisou otome no sahou": "近月少女的礼仪",
"witchs weapon": "魔女兵器",
"dead by daylight": "黎明杀机",
"sakuna of rice and ruin": "天穗之咲稻姬",
"oshi no ko": "我推的孩子",
"tensei shitara ken deshita": "转生就是剑",
"juuou mujin no fafnir": "铳皇无尽的法夫纳",
"soukyuu no fafner": "苍穹之法芙娜",
"heaven burns red": "炽焰天穹",
"fire emblem engage": "火焰之纹章 结合",
"watashi no yuri wa oshigoto desu": "我的百合乃工作是也!",
"sekai saikou no ansatsusha isekai kizoku ni tensei suru": "世界顶尖的暗杀者转生为异世界贵族",
"sengoku bushouki muramasa": "战国武将姬",
"idola phantasy star saga": "梦幻之星·伊多拉传说",
"golden time": "青春纪行",
"honkai star rail": "崩坏:星穹铁道",
"tongari boushi no atelier": "尖帽子的魔法工坊",
"sankarea": "散华礼弥",
"princess resurrection": "怪物王女",
"world flipper": "世界弹射物语",
"kikai sentai zenkaiger": "机界战队全开者",
"ng knight lamune and 40": "VS骑士",
"midnight girls": "Midnight Girls R",
"xenoblade chronicles 3": "异度神剑3",
"hollow knight": "空洞骑士",
"koutetsu no majo annerose": "钢铁魔女安妮罗杰",
"wuqi mitu": "无期迷途",
"jigokuraku": "地狱乐",
"tokyo mirage sessions fe": "幻影异闻录♯FE",
"odin sphere": "奥丁领域",
"ga geijutsuka art design class": "GA 艺术科美术设计班",
"tower of fantasy": "幻塔",
"ase to sekken": "汗皂交香",
"idoly pride": "偶像荣耀",
"nu carnival": "新世界狂欢",
"siren": "死魂曲",
"lapis relights": "宝石幻想 光芒重现",
"franken fran": "疯狂怪医芙兰",
"kaminaki sekai no kamisama katsudou": "无神世界中的神明活动",
"shoukan yuusha to f-kei kareshi": "召唤勇者与F系男友",
"megami device": "女神装置",
"skip to loafer": "跳跃和乐福鞋",
"astral chain": "异界锁链",
"taiyou no kiba dougram": "太阳之牙",
"natsuiro kiseki": "夏色奇迹",
"slam dunk": "灌篮高手",
"tenshi souzou re-boot": "天使☆嚣嚣 RE-BOOT!",
"2.5-jigen no yuuwaku": "2.5次元的诱惑",
"golden boy": "黄金小子",
"valorant": "无畏契约",
"zom 100 zombie ni naru made ni shitai 100 no koto": "僵尸百分百",
"hirogaru sky precure": "开阔天空!光之美少女",
"dororon enma-kun": "咚隆隆炎魔君",
"kekko kamen": "穴光假面",
"tamagotchi": "电子宠物蛋",
"sousou no frieren": "葬送的芙莉莲",
"maou gakuin no futekigousha": "魔王学院的不适任者",
"jewelpet": "宝石宠物",
"jewelpet sunshine": "宝石宠物 Sunshine",
"eve burst error": "EVE burst error",
"mahou shoujo tokushusen asuka": "魔法少女特殊战明日香",
"ponyo": "崖上的波妞",
"lv1 maou to one room yuusha": "LV1魔王与独居废勇者",
"love live hasunosora jogakuin school idol club": "莲之空女学院学园偶像俱乐部",
"little lord fauntleroy": "小公子西迪",
"tensai ouji no akaji kokka saisei jutsu": "天才王子的赤字国家振兴术",
"mardock scramble": "壳中少女",
"grimoire shiritsu grimoire mahou gakuen": "私立格里莫瓦魔法学园",
"futoku no guild": "不道德公会",
"kemono jihen": "怪物事变",
"oounabara to wadanohara": "大海原与大海原",
"zero escape": "极限脱出",
"araburu kisetsu no otome-domo yo": "骚动时节的少女们啊",
"yuusha party o tsuihou sareta beast tamer saikyoushu no nekomimi shoujo to deau": "被开除出勇者队伍的驯兽使,邂逅了最强种猫耳少女",
"doukyuusei": "同级生",
"dohna dohna issho ni warui koto o shiyou": "多娜多娜一起干坏事吧",
"chizuru-chan kaihatsu nikki": "千鹤酱的开发日志",
"arc the lad": "妖精战士",
"haiiro teien": "灰色庭园",
"shuumatsu nani shitemasu ka isogashii desu ka sukutte moratte ii desu ka": "末日时在做什么?有没有空?可以来拯救吗?",
"flint the time detective": "时空侦探",
"fumetsu no anata e": "致不灭的你",
"shiro seijo to kuro bokushi": "白圣女与黑牧师",
"slow loop": "SLOW LOOP",
"taimadou gakuen 35 shiken shoutai": "对魔导学园35试验小队",
"ongeki": "音击Ongeki",
"yamada-kun to lv999 no koi o suru": "和山田进行LV.999的恋爱",
"yu-gi-oh sevens": "游戏王SEVENS",
"ore no shikabane wo koeteyuke": "跨越我的尸体",
"puss in boots the last wish": "穿靴子的猫:最后的愿望",
"fatal frame": "零系列",
"arknights endfield": "明日方舟:终末地",
"calabiyau": "卡拉彼丘",
"soltyrei": "曙光少女",
"meikyuu black company": "异世界迷宫黑心企业",
"kimi no koto ga daidaidaidaidaisuki na 100-nin no kanojo": "超超超超超喜欢你的100个女朋友",
"kimagure orange road": "橙路",
"mahoutsukai no yakusoku": "魔法使的约定",
"genesis climber mospeada": "机甲创世记",
"tottemo luckyman": "幸运超人",
"super radical gag family": "浦安铁筋家族",
"edomae elf": "江户前精灵",
"eizouken ni wa te wo dasu na": "别对映像研出手!",
"rikei ga koi ni ochita no de shuomei shite mita.": "理科生坠入情网,故尝试证明。",
"yu-gi-oh go rush": "游戏王GO RUSH",
"tearmoon teikoku monogatari": "堤亚穆帝国物语~从断头台开始,公主重生后的逆转人生~",
"invincible": "无敌少侠",
"urotsukidoji": "超神传说",
"shutsudou minisuka police": "出动!迷你裙警察",
"engage kiss": "契约之吻",
"seitokai no ichizon": "学生会的一己之见",
"tsuritama": "钓球",
"mahou shoujo ni akogarete": "憧憬成为魔法少女",
"myo-chan sensei wa kaku katariki": "小美代老师如是说",
"kusuriya no hitorigoto": "药师少女的独语",
"equestria girls": "小马宝莉:魔法公主",
"palworld": "幻兽帕普",
"limbus company": "边狱公司",
"trigun": "枪神",
"saimin seishidou": "催眠性指导",
"tekkaman blade": "宇宙骑士BLADE"
},
"character": {
"alice": "爱丽丝",
"akane hino": "日野茜",
"ibuki": "伊吹",
"yui": "由依 | 结衣",
"hisui": "翡翠 | 飞彗",
"rider": "Rider | 龙女",
"maya": "摩耶",
"jeanne darc": "圣女贞德",
"katsuragi": "葛城",
"kasumi": "霞",
"leo": "丽王 | 利昂",
"haruna": "榛名 | 春奈",
"chitose": "千岁",
"murakumo": "丛 | 丛云",
"nachi": "那智",
"kagura": "神乐",
"ram": "拉姆",
"ink nijihara": "虹原茵可",
"pastel ink": "闪亮茵可",
"sumi kuroi": "黑威澄",
"alice shiratori": "白鸟爱丽丝",
"reimu hakurei": "博丽灵梦",
"marisa kirisame": "雾雨魔理沙",
"mima": "魅魔",
"sariel": "萨丽爱尔",
"chiyuri kitashirakawa": "北白河千百合",
"yumemi okazaki": "冈崎梦美",
"elly": "艾丽",
"gengetsu": "幻月",
"mugetsu": "梦月",
"kurumi": "胡桃",
"yumeko": "梦子",
"shinki": "神绮",
"rumia": "露米娅",
"daiyousei": "大妖精",
"cirno": "琪露诺",
"hong meiling": "红美铃",
"koakuma": "小恶魔",
"patchouli knowledge": "帕秋莉·诺蕾姬",
"sakuya izayoi": "十六夜咲夜",
"remilia scarlet": "蕾米莉亚·斯卡雷特",
"flandre scarlet": "芙兰朵露·斯卡雷特",
"letty whiterock": "蕾迪·霍瓦特罗克",
"chen": "橙",
"alice margatroid": "爱丽丝·玛格特洛依德",
"shanghai": "上海人偶",
"hourai": "蓬莱人偶",
"lily white": "莉莉霍瓦特",
"lily black": "莉莉黑",
"lunasa prismriver": "露娜萨·普莉兹姆利巴",
"merlin prismriver": "梅露兰·普莉兹姆利巴",
"lyrica prismriver": "莉莉卡·普莉兹姆利巴",
"youmu konpaku": "魂魄妖梦",
"yuyuko saigyouji": "西行寺幽幽子",
"ran yakumo": "八云蓝",
"yukari yakumo": "八云紫",
"suika ibuki": "伊吹萃香",
"wriggle nightbug": "莉格露·奈特巴格",
"mystia lorelei": "米斯蒂娅·萝蕾拉",
"keine kamishirasawa": "上白泽慧音",
"tewi inaba": "因幡帝",
"reisen udongein inaba": "铃仙·优昙华院·因幡",
"eirin yagokoro": "八意永琳",
"kaguya houraisan": "蓬莱山辉夜",
"fujiwara no mokou": "藤原妹红",
"aya shameimaru": "射命丸文",
"medicine melancholy": "梅蒂欣·梅兰可莉",
"yuuka kazami": "风见幽香",
"komachi onozuka": "小野塚小町",
"eiki shiki": "四季映姬·亚玛萨那度",
"shizuha aki": "秋静叶",
"minoriko aki": "秋穰子",
"hina kagiyama": "键山雏",
"nitori kawashiro": "河城荷取",
"momiji inubashiri": "犬走椛",
"sanae kochiya": "东风谷早苗",
"kanako yasaka": "八坂神奈子",
"suwako moriya": "洩矢诹访子",
"iku nagae": "永江衣玖",
"tenshi hinanai": "比那名居天子",
"kisume": "琪斯美",
"yamame kurodani": "黑谷山女",
"parsee mizuhashi": "水桥帕露西",
"yuugi hoshiguma": "星熊勇仪",
"satori komeiji": "古明地觉",
"rin kaenbyou": "火焰猫燐",
"utsuho reiuji": "灵乌路空",
"koishi komeiji": "古明地恋",
"nazrin": "纳兹琳",
"kogasa tatara": "多多良小伞",
"ichirin kumoi": "云居一轮",
"unzan": "云山",
"minamitsu murasa": "村纱水蜜",
"shou toramaru": "寅丸星",
"byakuren hijiri": "圣白莲",
"nue houjuu": "封兽鵺",
"hatate himekaidou": "姬海棠果",
"kyouko kasodani": "幽谷响子",
"yoshika miyako": "宫古芳香",
"seiga kaku": "霍青娥",
"soga no tojiko": "苏我屠自古",
"mononobe no futo": "物部布都",
"toyosatomimi no miko": "丰聪耳神子",
"mamizou futatsuiwa": "二岩猯藏",
"hata no kokoro": "秦心",
"wakasagihime": "若鹭姬",
"sekibanki": "赤蛮奇",
"kagerou imaizumi": "今泉影狼",
"benben tsukumo": "九十九弁弁",
"yatsuhashi tsukumo": "九十九八桥",
"seija kijin": "鬼人正邪",
"shinmyoumaru sukuna": "少名针妙丸",
"raiko horikawa": "堀川雷鼓",
"sumireko usami": "宇佐见堇子",
"seiran": "清兰",
"ringo": "铃瑚",
"doremy sweet": "哆来咪·苏伊特",
"sagume kishin": "稀神探女",
"clownpiece": "克劳恩皮丝",
"junko": "纯狐",
"hecatia lapislazuli": "赫卡提亚·拉碧斯拉祖利",
"joon yorigami": "依神女苑",
"shion yorigami": "依神紫苑",
"eternity larva": "爱塔妮缇拉尔瓦",
"nemuno sakata": "坂田合欢乃",
"aunn komano": "高丽野阿吽",
"narumi yatadera": "矢田寺成美",
"satono nishida": "尔子田里乃",
"mai teireida": "丁礼田舞",
"okina matara": "摩多罗隐岐奈",
"eika ebisu": "戎璎花",
"urumi ushizaki": "牛崎润美",
"kutaka niwatari": "庭渡久侘歌",
"yachie kicchou": "吉吊八千慧",
"mayumi joutouguu": "杖刀偶磨弓",
"keiki haniyasushin": "埴安神袿姬",
"saki kurokoma": "骊驹早鬼",
"mike goutokuji": "豪德寺三花",
"takane yamashiro": "山城高岭",
"sannyo komakusa": "驹草山如",
"misumaru tamatsukuri": "玉造魅须丸",
"tsukasa kudamaki": "菅牧典",
"megumu iizunamaru": "饭纲丸龙",
"chimata tenkyuu": "天弓千亦",
"momoyo himemushi": "姬虫百百世",
"tokiko": "朱鹭子",
"rinnosuke morichika": "森近霖之助",
"sunny milk": "桑尼米尔克",
"luna child": "露娜切露德",
"star sapphire": "斯塔萨菲雅",
"watatsuki no toyohime": "绵月丰姬",
"watatsuki no yorihime": "绵月依姬",
"hieda no akyuu": "稗田阿求",
"kasen ibara": "茨木华扇",
"kosuzu motoori": "本居小铃",
"miyoi okunoda": "奥野田美宵",
"renko usami": "宇佐见莲子",
"maribel han": "玛艾露贝莉·赫恩",
"hakurei miko": "先代巫女",
"honoka kosaka": "高坂穗乃果",
"yukiho kosaka": "高坂雪穗",
"eli ayase": "绚濑绘里",
"arisa ayase": "绚濑亚里沙",
"kotori minami": "南小鸟",
"umi sonoda": "园田海未",
"rin hoshizora": "星空凛",
"maki nishikino": "西木野真姬",
"nozomi tojo": "东条希",
"hanayo koizumi": "小泉花阳",
"nico yazawa": "矢泽妮可",
"tsubasa kira": "绮罗翼",
"erena toudou": "统堂英玲奈",
"anju yuuki": "优木杏树",
"chika takami": "高海千歌",
"riko sakurauchi": "樱内梨子",
"kanan matsuura": "松浦果南",
"dia kurosawa": "黑泽黛雅",
"you watanabe": "渡边曜",
"tsuki watanabe": "渡边月",
"yoshiko tsushima": "津岛善子",
"hanamaru kunikida": "国木田花丸",
"mari ohara": "小原鞠莉",
"ruby kurosawa": "黑泽露比",
"seira kazuno": "鹿角圣良",
"ria kazuno": "鹿角理亚",
"ayumu uehara": "上原步梦",
"kasumi nakasu": "中须霞",
"shizuku osaka": "樱坂雫",
"karin asaka": "朝香果林",
"ai miyashita": "宫下爱",
"kanata konoe": "近江彼方",
"haruka konoe": "近江遥",
"setsuna yuki": "优木雪菜",
"emma verde": "艾玛·维尔德",
"rina tennoji": "天王寺璃奈",
"rensouhou-chan": "连装炮酱",
"chiyoda": "千代田",
"akebono": "曙",
"ushio": "潮",
"ikazuchi": "雷",
"kamoi": "神威",
"maruyu": "丸输",
"z3": "Z3",
"italia": "意大利",
"luigi torelli": "路易吉·托雷利",
"iona": "伊欧娜",
"mamiya": "间宫",
"shikikan": "指挥官",
"ka-class": "潜艇KA级",
"so-class": "潜艇SO级",
"ri-class": "重巡RI级",
"re-class": "战舰RE级",
"ta-class": "战舰TA级",
"wo-class": "空母WO级",
"teitoku": "提督",
"nagato": "长门",
"mutsu": "陆奥",
"ise": "伊势",
"hyuuga": "日向",
"yukikaze": "雪风",
"akagi": "赤城",
"kaga": "加贺",
"souryuu": "苍龙",
"hiryuu": "飞龙",
"shimakaze": "岛风",
"fubuki": "吹雪",
"shirayuki": "白雪",
"hatsuyuki": "初雪",
"miyuki": "深雪",
"isonami": "矶波",
"ayanami": "绫波",
"shikinami": "敷波",
"ooi": "大井",
"kitakami": "北上",
"kongou": "金刚",
"hiei": "比睿",
"kirishima": "雾岛",
"houshou": "凤翔",
"fusou": "扶桑",
"yamashiro": "山城",
"tenryuu": "天龙",
"tatsuta": "龙田",
"ryuujou": "龙骧",
"mutsuki": "睦月",
"kisaragi": "如月",
"satsuki": "皋月",
"fumizuki": "文月",
"nagatsuki": "长月",
"kikuzuki": "菊月",
"mikazuki": "三日月",
"mochizuki": "望月",
"kuma": "球磨",
"tama": "多摩",
"kiso": "木曾",
"nagara": "长良",
"isuzu": "五十铃",
"natori": "名取",
"yura": "由良",
"sendai": "川内",
"jintsuu": "神通",
"naka": "那珂",
"mogami": "最上",
"furutaka": "古鹰",
"kako": "加古",
"aoba": "青叶",
"myoukou": "妙高",
"ashigara": "足柄",
"haguro": "羽黑",
"takao": "高雄",
"atago": "爱宕",
"choukai": "鸟海",
"tone": "利根",
"chikuma": "筑摩",
"hiyou": "飞鹰",
"junyou": "隼鹰",
"oboro": "胧",
"sazanami": "涟",
"akatsuki": "晓",
"hibiki": "响",
"inazuma": "电",
"hatsuharu": "初春",
"nenohi": "子日",
"wakaba": "若叶",
"hatsushimo": "初霜",
"shiratsuyu": "白露",
"shigure": "时雨",
"murasame": "村雨",
"yuudachi": "夕立",
"samidare": "五月雨",
"suzukaze": "凉风",
"asashio": "朝潮",
"ooshio": "大潮",
"michishio": "满潮",
"arashio": "荒潮",
"arare": "霰",
"kagerou": "阳炎",
"shiranui": "不知火",
"kuroshio": "黑潮",
"shouhou": "祥凤",
"shoukaku": "翔鹤",
"zuikaku": "瑞鹤",
"kinu": "鬼怒",
"abukuma": "阿武隈",
"yuubari": "夕张",
"zuihou": "瑞凤",
"mikuma": "三隈",
"hatsukaze": "初风",
"maikaze": "舞风",
"kinugasa": "衣笠",
"i-19": "伊19",
"suzuya": "铃谷",
"kumano": "熊野",
"i-168": "伊168",
"i-58": "伊58",
"i-8": "伊8",
"yamato": "大和",
"akigumo": "秋云",
"yuugumo": "夕云",
"makigumo": "卷云",
"naganami": "长波",
"agano": "阿贺野",
"noshiro": "能代",
"yahagi": "矢矧",
"sakawa": "酒匂",
"musashi": "武藏",
"taihou": "大凤",
"katori": "香取",
"i-401": "伊401",
"akitsu maru": "秋津丸",
"yayoi": "弥生",
"uzuki": "卯月",
"isokaze": "矶风",
"urakaze": "浦风",
"tanikaze": "谷风",
"hamakaze": "滨风",
"bismarck": "俾斯麦",
"z1": "Z1",
"prinz eugen": "欧根亲王",
"amatsukaze": "天津风",
"akashi": "明石",
"ooyodo": "大淀",
"taigei": "大鲸",
"ryuuhou": "龙凤",
"tokitsukaze": "时津风",
"unryuu": "云龙",
"amagi": "天城",
"harusame": "春雨",
"hayashimo": "早霜",
"kiyoshimo": "清霜",
"asagumo": "朝云",
"yamagumo": "山云",
"nowaki": "野分",
"akizuki": "秋月",
"teruzuki": "照月",
"hatsuzuki": "初月",
"takanami": "高波",
"asashimo": "朝霜",
"u-511": "U-511",
"graf zeppelin": "齐柏林伯爵",
"saratoga": "萨拉托加",
"ro-500": "吕500",
"warspite": "厌战",
"iowa": "衣阿华",
"littorio": "利托里奥",
"roma": "罗马",
"libeccio": "西南风",
"aquila": "天鹰",
"akitsushima": "秋津洲",
"zara": "扎拉",
"pola": "波拉",
"mizuho": "瑞穗",
"okinami": "冲波",
"kazagumo": "风云",
"arashi": "岚",
"hagikaze": "萩风",
"oyashio": "亲潮",
"yamakaze": "山风",
"umikaze": "海风",
"kawakaze": "江风",
"hayasui": "速吸",
"kashima": "鹿岛",
"kamikaze": "神风",
"asakaze": "朝风",
"harukaze": "春风",
"matsukaze": "松风",
"hatakaze": "旗风",
"amagiri": "天雾",
"sagiri": "狭雾",
"minazuki": "水无月",
"i-26": "伊26",
"hamanami": "滨波",
"fujinami": "藤波",
"uranami": "浦波",
"commandant teste": "特斯特长官",
"richelieu": "黎塞留",
"i-400": "伊400",
"i-13": "伊13",
"i-14": "伊14",
"gangut": "甘古特",
"tashkent": "塔什干",
"ark royal": "皇家方舟",
"shimushu": "占守",
"kunashiri": "国后",
"jervis": "贾维斯 | 杰维斯",
"suzutsuki": "凉月",
"etorofu": "择捉",
"matsuwa": "松轮",
"sado": "佐渡",
"tsushima": "对马",
"gambier bay": "甘比尔湾",
"intrepid": "无畏",
"johnston": "约翰斯顿",
"maestrale": "西北风",
"fletcher": "弗莱彻",
"unicorn": "独角兽",
"belfast": "贝尔法斯特",
"illustrious": "光辉",
"terror": "恐怖",
"vampire": "吸血鬼",
"laffey": "拉菲",
"eldridge": "埃尔德里奇",
"prince of wales": "威尔士亲王",
"sheffield": "谢菲尔德",
"ping hai": "平海",
"ning hai": "宁海",
"formidable": "可畏",
"admiral hipper": "希佩尔海军上将",
"portland": "波特兰",
"cygnet": "小天鹅",
"kent": "肯特",
"hammann": "哈曼",
"mikasa": "三笠",
"st. louis": "圣路易斯",
"san diego": "圣地亚哥",
"long island": "长岛",
"javelin": "标枪",
"nelson": "纳尔逊",
"rodney": "罗德尼",
"enterprise": "企业",
"queen elizabeth": "伊丽莎白女王",
"victorious": "胜利",
"ajax": "阿贾克斯",
"cleveland": "克利夫兰",
"honolulu": "火奴鲁鲁",
"z46": "Z46",
"z23": "Z23",
"tirpitz": "提尔比茨",
"duke of york": "约克公爵",
"bache": "贝奇",
"sirius": "天狼星",
"sims": "西姆斯",
"colorado": "科罗拉多",
"kuubo seiki": "空母栖姬",
"kuubo suiki": "空母水鬼",
"soukou kuuboki": "装甲空母姬",
"senkan seiki": "战舰栖姬",
"hoppou seiki": "北方栖姬",
"nanpou seiki": "南方栖鬼",
"shuusekichi seiki": "集积地栖姬",
"ritou seiki": "离岛栖姬",
"kouwan seiki": "港湾栖姬",
"chuukan seiki": "中间栖姬",
"hikoujouki": "飞行场姬",
"lion": "狮",
"kagero": "阳炎",
"el condor pasa": "神鹰",
"perth": "珀斯",
"renown": "声望",
"chang chun": "长春",
"gotland": "哥特兰",
"grecale": "东北风",
"bremerton": "布莱默顿",
"roon": "罗恩",
"dido": "黛朵",
"baltimore": "巴尔的摩",
"producer": "制作人",
"haruka amami": "天海春香",
"chihaya kisaragi": "如月千早",
"yukiho hagiwara": "萩原雪步",
"yayoi takatsuki": "高槻弥生",
"kasumi takatsuki": "高槻霞",
"ritsuko akizuki": "秋月律子",
"azusa miura": "三浦梓",
"iori minase": "水濑伊织",
"makoto kikuchi": "菊地真",
"ami futami": "双海亚美",
"mami futami": "双海真美",
"miki hoshii": "星井美希",
"hibiki ganaha": "我那霸响",
"takane shijou": "四条贵音",
"kotori otonashi": "音无小鸟",
"ai hidaka": "日高爱",
"mai hidaka": "日高舞",
"eri mizutani": "水谷绘理",
"ryo akizuki": "秋月凉",
"uzuki shimamura": "岛村卯月",
"yukari mizumoto": "水本紫",
"mai fukuyama": "福山舞",
"kanako mimura": "三村加奈子",
"miho kohinata": "小日向美穗",
"chieri ogata": "绪方智绘里",
"kyoko igarashi": "五十岚响子",
"momoka sakurai": "樱井桃华",
"yumeko sakurai": "樱井梦子",
"hasumi nagatomi": "长富莲实",
"chika yokoyama": "横山千佳",
"miku maekawa": "前川未来",
"saya matsubara": "松原早耶",
"yukino aihara": "相原雪乃",
"frederica miyamoto": "宫本芙蕾德莉卡",
"sae kobayakawa": "小早川纱枝",
"kotoka saionji": "西园寺琴歌",
"anzu futaba": "双叶杏",
"satomi sakakibara": "榊原里美",
"sachiko koshimizu": "舆水幸子",
"yuriko ohnishi": "大西由里子",
"nana abe": "安部菜菜",
"nene kurihara": "栗原宁宁",
"koharu koga": "古贺小春",
"akiha ikebukuro": "池袋晶叶",
"yuu ohta": "太田优",
"mayu sakuma": "佐久间麻由",
"mirei hayasaka": "早坂美玲",
"rina fujimoto": "藤本里奈",
"michiru ohara": "大原满",
"hotaru shiragiku": "白菊萤",
"kozue yusa": "游佐梢",
"kurumi ohnuma": "大沼胡桃",
"shiki ichinose": "一之濑志希",
"yuuki otokura": "乙仓悠贵",
"rin shibuya": "涩谷凛",
"sarina matsumoto": "松本沙理奈",
"mizuki kawashima": "川岛瑞树",
"nao kamiya": "神谷奈绪",
"haruna kamijou": "上条春菜",
"hina araki": "荒木比奈",
"ai togo": "东乡爱",
"riina tada": "多田李衣菜",
"seira mizuki": "水木圣来",
"chie sasaki": "佐佐木千枝",
"miyu mifune": "三船美优",
"manami kiba": "木场真奈美",
"hajime fujiwara": "藤原肇",
"helen": "海伦",
"noa takamine": "高峰诺亚",
"kaede takagaki": "高垣枫",
"ranko kanzaki": "神崎兰子",
"karen hojo": "北条加莲",
"honoka ayase": "绫濑穗乃香",
"yukimi sajo": "佐城雪美",
"rumi wakui": "和久井留美",
"kako takafuji": "鹰富士茄子",
"koume shirasaka": "白坂小梅",
"mutsumi ujiie": "氏家睦",
"yume narumiya": "成宫由爱",
"syuko shiomi": "盐见周子",
"minami nitta": "新田美波",
"kanade hayami": "速水奏",
"izumi ohishi": "大石泉",
"chizuru matsuo": "松尾千鹤",
"arisu tachibana": "橘爱丽丝",
"nono morikubo": "森久保乃乃",
"anastasia": "安娜斯塔西娅",
"aki yamato": "大和亚季",
"haru yuuki": "结城晴",
"fumika sagisawa": "鹭泽文香",
"layla": "莱拉 | 莱依拉",
"asuka ninomiya": "二宫飞鸟",
"nanami asari": "浅利七海",
"mio honda": "本田未央",
"aiko takamori": "高森蓝子",
"kaoru ryuzaki": "龙崎薰",
"natsuki kimura": "木村夏树",
"miria akagi": "赤城米莉亚",
"yui ohtsuki": "大槻唯",
"yuki himekawa": "姬川友纪",
"yuzu kitami": "喜多见柚",
"naho ebihara": "海老原菜帆",
"shizuku oikawa": "及川雫",
"reina koseki": "小关丽奈",
"yumi aiba": "相叶夕美",
"tomoka wakabayashi": "若林智香",
"mika jougasaki": "城崎美嘉",
"rika jougasaki": "城崎莉嘉",
"kirari moroboshi": "诸星琪拉莉",
"airi totoki": "十时爱梨",
"natalia": "娜塔莉亚",
"takumi mukai": "向井拓海",
"eve santaclaus": "伊芙·珊德克罗丝",
"nina ichihara": "市原仁奈",
"hinako kita": "喜多日菜子",
"mary cochran": "玛丽·柯克兰",
"ayame hamaguchi": "滨口菖蒲",
"syoko hoshi": "星辉子",
"ako tsuchiya": "土屋亚子",
"sanae katagiri": "片桐早苗",
"yuko hori": "堀裕子",
"kai nishijima": "西岛櫂",
"risa matoba": "的场梨沙",
"tokiko zaizen": "财前时子",
"shin sato": "佐藤心",
"yoshino yorita": "依田芳乃",
"chihiro senkawa": "千川千寻",
"mirai kasuga": "春日未来",
"hinata kinoshita": "木下日向",
"julia": "茱莉亚",
"sayoko takayama": "高山纱代子",
"kotoha tanaka": "田中琴叶",
"tomoka tenkubashi": "天空桥朋花",
"serika hakozaki": "箱崎星梨花",
"arisa matsuda": "松田亚利沙",
"shizuka mogami": "最上静香",
"anna mochizuki": "望月杏奈",
"emily stewart": "艾米莉·司徒亚特",
"tamaki ogami": "大神环",
"reika kitakami": "北上丽花",
"umi kousaka": "高坂海美",
"minako satake": "佐竹美奈子",
"elena shimabara": "岛原埃琳娜",
"subaru nagayoshi": "永吉昴",
"konomi baba": "马场木实",
"noriko fukuda": "福田法子",
"mizuki makabe": "真壁瑞希",
"rio momose": "百濑莉绪",
"nao yokoyama": "横山奈绪",
"tsubasa ibuki": "伊吹翼",
"shiho kitazawa": "北泽志保",
"karen shinomiya": "篠宫可怜",
"momoko suou": "周防桃子",
"matsuri tokugawa": "德川茉莉",
"megumi tokoro": "所惠美",
"fuuka toyokawa": "丰川风花",
"iku nakatani": "中谷育",
"yuriko nanao": "七尾百合子",
"chizuru nikaido": "二阶堂千鹤",
"miya miyao": "宫尾美也",
"roco handa": "伴田路子",
"kaori sakuramori": "樱守歌织",
"tsumugi shiraishi": "白石䌷",
"mishiro": "美城常务",
"touma amagase": "天濑冬马",
"teru tendo": "天道辉",
"minori watanabe": "渡边实",
"shiki iseya": "伊濑谷四季",
"hayato akiyama": "秋山隼人",
"saki mizushima": "水岛咲",
"shiro tachibana": "橘志狼",
"hokuto ijuuin": "伊集院北斗",
"kaoru sakuraba": "樱庭薫",
"rei kagura": "神乐丽",
"kyoji takajo": "鹰城恭二",
"kyosuke aoi": "苍井享介",
"jun fuyumi": "冬美旬",
"natsuki sakaki": "榊夏来",
"nao okamura": "冈村直央",
"shouta mitarai": "御手洗翔太",
"tsubasa kashiwagi": "柏木翼",
"kei tsuzuki": "都筑圭",
"pierre": "皮埃尔",
"yusuke aoi": "苍井悠介",
"haruna wakazato": "若里春名",
"makio uzuki": "卯月卷绪",
"kanon himeno": "姬野花音",
"mano sakuragi": "樱木真乃",
"hiori kazano": "风野灯织",
"meguru hachimiya": "八宫缭",
"mamimi tanaka": "田中摩美美",
"kiriko yukoku": "幽谷雾子",
"kogane tsukioka": "月冈恋钟",
"yuika mitsumine": "三峰结华",
"sakuya shirase": "白濑咲耶",
"amana osaki": "大崎甘奈",
"chiyuki kuwayama": "桑山千雪",
"tenka osaki": "大崎甜花",
"kaho komiya": "小宫果穂",
"chiyoko sonoda": "园田智代子",
"juri saijo": "西城树里",
"rinze morino": "杜野凛世",
"natsuha arisugawa": "有栖川夏叶",
"hazuki nanakusa": "七草叶月",
"nichika nanakusa": "七草日花",
"arisa mochida": "持田亚里沙",
"fuyuko mayuzumi": "黛冬优子",
"mei izumi": "和泉爱依",
"asahi serizawa": "芹泽朝阳",
"akira sunazuka": "砂冢明",
"riamu yumemi": "梦见璃亚梦",
"madoka higuchi": "樋口圆香",
"koito fukumaru": "福丸小糸",
"toru asakura": "浅仓透",
"hinana ichikawa": "市川雏菜",
"rookie trainer": "新手训练员",
"veteran trainer": "高手训练员",
"mario": "马里奥",
"luigi": "路易吉",
"yoshi": "耀西",
"wario": "瓦里奥",
"waluigi": "瓦路易吉",
"bowser": "库巴",
"wendy o. koopa": "温蒂库巴",
"super crown bowser": "库巴姬",
"princess peach": "碧奇公主",
"princess daisy": "黛西公主",
"rosalina": "罗塞塔",
"pauline": "波琳",
"boo": "布布",
"super crown boo": "幽灵姬",
"toad": "奇诺比奥",
"toadette": "奇诺比珂",
"donkey kong": "森喜刚",
"diddy kong": "狄狄刚",
"dixie kong": "狄可西刚",
"applejack": "苹果杰克",
"fluttershy": "小蝶",
"pinkie pie": "萍琪·派",
"rainbow dash": "云宝黛茜",
"rarity": "瑞瑞",
"twilight sparkle": "暮光闪闪",
"princess celestia": "塞拉斯蒂娅公主",
"princess luna": "露娜公主",
"princess cadance": "韵律公主",
"shining armor": "银甲闪闪",
"starlight glimmer": "星光熠熠",
"sunset shimmer": "余晖烁烁",
"apple bloom": "小萍花",
"scootaloo": "飞板璐",
"sweetie belle": "甜贝儿",
"big macintosh": "大麦哥",
"marble pie": "玉琪派",
"trixie": "崔克西",
"spitfire": "飞火",
"octavia": "奥塔维雅",
"vinyl scratch": "DJ3号",
"derpy hooves": "小呆",
"discord": "无序",
"diamond tiara": "珠玉冠冠",
"silver spoon": "白银勺勺",
"princess ember": "余焰公主",
"queen chrysalis": "邪茧女王",
"sonata dusk": "索娜塔",
"aqua": "阿库娅",
"megumin": "惠惠",
"kazuma satou": "佐藤和真",
"darkness": "达克妮丝",
"yunyun": "悠悠",
"wiz": "维兹",
"chris": "克莉丝",
"kokoa hoto": "保登心爱",
"chino kafuu": "香风智乃",
"rize tedeza": "天天座理世",
"chiya ujimatsu": "宇治松千夜",
"sharo kirima": "桐间纱路",
"maya jouga": "条河麻耶",
"megumi natsu": "奈津惠",
"mocha hoto": "保登摩卡",
"midori aoyama": "青山翠",
"kanade amakusa": "甘草奏",
"chocolat": "裘可拉",
"ayame reikadou": "丽华堂绚女",
"oka yuoji": "游王子讴歌",
"furano yukihira": "雪平富良野",
"chiwa harusaki": "春咲千和",
"eita kidou": "季堂锐太",
"masuzu natsukawa": "夏川真凉",
"himeka akishino": "秋篠姬香",
"ai fuyuumi": "冬海爱衣",
"kyousuke kousaka": "高坂京介",
"kirino kousaka": "高坂桐乃",
"ruri gokou": "五更琉璃(黑猫)",
"ayase aragaki": "新垣绫濑",
"saori makishima": "槙岛沙织(沙织·巴吉纳)",
"kanako kurusu": "来栖加奈子",
"bridget evans": "布莉姬·伊凡斯",
"sena akagi": "赤城濑菜",
"kouhei akagi": "赤城浩平",
"manami tamura": "田村麻奈实",
"daisuke kousaka": "高坂大介",
"tamaki gokou": "五更珠希",
"hinata gokou": "五更日向",
"ria hagry": "莉亚·哈格丽",
"azusa nakano": "中野梓",
"jun suzuki": "铃木纯",
"mio akiyama": "秋山澪",
"ritsu tainaka": "田井中律",
"sawako yamanaka": "山中佐和子",
"tsumugi kotobuki": "琴吹䌷",
"ui hirasawa": "平泽忧",
"yui hirasawa": "平泽唯",
"nodoka manabe": "真锅和",
"satoshi tainaka": "田井中聪",
"sumire saitou": "齐藤堇",
"megumi sokabe": "曾我部惠",
"luste teuber": "露斯特·特依巴",
"spiritia rosenberg": "斯匹莉缇娅·罗森伯格",
"yui yuigahama": "由比滨结衣",
"hachiman hikigaya": "比企谷八幡",
"komachi hikigaya": "比企谷小町",
"saki kawasaki": "川崎沙希",
"keika kawasaki": "川崎桂花",
"yoshiteru zaimokuza": "材木座义辉",
"yukino yukinoshita": "雪之下雪乃",
"iroha isshiki": "一色彩羽",
"hayato hayama": "叶山隼人",
"saika totsuka": "户冢彩加",
"haruno yukinoshita": "雪之下阳乃",
"shizuka hiratsuka": "平冢静",
"yuuta togashi": "富㭴勇太",
"yumeha togashi": "富㭴梦叶",
"rikka takanashi": "小鸟游六花",
"kumin tsuyuri": "五月七日茴香",
"shinka nibutani": "丹生谷森夏",
"sanae dekomori": "凸守早苗",
"satone shichimiya": "七宫智音",
"touka takanashi": "小鸟游十花",
"mercy": "天使",
"tracer": "猎空",
"widowmaker": "黑百合",
"mei": "美",
"d.va": "D.VA",
"zarya": "查莉娅",
"genjii": "源氏",
"junkrat": "狂鼠",
"roadhog": "路霸",
"pharah": "法老之鹰",
"soldier 76": "士兵:76",
"symmetra": "秩序之光",
"winston": "温斯顿",
"sombra": "黑影",
"ana": "安娜",
"ashe": "艾什",
"cortana": "科塔娜",
"gordon freeman": "戈登·弗里曼",
"alyx vance": "爱丽克斯·凡斯",
"chell": "雪儿",
"emilia": "爱蜜莉雅",
"rem": "雷姆",
"subaru natsuki": "菜月昴",
"beatrice": "碧翠丝",
"felix argyle": "菲利克斯·阿盖尔",
"felt": "菲鲁特",
"roswaal l. mathers": "罗兹瓦尔·L·梅札斯",
"otto suewen": "奥托·苏文",
"julius euclius": "由里乌斯·尤克历乌斯",
"elsa granhiert": "艾尔莎·葛兰西尔特",
"tomoya aki": "安艺伦也",
"megumi kato": "加藤惠",
"utaha kasumigaoka": "霞之丘诗羽",
"michiru hyodo": "冰堂美智留",
"eriri spencer sawamura": "泽村·斯宾塞·英梨梨",
"izumi hashima": "波岛出海",
"kobato hasegawa": "羽濑川小鸠",
"kodaka hasegawa": "羽濑川小鹰",
"rika shiguma": "志熊理科",
"sena kashiwazaki": "柏崎星奈",
"yozora mikazuki": "三日月夜空",
"yukimura kusunoki": "楠幸村",
"maria takayama": "高山玛利亚",
"ageha": "扬羽",
"aimu": "蓝梦",
"aria": "亚璃亚",
"ashiya": "芦屋",
"asuka": "飞鸟",
"ayame": "菖蒲",
"bashou": "芭蕉",
"chihaya": "千早",
"chiyo": "千代",
"daidouji": "大道寺前辈",
"fuga": "风雅",
"fuma": "风魔",
"ginrei": "银岭",
"haruka": "春花",
"hibari": "云雀",
"hijikata": "土方",
"hikage": "日影",
"homura": "焰",
"ikaruga": "斑鸠",
"imu": "忌梦",
"josui": "如水",
"kaede": "枫",
"kagari": "篝",
"kanon": "花音",
"kanzaki": "神咲",
"kochou": "胡蝶",
"kumi": "九魅",
"kuroudo": "藏人",
"mai": "舞",
"meimei": "美莓",
"minori": "美野里",
"mirai": "未来",
"misato": "深里",
"miyabi": "雅绯",
"motochika": "元亲",
"muramasa": "村正",
"murasaki": "紫",
"naraku": "奈乐",
"ryoubi": "两备",
"ryouna": "两奈",
"sakyou": "左京",
"seimei": "清明",
"siki": "四季",
"shiki": "四季",
"souji": "总司",
"suzune": "铃音(凛)",
"syuri": "朱璃",
"ukyou": "右京",
"ushimaru": "牛丸",
"yagyuu": "柳生",
"yomi": "咏",
"yoshimitsu": "吉光",
"yozakura": "夜樱",
"yugiri": "夕雾",
"yumi": "雪泉",
"yuyaki": "夕烧",
"tohru": "托尔",
"kanna kamui": "康娜卡姆依",
"quetzalcoatl": "魁札尔科亚特尔",
"kobayashi-san": "小林",
"shouta magatsuchi": "真土翔太",
"riko saikawa": "才川莉子",
"elma": "艾尔玛",
"ai-chan": "小爱",
"kouhai-chan": "后辈",
"azusa azuki": "小豆梓",
"youto yokodera": "横寺阳人",
"tsukiko tsutsukakushi": "筒隐月子",
"tsukushi tsutsukakushi": "筒隐筑紫",
"mai maimaki": "舞牧麻衣",
"emanuella porlallora": "艾米(艾玛努艾勒·波鲁勒劳拉)",
"tomoya okazaki": "冈崎朋也",
"fuko ibuki": "伊吹风子",
"kotomi ichinose": "一之濑琴美",
"ryou fujibayashi": "藤林椋",
"kyou fujibayashi": "藤林杏",
"nagisa furukawa": "古河渚",
"tomoyo sakagami": "坂上智代",
"yukine miyazawa": "宫泽有纪宁",
"mei sunohara": "春原芽衣",
"youhei sunohara": "春原阳平",
"misae sagara": "相乐美佐枝",
"sanae furukawa": "古河早苗",
"meiko honma": "本间芽衣子",
"naruko anjou": "安城鸣子",
"chiriko tsurumi": "鹤见知利子",
"jinta yadomi": "宿海仁太",
"atsumu matsuyuki": "松雪集",
"hotaru shidare": "枝垂萤",
"kokonotsu shikada": "鹿田九",
"saya endou": "远藤彩",
"hajime owari": "尾张一",
"aoba suzukaze": "凉风青叶",
"hifumi takimoto": "泷本日富美",
"kou yagami": "八神光",
"rin tooyama": "远山伦",
"hajime shinoda": "篠田初",
"yun iijima": "饭岛结音",
"shizuku hazuki": "叶月雫",
"momiji mochizuki": "望月红叶",
"nene sakura": "樱宁宁",
"umiko ahagon": "阿波根海子",
"yamato christina wako": "大和·克莉丝汀·和子",
"aoi miyamori": "宫森葵",
"ema yasuhara": "安原绘麻",
"midori imai": "今井绿",
"shizuka sakaki": "坂木静香",
"misa toudou": "藤堂美沙",
"misato segawa": "濑川美里",
"erika yano": "矢野艾莉卡",
"rinko ogasawara": "小笠原纶子",
"yuka okitsu": "兴津由佳",
"shun watanabe": "渡边隼",
"ai kunogi": "久乃木爱",
"yumi iguchi": "井口祐未",
"chitose karasuma": "乌丸千岁",
"momoka sono": "苑生百花",
"yae kugayama": "久我山八重",
"alice cartelet": "爱丽丝·卡塔雷特",
"aya komichi": "小路绫",
"karen kujou": "九条可怜",
"shinobu omiya": "大宫忍",
"youko inokuma": "猪熊阳子",
"sakura karasuma": "乌丸樱",
"akari kuzehashi": "久世桥朱里",
"honoka matsubara": "松原穗乃花",
"gabriel tenma white": "天真·珈百璃·怀特",
"vignette tsukinose april": "月乃濑·薇奈特·艾普利尔",
"satanichia kurumizawa mcdowell": "胡桃泽·萨塔妮娅·麦克道威尔",
"raphiel shiraha ainsworth": "白羽·菈菲尔·恩兹沃斯",
"chii": "小叽(爱露达)",
"yumi omura": "大村裕美",
"sumomo": "丝茉茉",
"chitose hibiya": "日比谷千岁",
"hideki motosuwa": "本须和秀树",
"yuzuki": "柚姬",
"minoru kokubunji": "国分寺稔",
"takako shimizu": "清水多香子",
"sylvie": "希尔薇",
"rito yuuki": "结城梨斗",
"ryouko mikado": "御门凉子",
"lala satalin deviluke": "菈菈·萨塔琳·戴比路克",
"haruna sairenji": "西连寺春菜",
"golden darkness": "金色暗影",
"yui kotegawa": "古手川唯",
"mikan yuuki": "结城美柑",
"nemesis": "涅墨西斯",
"saki tenjouin": "天条院沙姬",
"aya fujisaki": "藤崎绫",
"rin kujou": "九条凛",
"mea kurosaki": "黑咲芽亚",
"nana asta deviluke": "娜娜·阿斯塔·戴比路克",
"momo velia deviluke": "梦梦·贝莉雅·戴比路克",
"riko yuusaki": "夕崎梨子",
"sephie michaela deviluke": "赛菲·米卡埃拉·戴比路克",
"tearju lunatique": "提亚悠·鲁娜提克",
"run elsie jewelria": "伦·艾尔西·裘利亚",
"risa momioka": "籾冈里纱",
"mio sawada": "泽田未央",
"oshizu murasame": "村雨静",
"kyouko kirisaki": "雾崎恭子",
"kenichi saruyama": "猿山健一",
"shizu murasame": "村雨静",
"erina nakiri": "薙切绘理奈",
"alice nakiri": "薙切爱丽丝",
"azami nakiri": "薙切蓟",
"ikumi mito": "水户郁魅",
"megumi tadokoro": "田所惠",
"fuyumi mizuhara": "水原冬美",
"souma yukihira": "幸平创真",
"takumi aldini": "巧·阿尔迪尼",
"isami aldini": "勇·阿尔迪尼",
"hisako arato": "新户绯沙子",
"ryou kurokiba": "黑木场凉",
"satoshi isshiki": "一色慧",
"ryouko sakaki": "榊凉子",
"rindou kobayashi": "小林龙胆",
"sagiri izumi": "和泉纱雾",
"elf yamada": "山田妖精(艾蜜莉·格兰杰)",
"masamune izumi": "和泉正宗",
"megumi jinno": "神野惠",
"muramasa senju": "千寿村征(梅园花)",
"tomoe takasago": "高砂智惠",
"super sonico": "超级索尼子",
"super pochaco": "超级帕恰子",
"super taruco": "超级桶桶子",
"ako suminoe": "住之江亚香",
"riko suminoe": "住之江理香",
"keita suminoe": "住之江圭太",
"miharu mikuni": "三国美春",
"agiri goshiki": "吴织亚切",
"sonya": "索妮娅",
"yasuna oribe": "折部安奈",
"kyara botsu": "无名子",
"ika musume": "乌贼娘",
"ayumi tokita": "常田鲇美",
"chizuru aizawa": "相泽千鹤",
"cindy campbell": "辛迪·坎贝尔",
"eiko aizawa": "相泽荣子",
"sanae nagatsuki": "长月早苗",
"takeru aizawa": "相泽武",
"kiyomi sakura": "纱仓清美",
"nagisa saitou": "齐藤渚",
"miku hatsune": "初音未来",
"luka megurine": "巡音流歌",
"len kagamine": "镜音连",
"rin kagamine": "镜音铃",
"haku yowane": "弱音白",
"gumi": "GUMI",
"akari kizuna": "绁星灯",
"yukari yuzuki": "结月缘",
"maki tsurumaki": "弦卷真纪",
"akane kotonoha": "琴叶茜",
"aoi kotonoha": "琴叶葵",
"zunko tohoku": "东北俊子",
"tsudumi suzuki": "铃木梓梓弥",
"sorata kanda": "神田空太",
"mashiro shiina": "椎名真白",
"nanami aoyama": "青山七海",
"misaki kamiigusa": "上井草美咲",
"chihiro sengoku": "千石千寻",
"ryuuji takasu": "高须龙儿",
"taiga aisaka": "逢坂大河",
"minori kushieda": "栉枝实乃梨",
"ami kawashima": "川岛亚美",
"yasuko takasu": "高须泰子",
"maya kihara": "木原麻耶",
"nanako kashii": "香椎奈奈子",
"yuri koigakubo": "恋洼百合",
"yuusaku kitamura": "北村佑作",
"sakura kanou": "狩野樱",
"sumire kanou": "狩野堇",
"akito himenokouji": "姬小路秋人",
"akiko himenokouji": "姬小路秋子",
"anastasia nasuhara": "那须原安娜史塔希亚",
"ginbei haruomi sawatari": "猿渡银兵卫春臣",
"arashi nikaidou": "二阶堂岚",
"arisa takanomiya": "鹰乃宫亚里沙",
"origami tobiichi": "鸢一折纸",
"kurumi tokisaki": "时崎狂三",
"yoshino himekawa": "冰芽川四糸乃",
"kotori itsuka": "五河琴里",
"kaguya yamai": "八舞耶俱矢",
"yuzuru yamai": "八舞夕弦",
"miku izayoi": "诱宵美九",
"tohka yatogami": "夜刀神十香",
"shido itsuka": "五河士道",
"reine murasame": "村雨令音",
"mayuka kondou": "近藤茧佳",
"nao takanashi": "高梨奈绪",
"iroha tsuchiura": "土浦彩叶",
"nyaruko": "奈亚子",
"cthugha": "克图格亚",
"mahiro yasaka": "八坂真寻",
"hastur": "哈斯太",
"konoe tsuruma": "鹤真心乃枝",
"miyabi kannagi": "神凪雅",
"himeko inaba": "稻叶姬子",
"iori nagase": "永濑伊织",
"taichi yaegashi": "八重㭴太一",
"yui kiriyama": "桐山唯",
"yoshifumi aoki": "青木义文",
"raku ichijou": "一条乐",
"kosaki onodera": "小野寺小咲",
"haru onodera": "小野寺春",
"yui kanakura": "奏仓羽",
"marika tachibana": "橘万里花",
"chitoge kirisaki": "桐崎千棘",
"seishirou tsugumi": "鸫诚士郎",
"ruri miyamoto": "宫本琉璃",
"fumino serizawa": "芹泽文乃",
"nozomi kiriya": "雾谷希",
"chise umenomori": "梅之森千世",
"otome tsuzuki": "都筑乙女",
"touma kamijou": "上条当麻",
"mikoto misaka": "御坂美琴",
"misuzu misaka": "御坂美铃",
"aisa himegami": "姬神秋沙",
"mii konori": "固法美伟",
"seiri fukiyose": "吹寄制理",
"kaori kanzaki": "神裂火织",
"komoe tsukuyomi": "月咏小萌",
"misaka-imouto": "御坂妹妹",
"last order": "最后之作",
"index librorum prohibitorum": "茵蒂克丝",
"kuroko shirai": "白井黑子",
"misaki shokuhou": "食蜂操祈",
"mitsuko kongou": "婚后光子",
"kinuho wannai": "湾内绢保",
"maaya awatsuki": "泡浮万彬",
"aiho yomikawa": "黄泉川爱穗",
"tsuzuri tessou": "铁装缀里",
"maika tsuchimikado": "土御门舞夏",
"erii haruue": "春上衿衣",
"ruiko saten": "佐天泪子",
"kazari uiharu": "初春饰利",
"accelerator": "一方通行",
"oriana thomson": "欧莉安娜·汤姆森",
"shizuri mugino": "麦野沉利",
"rikou takitsubo": "泷壶理后",
"saiai kinuhata": "绢旗最爱",
"frenda seivelun": "芙兰达·塞维伦",
"shiage hamazura": "滨面仕上",
"hyouka kazakiri": "风斩冰华",
"harumi kiyama": "木山春生",
"motoharu tsuchimikado": "土御门元春",
"itsuwa": "五和",
"lucia": "露琪亚",
"agnese sanctis": "雅妮丝·桑提斯",
"angelene": "安洁莉娜",
"eiga kanmi": "甘味荣华",
"febrie": "菲布理",
"janie": "珍妮",
"shinobu nunotaba": "布束砥信",
"yumi kusakabe": "草壁优美",
"eru chitanda": "千反田爱瑠",
"houtarou oreki": "折木奉太郎",
"mayaka ibara": "伊原摩耶花",
"fuyumi irisu": "入须冬实",
"satoshi fukube": "福部里志",
"ayako kouchi": "河内亚也子",
"mitsuha miyamizu": "宫水三叶",
"yotsuha miyamizu": "宫水四叶",
"miki okudera": "奥寺美纪",
"taki tachibana": "立花泷",
"akihisa yoshii": "吉井明久",
"akira yoshii": "吉井玲",
"hideyoshi kinoshita": "木下秀吉",
"yuuko kinoshita": "木下优子",
"mizuki himeji": "姬路瑞希",
"minami shimada": "岛田美波",
"hazuki shimada": "岛田叶月",
"yuuji sakamoto": "坂本雄二",
"shouko kirishima": "雾岛翔子",
"aiko kudou": "工藤爱子",
"miharu shimizu": "清水美春",
"judy hopps": "兔朱迪",
"nick wilde": "狐尼克",
"jack savage": "野蛮杰克",
"chief bogo": "蛮牛局长",
"bonnie hopps": "兔邦妮",
"nagi": "薙",
"zange": "忏悔",
"jin mikuriya": "御厨仁",
"tsugumi aoba": "青叶鸫",
"shino ookouchi": "大河内紫乃",
"takako kimura": "木村贵子",
"kochou yoshida": "良田胡蝶",
"minori nakazawa": "中泽农",
"ringo kinoshita": "木下林檎",
"natsumi bekki": "户次菜摘",
"sora takanashi": "小鸟游空",
"miu takanashi": "小鸟游美羽",
"hina takanashi": "小鸟游雏",
"yuuta segawa": "濑川佑太",
"raika oda": "织田莱香",
"miia": "米亚",
"centorea shianus": "珊卓蕾亚·夏努斯",
"papi": "帕皮",
"suu": "丝",
"lala": "拉拉",
"rachnera arachnera": "拉克涅拉·阿拉克涅拉",
"manako": "真奈子",
"meroune lorelei": "美洛努·罗雷莱",
"tionishia": "提欧尼西亚",
"cathyl": "卡特尔",
"kimihito kurusu": "来留主公人",
"yuuki oojima": "大岛裕树",
"satsuki shinonome": "东云皋月",
"miho nishizumi": "西住美穗",
"saori takebe": "武部沙织",
"hana isuzu": "五十铃华",
"yukari akiyama": "秋山优花里",
"mako reizei": "冷泉麻子",
"anzu kadotani": "角谷杏",
"yuzu koyama": "小山柚子",
"momo kawashima": "河岛桃",
"noriko isobe": "矶边典子",
"taeko kondou": "近藤妙子",
"shinobu kawanishi": "河西忍",
"akebi sasaki": "佐佐木明日",
"azusa sawa": "泽梓",
"yuuki utsugi": "宇津木优季",
"saki maruyama": "丸山纱希",
"midoriko sono": "园绿子",
"darjeeling": "大吉岭",
"assam": "阿萨姆",
"orange pekoe": "橙黄白毫",
"rosehip": "蔷薇果",
"rukuriri": "鲁克莉莉",
"kay": "凯伊",
"chiyomi anzai": "安斋千代美",
"carpaccio": "卡尔帕乔",
"pepperoni": "佩帕罗妮",
"katyusha": "喀秋莎",
"nonna": "农娜",
"maho nishizumi": "西住真穗",
"erika itsumi": "逸见艾丽卡",
"mika": "米卡",
"aki": "阿基",
"mikko": "米科",
"kinuyo nishi": "西绢代",
"arisu shimada": "岛田爱里寿",
"azumi": "杏美",
"ami chouno": "蝶野亚美",
"rena andou": "安藤丽奈",
"ruka oshida": "押田流歌",
"murakami": "村上",
"yuri isuzu": "五十铃百合",
"shiho nishizumi": "西住志穗",
"yoshiko akiyama": "秋山好子",
"chiyo shimada": "岛田千代",
"a2": "A型二号",
"2b": "二号B型",
"9s": "九号S型",
"megumi noda": "野田惠",
"shinichi chiaki": "千秋真一",
"saki miyanaga": "宫永咲",
"nodoka haramura": "原村和",
"yuuki kataoka": "片冈优希",
"mako someya": "染谷真子",
"hisa takei": "竹井久",
"kyoutarou suga": "须贺京太郎",
"touka ryuumonbuchi": "龙门渊透华",
"hajime kunihiro": "国广一",
"koromo amae": "天江衣",
"mihoko fukuji": "福路美穗子",
"kana ikeda": "池田华菜",
"miharu yoshitome": "吉留未春",
"sumiyo fukabori": "深堀纯代",
"yumi kajiki": "加治木由美",
"momoko touyoko": "东横桃子",
"satomi kanbara": "蒲原智美",
"shizuno takakamo": "高鸭稳乃",
"ako atarashi": "新子憧",
"kuro matsumi": "松实玄",
"yuu matsumi": "松实宥",
"arata sagimori": "鹭森灼",
"harue akado": "赤土晴绘",
"teru miyanaga": "宫永照",
"sumire hirose": "弘世堇",
"awai oohoshi": "大星淡",
"yuuko mase": "真濑由子",
"hiroe atago": "爱宕洋榎",
"kinue atago": "爱宕绢惠",
"kyouko suehara": "末原恭子",
"toki onjouji": "园城寺怜",
"ryuuka shimizudani": "清水谷龙华",
"sera eguchi": "江口夕",
"hiroko funakubo": "船久保浩子",
"izumi nijou": "二条泉",
"komaki jindai": "神代小莳",
"tomoe karijuku": "狩宿巴",
"haru takimi": "泷见春",
"hatsumi usuzumi": "薄墨初美",
"kasumi iwato": "石户霞",
"shiromi kosegawa": "小濑川白望",
"aislinn wishart": "爱丝琳·威夏尔特",
"sae usuzawa": "臼泽塞",
"mairu shirouzu": "白水哩",
"himeko tsuruta": "鹤田姬子",
"yukiko maya": "真屋由晖子",
"yoshiko kainou": "戒能良子",
"kaban": "背包",
"serval": "薮猫",
"common raccoon": "浣熊",
"fennec": "耳廓狐",
"ezo red fox": "北狐",
"silver fox": "银狐",
"moose": "驼鹿",
"shoebill": "鲸头鹳",
"alpaca suri": "苏利羊驼",
"humboldt penguin": "汉波德企鹅",
"emperor penguin": "帝企鹅",
"royal penguin": "皇家企鹅",
"margay": "长尾虎猫",
"black leopard": "黑豹",
"leopard": "豹",
"south african giraffe": "南非长颈鹿",
"sabre tiger": "剑齿虎",
"japanese crested ibis": "朱鹮",
"sora kasugano": "春日野穹",
"haruka kasugano": "春日野悠",
"juliet starling": "朱丽叶·斯塔林",
"shinichi kudo": "工藤新一",
"ran mouri": "毛利兰",
"conan edogawa": "江户川柯南",
"ai haibara": "灰原哀",
"ayumi yoshida": "吉田步美",
"kazuha toyama": "远山和叶",
"heiji hattori": "服部平次",
"kaito kuroba": "黑羽快斗",
"kogoro mouri": "毛利小五郎",
"rei furuya": "降谷零",
"shuuichi akai": "赤井秀一",
"sonoko suzuki": "铃木园子",
"eri kisaki": "妃英理",
"jodie starling": "茱蒂·斯泰琳",
"miwako sato": "佐藤美和子",
"masumi sera": "世良真纯",
"yamcha": "雅木茶",
"bulma briefs": "布尔玛",
"chi chi": "琪琪",
"son gohan": "孙悟饭",
"son goten": "孙悟天",
"android 16": "人造人16号",
"android 18": "人造人18号",
"android 21": "人造人21号",
"videl": "比迪丽",
"son goku": "孙悟空",
"spopovich": "斯波比奇",
"vegeta": "贝吉塔",
"trunks briefs": "特兰克斯",
"piccolo": "比克",
"goku black": "黑悟空",
"broly": "布罗利",
"erasa": "伊蕾莎",
"majin buu": "魔人布欧",
"master roshi": "武天老师",
"oolong": "乌龙",
"ranfan": "兰芳",
"lunch": "兰琪",
"panchy brief": "布里夫太太",
"kuro kagami": "镜黑",
"mimi usa": "宇佐美美",
"rin kokonoe": "九重凛",
"daisuke aoki": "青木大介",
"hestia": "赫斯缇雅",
"bell cranel": "贝尔·克朗尼",
"tiona hiryute": "蒂奥娜·席吕特",
"tione hiryute": "蒂奥涅·席吕特",
"aiz wallenstein": "艾丝·华伦斯坦",
"eina tulle": "埃伊娜·祖尔",
"freya": "芙蕾雅",
"hephaistos": "赫菲斯托丝",
"liliruca arde": "莉莉露卡·厄德",
"ryuu lion": "琉·璃昂",
"loki": "洛基",
"syr flova": "希儿·福罗瓦",
"homura akemi": "晓美焰",
"madoka kaname": "鹿目圆",
"mami tomoe": "巴麻美",
"sayaka miki": "美树沙耶香",
"kyouko sakura": "佐仓杏子",
"nagisa momoe": "百江渚",
"kaede akino": "秋野枫",
"rena minami": "水波玲奈",
"yachiyo nanami": "七海八千代",
"iroha tamaki": "环彩羽",
"kyubey": "丘比",
"kyousuke kamijou": "上条恭介",
"danua": "达奴娅",
"djeeta": "姬塔",
"eugen": "欧根",
"gran": "格兰",
"io": "伊欧",
"lyria": "露莉亚",
"katalina": "卡塔莉娜",
"narmaya": "娜尔梅亚",
"rosetta": "萝赛塔",
"sturm": "斯特姆",
"vira": "维拉",
"vampy": "斑比",
"sakura kinomoto": "木之本樱",
"touya kinomoto": "木之本桃矢",
"yukito tsukishiro": "月城雪兔",
"tomoyo daidouji": "大道寺知世",
"sonomi daidouji": "大道寺园美",
"syaoran li": "李小狼",
"meiling li": "李苺铃",
"rika sasaki": "佐佐木利佳",
"chiharu mihara": "三原千春",
"naoko yanagisawa": "柳泽奈绪子",
"ruby rose": "露比·罗丝",
"weiss schnee": "魏丝·雪倪",
"blake belladonna": "布蕾克·贝拉多娜",
"yang xiao long": "阳小龙",
"erika chiba": "千叶艾莉卡",
"haruka ono": "小野遥",
"honoka mitsui": "光井穗香",
"mari watanabe": "渡边摩利",
"mayumi saegusa": "七草真由美",
"miyuki shiba": "司波深雪",
"mizuki shibata": "柴田美月",
"sayaka mibu": "壬生纱耶香",
"shizuku kitayama": "北山雫",
"suzune ichihara": "市原铃音",
"tatsuya shiba": "司波达也",
"saber": "Saber",
"archer": "Archer",
"lancer": "Lancer",
"caster": "Caster",
"berserker": "Berserker",
"assassin": "Assassin",
"shirou emiya": "卫宫士郎",
"rin tosaka": "远坂凛",
"kirei kotomine": "言峰绮礼",
"sakura matou": "间桐樱",
"shinji matou": "间桐慎二",
"illyasviel von einzbern": "伊莉雅丝菲尔·冯·爱因兹贝伦",
"saber alter": "Saber Alter",
"taiga fujimura": "藤村大河",
"gilgamesh": "吉尔伽美什",
"diarmuid ua duibhne": "迪尔姆德·奥迪那",
"iskandar": "伊斯坎达尔",
"gilles de rais": "吉尔·德·莱斯",
"lancelot": "兰斯洛特",
"kiritsugu emiya": "卫宫切嗣",
"tokiomi tohsaka": "远坂时臣",
"waver velvet": "韦伯·维尔维特",
"ryuunosuke uryuu": "雨生龙之介",
"kariya matou": "间桐雁夜",
"irisviel von einzbern": "爱丽丝菲尔·冯·爱因兹贝伦",
"caren ortensia": "卡莲·奥尔黛西亚",
"bazett fraga mcremitz": "巴洁特·法迦·克米兹",
"sitonai": "志度内",
"ishtar": "伊什塔尔",
"tamamo no mae": "玉藻前",
"shielder": "玛修·基列莱特",
"saber lily": "Saber Lily",
"artoria pendragon": "阿尔托莉雅·潘德拉贡",
"artoria pendragon alter": "阿尔托莉雅·潘德拉贡Alter",
"souji okita": "冲田总司",
"red saber": "尼禄·克劳狄乌斯",
"ayako mitsuzuri": "美缀绫子",
"kane himuro": "冰室钟",
"kaede makidera": "莳寺枫",
"gudao": "咕哒男",
"gudako": "咕哒子",
"kiyohime": "清姬",
"alexander": "亚历山大",
"scathach": "斯卡哈",
"asterios": "阿斯忒里俄斯",
"orion": "俄里翁",
"artemis": "阿耳忒弥斯",
"altera": "阿蒂拉",
"boudica": "布狄卡",
"mysterious heroine x": "谜之女主角X",
"mysterious heroine x alter": "谜之女主角X Alter",
"olga marie animusphere": "奥尔加玛丽·阿尼姆斯菲亚",
"paul bunyan": "保罗·班扬",
"kiara sessyoin": "杀生院祈荒",
"astolfo": "阿斯托尔福(阿福)",
"protagonist": "主人公",
"minamoto no raikou": "源赖光",
"meltryllis": "溶解莉莉丝",
"passionlip": "帕森莉普(热情迷唇)",
"ushiwakamaru": "牛若丸",
"jack the ripper": "开膛手杰克",
"jeanne alter": "贞德Alter",
"nitocris": "尼托克丽丝",
"alice kuonji": "久远寺有珠",
"aoko aozaki": "苍崎青子",
"touko aozaki": "苍崎橙子",
"leysritt": "莉洁莉特",
"chevalier deon": "迪昂·德·鲍蒙",
"nightingale": "南丁格尔 | 夜莺",
"cornelius alba": "科尼利厄斯·阿鲁巴",
"arcueid brunestud": "爱尔奎特·布伦史塔德",
"ciel": "希耶尔",
"circe": "喀耳刻",
"satsuki yumizuka": "弓冢五月",
"shiki tohno": "远野志贵",
"akiha tohno": "远野秋叶",
"kohaku": "琥珀",
"sion eltnam atlasia": "紫苑·艾尔特纳姆·阿特拉西亚",
"dracula": "德古拉",
"francis drake": "弗朗西斯·德雷克",
"elizabeth bathory": "伊丽莎白·巴托里",
"hakuno kishinami": "岸波白野(扎比)",
"hassan of serenity": "静谧之哈桑",
"medb": "梅芙",
"len": "莲",
"celenike icecolle yggdmillennia": "赛蕾妮可·艾斯科·千界树",
"fiore forvedge yggdmillennia": "菲奥蕾·弗尔维吉·千界树",
"chiron": "喀戎",
"achilles": "阿喀琉斯",
"atalanta": "阿塔兰忒",
"kairi sisigou": "狮子劫界离",
"miyako arima": "有间都古",
"chloe von einzbern": "克洛伊·冯·爱因兹贝伦(小黑)",
"luviagelita edelfelt": "露维亚瑟琳塔·艾德费尔特",
"miyu edelfelt": "美游·艾德费尔特",
"sella": "塞拉",
"euryale": "尤瑞艾莉(二姐)",
"shiki ryougi": "两仪式",
"stheno": "斯忒诺",
"mordred pendragon": "莫德雷德·潘德拉贡",
"queen of sheba": "示巴女王",
"wu zetian": "武则天",
"abigail williams": "阿比盖尔·威廉姆斯",
"hans christian andersen": "汉斯·克里斯蒂安·安徒生",
"hector": "赫克特",
"mochizuki chiyome": "望月千代女",
"osakabehime": "刑部姬",
"sakata kintoki": "坂田金时",
"scheherazade": "山鲁佐德",
"suzuka gozen": "铃鹿御前",
"tomoe gozen": "巴御前",
"xuanzang": "玄奘",
"fujino asagami": "浅上藤乃",
"mikiya kokutou": "黑桐干也",
"azaka kokutou": "黑桐鲜花",
"ibaraki douji": "茨木童子",
"anne bonny": "安妮·伯妮",
"mary read": "玛莉·瑞德",
"brynhildr": "布伦希尔德",
"cleopatra": "克里奥帕特拉(艳后)",
"ereshkigal": "埃列什基伽勒(艾蕾)",
"helena blavatsky": "海伦娜·布拉瓦茨基",
"leonardo da vinci": "莱昂纳多·达·芬奇",
"marie antoinette": "玛丽·安托瓦内特(蛋糕)",
"mata hari": "玛塔哈丽(舞娘)",
"medusa": "美杜莎",
"musashi miyamoto": "宫本武藏",
"nobunaga oda": "织田信长",
"penthesilea": "彭忒西勒亚",
"semiramis": "赛米拉米斯",
"shuten douji": "酒吞童子",
"tiamat": "提亚马特",
"bb": "BB",
"bradamante": "布拉达曼特",
"nero claudius bride": "尼禄·克劳狄乌斯〔新娘〕",
"chacha": "恰恰 | 茶茶",
"lavinia whateley": "拉薇妮亚·沃特雷",
"artoria pendragon rider alter": "阿尔托莉雅·潘德拉贡〔Alter〕",
"katsushika hokusai": "葛饰北斋(阿荣)",
"saint martha": "玛尔达",
"murasaki shikibu": "紫式部",
"kazuto kirigaya": "桐谷和人(桐人)",
"asuna yuuki": "结城明日奈(亚丝娜)",
"sachi": "幸",
"keiko ayano": "绫野珪子(西莉卡)",
"rika shinozaki": "筱崎里香(莉兹贝特)",
"rosalia": "罗莎莉雅",
"sasha": "纱夏",
"yolko": "夜子",
"suguha kirigaya": "桐谷直叶",
"lyfa": "莉法",
"shino asada": "朝田诗乃(诗乃)",
"yuuki konno": "绀野木棉季(有纪)",
"nagata shinichi": "长田伸一(雷根)",
"alicia rue": "亚丽莎·露",
"sakuya": "朔夜",
"kuroyukihime": "黑雪姬",
"haruyuki arita": "有田春雪",
"yuniko kouzuki": "上月由仁子",
"chiyuri kurashima": "仓岛千百合",
"akira himi": "冰见晶",
"fuuko kurasaki": "仓崎枫子",
"takumu mayuzumi": "黛拓武",
"nanoha takamachi": "高町奈叶",
"fate testarossa": "菲特·泰斯特罗莎",
"einhart stratos": "艾茵哈特·斯崔特斯",
"rinne berlinetta": "凛音·贝利内塔",
"vivio takamachi": "高町薇薇欧",
"yuuno scrya": "尤诺·斯克莱亚",
"amy limietta": "艾蜜·莉米艾特",
"erio mondial": "艾力奥·曼迪尔",
"hayate yagami": "八神疾风",
"shamal": "莎玛尔",
"signum": "希格纳姆",
"vita": "维塔",
"reinforce": "琳芙斯",
"fuka reventon": "风香·雷文顿",
"corona timil": "珂罗娜·缇米尔",
"aruf": "艾尔芙",
"zafira": "扎斐拉",
"alisa bannings": "爱丽莎·巴尼斯",
"kyrie florian": "琦莉耶·弗洛利安",
"amitie florian": "阿米蒂埃·弗洛利安",
"precia testarossa": "普蕾茜亚·泰斯特罗莎",
"alicia testarossa": "阿丽西亚·泰斯塔罗莎",
"lindy harlaown": "琳蒂·哈拉温",
"chrono harlaown": "克洛诺·哈洛温",
"caro ru lushe": "凯珞·露·露茜",
"ginga nakajima": "银河·中岛",
"subaru nakajima": "昴·中岛",
"suzuka tsukimura": "月村铃鹿",
"teana lanster": "蒂安娜·兰斯达",
"lutecia alpine": "璐缇希雅·阿尔菲诺",
"uno": "乌诺",
"due": "都艾",
"cinque": "琴柯",
"sein": "萨依",
"sette": "塞缇",
"nove": "诺威",
"dieci": "迪艾琦",
"wendi": "温蒂",
"deed": "蒂多",
"kazuma asougi": "亚双义一真",
"ryuunosuke naruhodou": "成步堂龙之介",
"phoenix wright": "成步堂龙一",
"trucy wright": "成步堂美贯",
"apollo justice": "王泥喜法介",
"maya fey": "绫里真宵",
"mia fey": "绫里千寻",
"pearl fey": "绫里春美",
"athena cykes": "希月心音",
"dick gumshoe": "糸锯圭介",
"ema skye": "宝月茜",
"franziska von karma": "狩魔冥",
"miles edgeworth": "御剑怜侍",
"kristoph gavin": "牙琉雾人",
"klavier gavin": "牙琉响也",
"adrian andrews": "华宫雾绪",
"kay faraday": "一条美云",
"sherlock holmes": "夏洛克·福尔摩斯",
"haruhi suzumiya": "凉宫春日",
"kyon": "阿虚",
"kyon no imouto": "虚妹",
"emiri kimidori": "喜绿江美里",
"mikuru asahina": "朝比奈实玖瑠",
"ryoko asakura": "朝仓凉子",
"tsuruya": "鹤屋",
"yuki nagato": "长门有希",
"itsuki koizumi": "古泉一树",
"kunikida": "国木田",
"taniguchi": "谷口",
"akira yukino": "雪乃玲",
"manaka takane": "高岭爱花",
"nene anegasaki": "姐崎宁宁",
"rinko kobayakawa": "小早川凛子",
"mariana prinsilla": "玛莉安娜·普林希拉",
"miu sagara": "相良美宇",
"kanade tachibana": "立华奏",
"yuri nakamura": "仲村由理",
"yuzuru otonashi": "音无结弦",
"hideki hinata": "日向秀树",
"shiina": "椎名",
"hisako": "久子",
"masami iwasawa": "岩泽雅美",
"miyuki irie": "入江美雪",
"shiori sekine": "关根诗织",
"umaru doma": "土间埋",
"taihei doma": "土间大平",
"kirie motoba": "本场切绘",
"nana ebina": "海老名菜菜",
"sylphynford tachibana": "橘·希尔芬福特",
"takeshi motoba": "本场猛(崩巴)",
"asagi igawa": "井河阿莎姬",
"sakura igawa": "井河樱",
"rinko akiyama": "秋山凜子",
"yukikaze mizuki": "水城雪风",
"shiranui mizuki": "水城不知火",
"lucy ... yamagami": "山神露西【以下略】",
"yutaka hasebe": "长谷部丰",
"tomoki sakurai": "樱井智树",
"ikaros": "伊卡洛斯",
"nymph": "妮姆芙",
"astraea": "阿斯特蕾亚",
"chaos": "卡奥斯",
"sohara mitsuki": "见月楚原",
"hiyori kazane": "风音日和",
"mikako satsukitane": "五月田根美香子",
"blossom": "花花",
"bubbles": "泡泡",
"buttercup": "毛毛",
"cure black": "黑天使",
"cure white": "白天使",
"shiny luminous": "夏妮露米纳丝",
"cure bloom": "花天使",
"cure egret": "舞天使",
"michiru kiryuu": "雾生满",
"kaoru kiryuu": "雾生薰",
"cure dream": "梦天使",
"cure rouge": "火天使",
"cure lemonade": "柠檬天使",
"cure mint": "薄荷天使",
"cure aqua": "水天使",
"milky rose": "妙奇露丝",
"cure peach": "桃天使",
"cure berry": "莓天使",
"cure pine": "凤梨天使",
"eas": "伊丝",
"cure passion": "百香果天使",
"cure blossom": "花蕾天使",
"cure marine": "海洋天使",
"cure sunshine": "阳光天使",
"cure moonlight": "月光天使",
"cure flower": "花朵天使",
"cure ange": "圣洁天使",
"cure amour": "爱神天使",
"cure etoile": "星辰天使",
"cure macherie": "挚爱天使",
"kotori nono": "野乃小鸟",
"cure yell": "喝采天使",
"dark precure": "暗之美少女",
"mizuki hanasaki": "花咲美月",
"momoka kurumi": "来海桃香",
"sakura kurumi": "来海樱",
"tsubaki myoudouin": "明堂院椿",
"cure melody": "旋律天使",
"cure rhythm": "节奏天使",
"siren": "赛莲",
"cure beat": "节拍天使",
"cure muse": "缪斯天使",
"maria houjou": "北条真理亚",
"misora minamino": "南野美空",
"cure happy": "快乐天使",
"cure sunny": "晴朗天使",
"cure peace": "和平天使",
"cure march": "旋风天使",
"cure beauty": "美丽天使",
"ikuyo hoshizora": "星空育代",
"masako hino": "日野正子",
"chiharu kise": "黄濑千春",
"tomoko midorikawa": "绿川伦子",
"shizuko aoki": "青木静子",
"wolfrun": "狼伦",
"akaooni": "赤鬼",
"bad end happy": "悲剧快乐天使",
"bad end sunny": "悲剧晴朗天使",
"bad end peace": "悲剧和平天使",
"bad end march": "悲剧旋风天使",
"bad end beauty": "悲剧美丽天使",
"cure heart": "爱心天使",
"cure diamond": "钻石天使",
"cure rosetta": "幸运草天使",
"cure sword": "圣剑天使",
"cure ace": "王牌天使",
"regina": "蕾吉娜",
"ryoko hishikawa": "菱川亮子",
"cure lovely": "可爱天使",
"cure princess": "公主天使",
"cure honey": "蜂蜜天使",
"cure fortune": "命运天使",
"maria hikawa": "冰川麻理亚",
"cure flora": "花神天使",
"cure mermaid": "人鱼天使",
"cure twinkle": "闪亮天使",
"towa akagi": "红城永久",
"cure scarlet": "赤红天使",
"cure miracle": "奇迹天使",
"cure magical": "魔法天使",
"cure felice": "幸福天使",
"cure whip": "奶油天使",
"cure custard": "奶黄天使",
"cure gelato": "冰淇淋天使",
"cure macaron": "马卡龙天使",
"cure chocolat": "巧克力天使",
"cure parfait": "芭菲天使",
"nobue itou": "伊藤伸惠",
"chika itou": "伊藤千佳",
"miu matsuoka": "松冈美羽",
"matsuri sakuragi": "樱木茉莉",
"ana coppola": "安娜·柯普拉",
"izetta": "伊泽塔",
"ortfine fredericka von eylstadt": "奥特菲涅·弗雷德里克·冯·埃尔施塔特",
"bianca": "毕安卡",
"lotte": "萝特",
"koyomi araragi": "阿良良木历",
"karen araragi": "阿良良木火怜",
"tsukihi araragi": "阿良良木月火",
"kiss-shot acerola-orion heart-under-blade": "姬丝秀忒·雅赛劳拉莉昂·刃下心",
"shinobu oshino": "忍野忍",
"ougi oshino": "忍野扇",
"meme oshino": "忍野咩咩",
"nadeko sengoku": "千石抚子",
"hitagi senjougahara": "战场原黑仪",
"tsubasa hanekawa": "羽川翼",
"suruga kanbaru": "神原骏河",
"mayoi hachikuji": "八九寺真宵",
"deishuu kaiki": "贝木泥舟",
"yotsugi ononoki": "斧乃木余接",
"seiya kanie": "可儿江西也",
"isuzu sento": "千斗五十铃",
"latifa fleuranza": "拉媞珐·芙尔兰札",
"salama": "萨拉玛",
"sylphy": "西尔菲",
"muse": "缪斯",
"kobory": "柯波莉",
"eiko adachi": "安达映子",
"soujirou izumi": "泉宗次郎",
"kanata izumi": "泉彼方",
"konata izumi": "泉此方",
"miki hiiragi": "柊美纪",
"kagami hiiragi": "柊镜",
"tsukasa hiiragi": "柊司",
"miyuki takara": "高良美幸",
"misao kusakabe": "日下部美纱绪",
"ayano minegishi": "峰岸绫乃",
"yutaka kobayakawa": "小早川优",
"minami iwasaki": "岩崎南",
"hiyori tamura": "田村日和",
"patricia martin": "帕特莉西亚‧马汀",
"izumi wakase": "若濑和泉",
"hikaru sakuraba": "樱庭光",
"fuyuki amahara": "天原冬纪",
"yukari takara": "高良由香里",
"subaru hasegawa": "长谷川昴",
"tomoka minato": "凑智花",
"maho misawa": "三泽真帆",
"saki nagatsuka": "永冢纱季",
"hinata hakamada": "袴田日向",
"airi kashii": "香椎爱莉",
"mimi balguerie": "米米·巴尔格里",
"kagetsu hakamada": "袴田花月",
"tsubaki takenaka": "竹中椿",
"hiiragi takenaka": "竹中柊",
"aoi ogiyama": "荻山葵",
"masami fujii": "藤井雅美",
"natsuhi takenaka": "竹中夏阳",
"mihoshi takamura": "篁美星",
"hijiri kuina": "久井奈圣",
"kaori minato": "凑花织",
"nayu hasegawa": "长谷川七夕",
"kamui": "卡姆依",
"takumi": "拓海",
"charlotte": "夏洛特 | 夏洛蒂",
"ryoma": "龙马",
"orochi": "远吕智",
"elise": "爱丽丝",
"flannel": "弗拉内尔",
"camilla": "卡米拉",
"felicia": "菲莉西亚",
"effie": "艾尔菲",
"flora": "芙洛拉",
"hinoka": "日乃香",
"tharja": "萨利娅",
"sakura": "樱",
"joker": "小丑",
"rinkah": "燐火",
"tiki": "芝琪",
"caeda": "希妲",
"catria": "卡秋娅",
"cordelia": "缇亚莫",
"lyndis": "琳蒂斯",
"nowi": "诺诺",
"tuxedo mask": "大礼服假面",
"sailor moon": "水手月亮",
"sailor chibi moon": "水手小月亮",
"sailor mercury": "水手水星",
"sailor mars": "水手火星",
"sailor jupiter": "水手木星",
"sailor venus": "水手金星",
"sailor saturn": "水手土星",
gitextract_6bcc69h2/
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug.yaml
│ │ ├── enhancement.yaml
│ │ └── other.yaml
│ └── workflows/
│ ├── delete_old_workflows.yml
│ ├── ios_simulator.yml
│ ├── linux.yml
│ └── main.yml
├── .gitignore
├── .metadata
├── LICENSE
├── README.md
├── analysis_options.yaml
├── android/
│ ├── .gitignore
│ ├── app/
│ │ ├── build.gradle
│ │ └── src/
│ │ ├── debug/
│ │ │ └── AndroidManifest.xml
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── kotlin/
│ │ │ │ └── com/
│ │ │ │ └── kokoiro/
│ │ │ │ └── xyz/
│ │ │ │ └── pica_comic/
│ │ │ │ └── MainActivity.kt
│ │ │ └── res/
│ │ │ ├── drawable/
│ │ │ │ └── launch_background.xml
│ │ │ ├── drawable-v21/
│ │ │ │ └── launch_background.xml
│ │ │ ├── mipmap-anydpi-v26/
│ │ │ │ └── ic_launcher.xml
│ │ │ ├── values/
│ │ │ │ └── styles.xml
│ │ │ └── values-night/
│ │ │ └── styles.xml
│ │ └── profile/
│ │ └── AndroidManifest.xml
│ ├── build.gradle
│ ├── gradle/
│ │ └── wrapper/
│ │ └── gradle-wrapper.properties
│ ├── gradle.properties
│ └── settings.gradle
├── assets/
│ ├── init.js
│ ├── tags.json
│ ├── tags_tw.json
│ └── translation.json
├── debian/
│ ├── build.py
│ ├── debian.yaml
│ └── gui/
│ └── pica-comic.desktop
├── doc/
│ ├── comic_source.md
│ └── hosts.md
├── ios/
│ ├── .gitignore
│ ├── Flutter/
│ │ ├── AppFrameworkInfo.plist
│ │ ├── Debug.xcconfig
│ │ └── Release.xcconfig
│ ├── Podfile
│ ├── Runner/
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets/
│ │ │ ├── AppIcon.appiconset/
│ │ │ │ └── Contents.json
│ │ │ └── LaunchImage.imageset/
│ │ │ ├── Contents.json
│ │ │ └── README.md
│ │ ├── Base.lproj/
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── Info.plist
│ │ └── Runner-Bridging-Header.h
│ ├── Runner.xcodeproj/
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace/
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata/
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ │ └── xcshareddata/
│ │ └── xcschemes/
│ │ └── Runner.xcscheme
│ └── Runner.xcworkspace/
│ ├── contents.xcworkspacedata
│ └── xcshareddata/
│ ├── IDEWorkspaceChecks.plist
│ └── WorkspaceSettings.xcsettings
├── lib/
│ ├── base.dart
│ ├── comic_source/
│ │ ├── app_build_in_category.dart
│ │ ├── app_build_in_favorites.dart
│ │ ├── built_in/
│ │ │ ├── ehentai.dart
│ │ │ ├── hitomi.dart
│ │ │ ├── ht_manga.dart
│ │ │ ├── jm.dart
│ │ │ ├── nhentai.dart
│ │ │ └── picacg.dart
│ │ ├── category.dart
│ │ ├── comic_source.dart
│ │ ├── favorites.dart
│ │ └── parser.dart
│ ├── components/
│ │ ├── animated_image.dart
│ │ ├── appbar.dart
│ │ ├── avatar.dart
│ │ ├── button.dart
│ │ ├── comic_tile.dart
│ │ ├── comics_list.dart
│ │ ├── comment.dart
│ │ ├── components.dart
│ │ ├── consts.dart
│ │ ├── custom_slider.dart
│ │ ├── flyout.dart
│ │ ├── layout.dart
│ │ ├── loading.dart
│ │ ├── menu.dart
│ │ ├── message.dart
│ │ ├── navigation_bar.dart
│ │ ├── pop_up_widget.dart
│ │ ├── scroll.dart
│ │ ├── scrollable_list/
│ │ │ ├── scrollable_positioned_list.dart
│ │ │ └── src/
│ │ │ ├── element_registry.dart
│ │ │ ├── item_positions_listener.dart
│ │ │ ├── item_positions_notifier.dart
│ │ │ ├── positioned_list.dart
│ │ │ ├── post_mount_callback.dart
│ │ │ ├── scroll_view.dart
│ │ │ ├── scrollable_positioned_list.dart
│ │ │ ├── viewport.dart
│ │ │ └── wrapping.dart
│ │ ├── select.dart
│ │ ├── select_download_eps.dart
│ │ ├── side_bar.dart
│ │ └── window_frame.dart
│ ├── foundation/
│ │ ├── app.dart
│ │ ├── app_page_route.dart
│ │ ├── cache_manager.dart
│ │ ├── def.dart
│ │ ├── history.dart
│ │ ├── image_favorites.dart
│ │ ├── image_loader/
│ │ │ ├── base_image_provider.dart
│ │ │ ├── cached_image.dart
│ │ │ ├── file_image_loader.dart
│ │ │ ├── image_recombine.dart
│ │ │ └── stream_image_provider.dart
│ │ ├── image_manager.dart
│ │ ├── js_engine.dart
│ │ ├── local_favorites.dart
│ │ ├── log.dart
│ │ ├── pair.dart
│ │ ├── stack.dart
│ │ ├── state_controller.dart
│ │ ├── ui_mode.dart
│ │ └── widget_utils.dart
│ ├── init.dart
│ ├── main.dart
│ ├── network/
│ │ ├── app_dio.dart
│ │ ├── base_comic.dart
│ │ ├── cache_network.dart
│ │ ├── cloudflare.dart
│ │ ├── cookie_jar.dart
│ │ ├── custom_download_model.dart
│ │ ├── download.dart
│ │ ├── download_model.dart
│ │ ├── eh_network/
│ │ │ ├── eh_download_model.dart
│ │ │ ├── eh_main_network.dart
│ │ │ ├── eh_models.dart
│ │ │ └── get_gallery_id.dart
│ │ ├── favorite_download.dart
│ │ ├── file_downloader.dart
│ │ ├── hitomi_network/
│ │ │ ├── fetch_data.dart
│ │ │ ├── hitomi_download_model.dart
│ │ │ ├── hitomi_main_network.dart
│ │ │ ├── hitomi_models.dart
│ │ │ ├── image.dart
│ │ │ └── search.dart
│ │ ├── htmanga_network/
│ │ │ ├── ht_download_model.dart
│ │ │ ├── htmanga_main_network.dart
│ │ │ └── models.dart
│ │ ├── http_client.dart
│ │ ├── http_proxy.dart
│ │ ├── jm_network/
│ │ │ ├── headers.dart
│ │ │ ├── jm_download.dart
│ │ │ ├── jm_image.dart
│ │ │ ├── jm_models.dart
│ │ │ └── jm_network.dart
│ │ ├── net_fav_to_local.dart
│ │ ├── nhentai_network/
│ │ │ ├── download.dart
│ │ │ ├── login.dart
│ │ │ ├── models.dart
│ │ │ ├── nhentai_main_network.dart
│ │ │ └── tags.dart
│ │ ├── picacg_network/
│ │ │ ├── headers.dart
│ │ │ ├── methods.dart
│ │ │ ├── models.dart
│ │ │ └── picacg_download_model.dart
│ │ ├── res.dart
│ │ ├── update.dart
│ │ └── webdav.dart
│ ├── pages/
│ │ ├── accounts_page.dart
│ │ ├── auth_page.dart
│ │ ├── category_comics_page.dart
│ │ ├── category_page.dart
│ │ ├── comic_page.dart
│ │ ├── download_page.dart
│ │ ├── downloading_page.dart
│ │ ├── ehentai/
│ │ │ ├── accounts.dart
│ │ │ ├── eh_comments_page.dart
│ │ │ ├── eh_gallery_page.dart
│ │ │ ├── eh_login_page.dart
│ │ │ ├── eh_user_cookie_parser.dart
│ │ │ └── subscription.dart
│ │ ├── explore_page.dart
│ │ ├── favorites/
│ │ │ ├── local_favorites.dart
│ │ │ ├── local_search_page.dart
│ │ │ ├── main_favorites_page.dart
│ │ │ ├── network_favorite_page.dart
│ │ │ └── network_to_local.dart
│ │ ├── history_page.dart
│ │ ├── hitomi/
│ │ │ ├── hitomi_comic_page.dart
│ │ │ ├── hitomi_home_page.dart
│ │ │ └── hitomi_search.dart
│ │ ├── htmanga/
│ │ │ └── ht_comic_page.dart
│ │ ├── image_favorites.dart
│ │ ├── jm/
│ │ │ ├── jm_comic_page.dart
│ │ │ ├── jm_comments_page.dart
│ │ │ └── week_recommendation_page.dart
│ │ ├── logs_page.dart
│ │ ├── main_page.dart
│ │ ├── me_page.dart
│ │ ├── nhentai/
│ │ │ ├── comic_page.dart
│ │ │ └── comments.dart
│ │ ├── picacg/
│ │ │ ├── collections_page.dart
│ │ │ ├── comic_page.dart
│ │ │ └── comments_page.dart
│ │ ├── pre_search_page.dart
│ │ ├── ranking_page.dart
│ │ ├── reader/
│ │ │ ├── comic_reading_page.dart
│ │ │ ├── eps_view.dart
│ │ │ ├── image.dart
│ │ │ ├── image_view.dart
│ │ │ ├── reading_data.dart
│ │ │ ├── reading_logic.dart
│ │ │ ├── reading_settings.dart
│ │ │ ├── reading_type.dart
│ │ │ ├── tool_bar.dart
│ │ │ └── touch_control.dart
│ │ ├── search_result_page.dart
│ │ ├── settings/
│ │ │ ├── app_settings.dart
│ │ │ ├── blocking_keyword_page.dart
│ │ │ ├── comic_source_settings.dart
│ │ │ ├── components.dart
│ │ │ ├── eh_settings.dart
│ │ │ ├── explore_settings.dart
│ │ │ ├── ht_settings.dart
│ │ │ ├── jm_settings.dart
│ │ │ ├── local_favorite_settings.dart
│ │ │ ├── multi_pages_filter.dart
│ │ │ ├── network_setting.dart
│ │ │ ├── picacg_settings.dart
│ │ │ ├── reading_settings.dart
│ │ │ └── settings_page.dart
│ │ ├── show_image_page.dart
│ │ ├── tools.dart
│ │ ├── webview.dart
│ │ └── welcome_page.dart
│ └── tools/
│ ├── app_links.dart
│ ├── background_service.dart
│ ├── block_screenshot.dart
│ ├── cache_auto_clear.dart
│ ├── debug.dart
│ ├── extensions.dart
│ ├── file_type.dart
│ ├── io_extensions.dart
│ ├── io_tools.dart
│ ├── js.dart
│ ├── keep_screen_on.dart
│ ├── key_down_event.dart
│ ├── mouse_listener.dart
│ ├── notification.dart
│ ├── pdf.dart
│ ├── save_image.dart
│ ├── tags_translation.dart
│ ├── time.dart
│ └── translations.dart
├── linux/
│ ├── .gitignore
│ ├── CMakeLists.txt
│ ├── flutter/
│ │ ├── CMakeLists.txt
│ │ ├── generated_plugin_registrant.cc
│ │ ├── generated_plugin_registrant.h
│ │ └── generated_plugins.cmake
│ ├── main.cc
│ ├── my_application.cc
│ └── my_application.h
├── macos/
│ ├── .gitignore
│ ├── Flutter/
│ │ ├── Flutter-Debug.xcconfig
│ │ └── Flutter-Release.xcconfig
│ ├── Podfile
│ ├── Runner/
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets/
│ │ │ └── AppIcon.appiconset/
│ │ │ └── Contents.json
│ │ ├── Base.lproj/
│ │ │ └── MainMenu.xib
│ │ ├── Configs/
│ │ │ ├── AppInfo.xcconfig
│ │ │ ├── Debug.xcconfig
│ │ │ ├── Release.xcconfig
│ │ │ └── Warnings.xcconfig
│ │ ├── DebugProfile.entitlements
│ │ ├── Info.plist
│ │ ├── MainFlutterWindow.swift
│ │ └── Release.entitlements
│ ├── Runner.xcodeproj/
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace/
│ │ │ └── xcshareddata/
│ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcshareddata/
│ │ └── xcschemes/
│ │ └── Runner.xcscheme
│ └── Runner.xcworkspace/
│ ├── contents.xcworkspacedata
│ └── xcshareddata/
│ └── IDEWorkspaceChecks.plist
├── pubspec.yaml
├── test/
│ └── widget_test.dart
├── utils/
│ ├── check_translation.dart
│ └── tags_translation.dart
├── web/
│ ├── index.html
│ └── manifest.json
└── windows/
├── .gitignore
├── CMakeLists.txt
├── build.iss
├── build_windows.py
├── flutter/
│ ├── CMakeLists.txt
│ ├── generated_plugin_registrant.cc
│ ├── generated_plugin_registrant.h
│ └── generated_plugins.cmake
└── runner/
├── CMakeLists.txt
├── RCa13944
├── Runner.rc
├── flutter_window.cpp
├── flutter_window.h
├── main.cpp
├── resource.h
├── runner.exe.manifest
├── utils.cpp
├── utils.h
├── win32_window.cpp
└── win32_window.h
Showing preview only (202K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (2594 symbols across 204 files)
FILE: assets/init.js
function randomInt (line 163) | function randomInt(min, max) {
class _Timer (line 171) | class _Timer {
method constructor (line 178) | constructor(delay, callback) {
method run (line 183) | run() {
method _interval (line 188) | _interval() {
method cancel (line 196) | cancel() {
function setInterval (line 201) | function setInterval(callback, delay) {
function Cookie (line 207) | function Cookie(name, value, domain = null) {
method fetchBytes (line 230) | async fetchBytes(method, url, headers, data) {
method sendRequest (line 255) | async sendRequest(method, url, headers, data) {
method get (line 277) | async get(url, headers) {
method post (line 288) | async post(url, headers, data) {
method put (line 299) | async put(url, headers, data) {
method patch (line 310) | async patch(url, headers, data) {
method delete (line 320) | async delete(url, headers) {
method setCookies (line 329) | setCookies(url, cookies) {
method getCookies (line 343) | getCookies(url) {
method deleteCookies (line 355) | deleteCookies(url) {
class HtmlDocument (line 367) | class HtmlDocument {
method constructor (line 376) | constructor(html) {
method querySelector (line 392) | querySelector(query) {
method querySelectorAll (line 408) | querySelectorAll(query) {
class HtmlElement (line 422) | class HtmlElement {
method constructor (line 429) | constructor(k) {
method text (line 437) | get text() {
method attributes (line 449) | get attributes() {
method querySelector (line 462) | querySelector(query) {
method querySelectorAll (line 478) | querySelectorAll(query) {
method children (line 492) | get children() {
function log (line 502) | function log(level, title, content) {
class ComicSource (line 523) | class ComicSource {
method loadData (line 539) | loadData(dataKey) {
method saveData (line 552) | saveData(dataKey, data) {
method deleteData (line 565) | deleteData(dataKey) {
method init (line 573) | init() { }
FILE: lib/base.dart
class Appdata (line 22) | class Appdata {
method writeImplicitData (line 126) | void writeImplicitData()
method readImplicitData (line 131) | void readImplicitData()
method getSearchMode (line 155) | int getSearchMode()
method setSearchMode (line 160) | void setSearchMode(int mode)
method readSettings (line 167) | Future<void> readSettings(SharedPreferences s)
method updateSettings (line 188) | Future<void> updateSettings([bool syncData = true])
method writeFirstUse (line 196) | void writeFirstUse()
method writeHistory (line 201) | void writeHistory()
method writeData (line 207) | Future<void> writeData([bool sync = true])
method readData (line 217) | Future<bool> readData()
method toJson (line 237) | Map<String, dynamic> toJson()
method readDataFromJson (line 244) | bool readDataFromJson(Map<String, dynamic> json)
function clearAppdata (line 282) | Future<void> clearAppdata()
class _Settings (line 297) | class _Settings {
method isComicSourceEnabled (line 335) | bool isComicSourceEnabled(String key)
method setComicSourceEnabled (line 343) | void setComicSourceEnabled(String key, bool enabled)
FILE: lib/comic_source/built_in/ehentai.dart
class _EhGalleryTile (line 226) | class _EhGalleryTile extends ComicTile {
method _generateTags (line 231) | List<String> _generateTags(List<String> tags)
method onTap_ (line 326) | void onTap_()
method buildSubDescription (line 337) | Widget? buildSubDescription(context)
class _SearchOptions (line 384) | class _SearchOptions extends StatefulWidget {
method createState (line 392) | State<_SearchOptions> createState()
class _SearchOptionsState (line 395) | class _SearchOptionsState extends State<_SearchOptions> {
method initState (line 402) | void initState()
method update (line 410) | void update()
method build (line 420) | Widget build(BuildContext context)
method buildCategoryItem (line 542) | Widget buildCategoryItem(String title, int value, double width)
class _EhentaiGalleriesLoader (line 574) | class _EhentaiGalleriesLoader {
method clean (line 577) | void clean()
method call (line 602) | Future<Res<List<BaseComic>>> call(int page)
method firstRequest (line 622) | Future<Res<void>> firstRequest()
method loadNext (line 633) | Future<Res<void>> loadNext()
FILE: lib/comic_source/built_in/hitomi.dart
class _HiComicTile (line 51) | class _HiComicTile extends ComicTile {
method _generateTags (line 56) | List<String> _generateTags(List<Tag> tags)
method onTap_ (line 120) | void onTap_()
FILE: lib/comic_source/built_in/ht_manga.dart
class _HtComicTile (line 184) | class _HtComicTile extends ComicTile {
method onTap_ (line 207) | void onTap_()
FILE: lib/comic_source/built_in/jm.dart
class _JmComicTile (line 258) | class _JmComicTile extends ComicTile {
method onTap_ (line 281) | void onTap_()
FILE: lib/comic_source/built_in/nhentai.dart
class _NhentaiComicTile (line 159) | class _NhentaiComicTile extends ComicTile {
method onTap_ (line 182) | void onTap_()
method _generateTags (line 198) | List<String> _generateTags(List<String> tags)
FILE: lib/comic_source/built_in/picacg.dart
class _PicComicTile (line 183) | class _PicComicTile extends ComicTile {
method onTap_ (line 248) | void onTap_()
FILE: lib/comic_source/category.dart
class CategoryData (line 3) | class CategoryData {
class CategoryButtonData (line 26) | class CategoryButtonData {
class BaseCategoryPart (line 37) | abstract class BaseCategoryPart {
class FixedCategoryPart (line 52) | class FixedCategoryPart extends BaseCategoryPart {
class RandomCategoryPart (line 73) | class RandomCategoryPart extends BaseCategoryPart {
method _categories (line 87) | List<String> _categories()
class RandomCategoryPartWithRuntimeData (line 102) | class RandomCategoryPartWithRuntimeData extends BaseCategoryPart {
method _categories (line 118) | List<String> _categories()
function getCategoryDataWithKey (line 146) | CategoryData getCategoryDataWithKey(String key)
FILE: lib/comic_source/comic_source.dart
type ComicListBuilder (line 34) | typedef ComicListBuilder = Future<Res<List<BaseComic>>> Function(int page);
type LoginFunction (line 36) | typedef LoginFunction = Future<Res<bool>> Function(String, String);
type LoadComicFunc (line 38) | typedef LoadComicFunc = Future<Res<ComicInfoData>> Function(String id);
type LoadComicPagesFunc (line 40) | typedef LoadComicPagesFunc = Future<Res<List<String>>> Function(
type CommentsLoader (line 43) | typedef CommentsLoader = Future<Res<List<Comment>>> Function(
type SendCommentFunc (line 46) | typedef SendCommentFunc = Future<Res<bool>> Function(
type GetImageLoadingConfigFunc (line 49) | typedef GetImageLoadingConfigFunc = Map<String, dynamic> Function(
type GetThumbnailLoadingConfigFunc (line 51) | typedef GetThumbnailLoadingConfigFunc = Map<String, dynamic> Function(
class ComicSource (line 54) | class ComicSource {
method find (line 59) | ComicSource? find(String key)
method fromIntKey (line 62) | ComicSource? fromIntKey(int key)
method init (line 65) | Future<void> init()
method reload (line 92) | Future reload()
method loadData (line 161) | Future<void> loadData()
method saveData (line 171) | Future<void> saveData()
method reLogin (line 187) | Future<bool> reLogin()
class AccountConfig (line 283) | class AccountConfig {
class AccountInfoItem (line 315) | class AccountInfoItem {
class LoadImageRequest (line 324) | class LoadImageRequest {
class ExplorePageData (line 332) | class ExplorePageData {
class ExplorePagePart (line 360) | class ExplorePagePart {
type ExplorePageType (line 377) | enum ExplorePageType {
type SearchFunction (line 384) | typedef SearchFunction = Future<Res<List<BaseComic>>> Function(
class SearchPageData (line 387) | class SearchPageData {
class SearchOptions (line 419) | class SearchOptions {
class SettingItem (line 431) | class SettingItem {
type SettingType (line 440) | enum SettingType {
class ComicInfoData (line 446) | class ComicInfoData with HistoryMixin {
method toJson (line 496) | Map<String, dynamic> toJson()
method _generateMap (line 511) | Map<String, List<String>> _generateMap(Map<String, dynamic> map)
type CategoryComicsLoader (line 542) | typedef CategoryComicsLoader = Future<Res<List<BaseComic>>> Function(
class CategoryComicsData (line 545) | class CategoryComicsData {
class RankingData (line 567) | class RankingData {
class CategoryComicsOptions (line 580) | class CategoryComicsOptions {
class Comment (line 600) | class Comment {
FILE: lib/comic_source/favorites.dart
type AddOrDelFavFunc (line 3) | typedef AddOrDelFavFunc = Future<Res<bool>> Function(String comicId, Str...
class FavoriteData (line 5) | class FavoriteData{
function getFavoriteData (line 42) | FavoriteData getFavoriteData(String key)
function getFavoriteDataOrNull (line 47) | FavoriteData? getFavoriteDataOrNull(String key)
FILE: lib/comic_source/parser.dart
class ComicSourceParseException (line 3) | class ComicSourceParseException implements Exception {
method toString (line 9) | String toString()
class ComicSourceParser (line 14) | class ComicSourceParser {
method createAndParse (line 20) | Future<ComicSource> createAndParse(String js, String fileName)
method parse (line 41) | Future<ComicSource> parse(String js, String filePath)
method _checkExists (line 133) | bool _checkExists(String index)
method _getValue (line 138) | dynamic _getValue(String index)
method _loadAccountConfig (line 142) | AccountConfig? _loadAccountConfig()
method login (line 147) | Future<Res<bool>> login(account, pwd)
method logout (line 164) | void logout()
method _loadExploreData (line 176) | List<ExplorePageData> _loadExploreData()
method _loadCategoryData (line 234) | CategoryData? _loadCategoryData()
method _loadCategoryComicsData (line 269) | CategoryComicsData? _loadCategoryComicsData()
method _loadSearchData (line 339) | SearchPageData? _loadSearchData()
method _parseLoadComicFunc (line 372) | LoadComicFunc? _parseLoadComicFunc()
method _parseLoadComicPagesFunc (line 406) | LoadComicPagesFunc? _parseLoadComicPagesFunc()
method _loadFavoriteData (line 420) | FavoriteData? _loadFavoriteData()
method retryZone (line 425) | Future<Res<T>> retryZone<T>(Future<Res<T>> Function() func)
method addOrDelFavFunc (line 441) | Future<Res<bool>> addOrDelFavFunc(comicId, folderId, isAdding)
method func (line 442) | func()
method loadComic (line 458) | Future<Res<List<BaseComic>>> loadComic(int page, [String? folder])
method func (line 459) | Future<Res<List<BaseComic>>> func()
method func (line 485) | Future<Res<Map<String, String>>> func()
method _parseCommentsLoader (line 539) | CommentsLoader? _parseCommentsLoader()
method _parseSendCommentFunc (line 559) | SendCommentFunc? _parseSendCommentFunc()
method func (line 562) | Future<Res<bool>> func()
method _parseImageLoadingConfigFunc (line 587) | GetImageLoadingConfigFunc? _parseImageLoadingConfigFunc()
method _parseThumbnailLoadingConfigFunc (line 599) | GetThumbnailLoadingConfigFunc? _parseThumbnailLoadingConfigFunc()
FILE: lib/components/animated_image.dart
class AnimatedImage (line 3) | class AnimatedImage extends StatefulWidget {
method clear (line 64) | void clear()
method createState (line 67) | State<AnimatedImage> createState()
class _AnimatedImageState (line 70) | class _AnimatedImageState extends State<AnimatedImage> with WidgetsBindi...
method clear (line 84) | clear()
method initState (line 87) | void initState()
method dispose (line 94) | void dispose()
method didChangeDependencies (line 105) | void didChangeDependencies()
method didUpdateWidget (line 119) | void didUpdateWidget(AnimatedImage oldWidget)
method didChangeAccessibilityFeatures (line 127) | void didChangeAccessibilityFeatures()
method reassemble (line 135) | void reassemble()
method _updateInvertColors (line 140) | void _updateInvertColors()
method _resolveImage (line 145) | void _resolveImage()
method _getListener (line 159) | ImageStreamListener _getListener({bool recreateListener = false})
method _handleImageFrame (line 175) | void _handleImageFrame(ImageInfo imageInfo, bool synchronousCall)
method _handleImageChunk (line 185) | void _handleImageChunk(ImageChunkEvent event)
method _replaceImage (line 192) | void _replaceImage({required ImageInfo? info})
method _updateSourceStream (line 201) | void _updateSourceStream(ImageStream newStream)
method _listenToStream (line 226) | void _listenToStream()
method _stopListeningToStream (line 245) | void _stopListeningToStream({bool keepStreamAlive = false})
method build (line 259) | Widget build(BuildContext context)
method debugFillProperties (line 311) | void debugFillProperties(DiagnosticPropertiesBuilder description)
FILE: lib/components/appbar.dart
class Appbar (line 3) | class Appbar extends StatefulWidget implements PreferredSizeWidget {
method createState (line 20) | State<Appbar> createState()
class _AppbarState (line 26) | class _AppbarState extends State<Appbar> {
method didChangeDependencies (line 31) | void didChangeDependencies()
method dispose (line 39) | void dispose()
method _handleScrollNotification (line 47) | void _handleScrollNotification(ScrollNotification notification)
method build (line 75) | Widget build(BuildContext context)
class SliverAppbar (line 119) | class SliverAppbar extends StatelessWidget {
method build (line 140) | Widget build(BuildContext context)
class _MySliverAppBarDelegate (line 157) | class _MySliverAppBarDelegate extends SliverPersistentHeaderDelegate {
method build (line 179) | Widget build(
method shouldRebuild (line 228) | bool shouldRebuild(SliverPersistentHeaderDelegate oldDelegate)
class FloatingSearchBar (line 236) | class FloatingSearchBar extends StatefulWidget {
method createState (line 261) | State<FloatingSearchBar> createState()
class _FloatingSearchBarState (line 264) | class _FloatingSearchBarState extends State<FloatingSearchBar> {
method build (line 270) | Widget build(BuildContext context)
class FilledTabBar (line 318) | class FilledTabBar extends StatefulWidget {
method createState (line 326) | State<FilledTabBar> createState()
class _FilledTabBarState (line 329) | class _FilledTabBarState extends State<FilledTabBar> {
method initState (line 349) | void initState()
method dispose (line 355) | void dispose()
method didChangeDependencies (line 360) | void didChangeDependencies()
method didUpdateWidget (line 368) | void didUpdateWidget(covariant FilledTabBar oldWidget)
method initPainter (line 377) | void initPainter()
method build (line 391) | Widget build(BuildContext context)
method _tabLayoutCallback (line 398) | void _tabLayoutCallback(List<double> offsets, double itemHeight)
method buildTabBar (line 403) | Widget buildTabBar(BuildContext context, Widget? _)
method onTabChanged (line 442) | void onTabChanged()
method updateScrollOffset (line 451) | void updateScrollOffset(int i)
method onTabClicked (line 471) | void onTabClicked(int i)
method buildTab (line 475) | Widget buildTab(int i)
type _TabRenderCallback (line 498) | typedef _TabRenderCallback = void Function(
class _TabRow (line 503) | class _TabRow extends Row {
method createRenderObject (line 509) | RenderFlex createRenderObject(BuildContext context)
method updateRenderObject (line 521) | void updateRenderObject(BuildContext context, _RenderTabFlex renderObj...
class _RenderTabFlex (line 527) | class _RenderTabFlex extends RenderFlex {
method performLayout (line 541) | void performLayout()
class _IndicatorPainter (line 557) | class _IndicatorPainter extends CustomPainter {
method update (line 574) | void update(List<double> offsets, double itemHeight)
method indicatorRect (line 581) | Rect indicatorRect(Size tabBarSize, int tabIndex)
method paint (line 601) | void paint(Canvas canvas, Size size)
method shouldRepaint (line 620) | bool shouldRepaint(covariant CustomPainter oldDelegate)
FILE: lib/components/avatar.dart
class Avatar (line 3) | class Avatar extends StatelessWidget {
method build (line 23) | Widget build(BuildContext context)
function showUserInfo (line 82) | void showUserInfo(BuildContext context, String? avatarUrl, String? frame...
FILE: lib/components/button.dart
class HoverBox (line 3) | class HoverBox extends StatefulWidget {
method createState (line 12) | State<HoverBox> createState()
class _HoverBoxState (line 15) | class _HoverBoxState extends State<HoverBox> {
method build (line 19) | Widget build(BuildContext context)
type ButtonType (line 36) | enum ButtonType { filled, outlined, text, normal }
class Button (line 38) | class Button extends StatefulWidget {
method icon (line 104) | Widget icon(
method createState (line 146) | State<Button> createState()
class _ButtonState (line 149) | class _ButtonState extends State<Button> {
method didUpdateWidget (line 155) | void didUpdateWidget(covariant Button oldWidget)
method build (line 163) | Widget build(BuildContext context)
class _IconButton (line 272) | class _IconButton extends StatefulWidget {
method createState (line 299) | State<_IconButton> createState()
class _IconButtonState (line 302) | class _IconButtonState extends State<_IconButton> {
method build (line 306) | Widget build(BuildContext context)
class StatefulSwitch (line 351) | class StatefulSwitch extends StatefulWidget {
method createState (line 360) | State<StatefulSwitch> createState()
class _StatefulSwitchState (line 363) | class _StatefulSwitchState extends State<StatefulSwitch> {
method initState (line 367) | void initState()
method build (line 373) | Widget build(BuildContext context)
FILE: lib/components/comic_tile.dart
class ComicTileMenuOption (line 3) | class ComicTileMenuOption {
class ComicTile (line 11) | abstract class ComicTile extends StatelessWidget {
method buildSubDescription (line 17) | Widget? buildSubDescription(BuildContext context)
method showBlockPane (line 46) | void showBlockPane()
method onLongTap_ (line 53) | void onLongTap_()
method buildFavoriteDialog (line 148) | Widget buildFavoriteDialog(BuildContext context)
method onTap_ (line 188) | void onTap_()
method onSecondaryTap_ (line 190) | void onSecondaryTap_(TapDownDetails details)
method build (line 234) | Widget build(BuildContext context)
method _buildDetailedMode (line 309) | Widget _buildDetailedMode(BuildContext context)
method _buildBriefMode (line 352) | Widget _buildBriefMode(BuildContext context)
class _ComicDescription (line 419) | class _ComicDescription extends StatelessWidget {
method build (line 438) | Widget build(BuildContext context)
class _ReadingHistoryPainter (line 537) | class _ReadingHistoryPainter extends CustomPainter {
method paint (line 544) | void paint(Canvas canvas, Size size)
method shouldRepaint (line 605) | bool shouldRepaint(covariant CustomPainter oldDelegate)
class NormalComicTile (line 612) | class NormalComicTile extends ComicTile {
method onLongTap_ (line 643) | void onLongTap_()
method onTap_ (line 661) | void onTap_()
class ComicTilePlaceholder (line 670) | class ComicTilePlaceholder extends StatelessWidget {
method build (line 676) | Widget build(BuildContext context)
method _buildDetailedMode (line 687) | Widget _buildDetailedMode(BuildContext context)
method _buildBriefMode (line 754) | Widget _buildBriefMode(BuildContext context)
class CustomComicTile (line 765) | class CustomComicTile extends ComicTile {
method onTap_ (line 785) | void onTap_()
function buildComicTile (line 842) | Widget buildComicTile(BuildContext context, BaseComic item, String sourc...
function isBlocked (line 888) | String? isBlocked(BaseComic item)
class _BlockingPane (line 917) | class _BlockingPane extends StatefulWidget {
method createState (line 923) | State<_BlockingPane> createState()
class _BlockingPaneState (line 926) | class _BlockingPaneState extends State<_BlockingPane> {
method build (line 930) | Widget build(BuildContext context)
method buildTags (line 980) | Iterable<Widget> buildTags()
method _isExisted (line 988) | bool _isExisted(String text)
method buildTag (line 995) | Widget buildTag(String text)
method handleText (line 1024) | void handleText(String text)
method onSubmit (line 1032) | void onSubmit()
FILE: lib/components/comics_list.dart
class ComicsPageLogic (line 3) | class ComicsPageLogic<T> extends StateController {
method get (line 26) | void get(Future<Res<List<T>>> Function(int) getComics)
method loadNextPage (line 63) | void loadNextPage(Future<Res<List<T>>> Function(int) getComics)
method refresh (line 96) | void refresh()
class ComicsPage (line 107) | abstract class ComicsPage<T extends BaseComic> extends StatelessWidget {
method getComics (line 119) | Future<Res<List<T>>> getComics(int i)
method refresh (line 138) | void refresh()
method build (line 143) | Widget build(context)
method removeSliver (line 144) | Widget? removeSliver(Widget? widget)
method buildPageSelector (line 350) | Widget buildPageSelector(BuildContext context, ComicsPageLogic logic)
method buildPageSelectorRight (line 390) | Widget buildPageSelectorRight(BuildContext context, ComicsPageLogic lo...
method nextPage (line 462) | void nextPage(ComicsPageLogic logic)
method prevPage (line 471) | void prevPage(ComicsPageLogic logic)
method selectPage (line 480) | void selectPage(ComicsPageLogic logic)
method buildItem (line 533) | Widget buildItem(BuildContext context, T item)
class SliverGridComicsController (line 538) | class SliverGridComicsController extends StateController {}
class SliverGridComics (line 540) | class SliverGridComics extends StatelessWidget {
method build (line 555) | Widget build(BuildContext context)
class _SliverGridComics (line 579) | class _SliverGridComics extends StatelessWidget {
method build (line 593) | Widget build(BuildContext context)
FILE: lib/components/comment.dart
class CommentTile (line 5) | class CommentTile extends StatelessWidget {
method build (line 39) | Widget build(BuildContext context)
FILE: lib/components/custom_slider.dart
class _SliderDefaultsM3 (line 4) | class _SliderDefaultsM3 extends SliderThemeData {
class CustomSlider (line 71) | class CustomSlider extends StatefulWidget {
method createState (line 87) | State<CustomSlider> createState()
class _CustomSliderState (line 90) | class _CustomSliderState extends State<CustomSlider> {
method initState (line 94) | void initState()
method didUpdateWidget (line 100) | void didUpdateWidget(CustomSlider oldWidget)
method build (line 110) | Widget build(BuildContext context)
FILE: lib/components/flyout.dart
class FlyoutController (line 6) | class FlyoutController {
method show (line 9) | void show()
class Flyout (line 17) | class Flyout extends StatefulWidget {
method createState (line 52) | State<Flyout> createState()
class _FlyoutState (line 55) | class _FlyoutState extends State<Flyout> {
method initState (line 57) | void initState()
method didChangeDependencies (line 65) | void didChangeDependencies()
method build (line 73) | Widget build(BuildContext context)
method show (line 93) | void show()
method transition (line 114) | Widget transition(BuildContext context, Animation<double> animation,
class FlyoutContent (line 161) | class FlyoutContent extends StatelessWidget {
method build (line 172) | Widget build(BuildContext context)
class FlyoutTextButton (line 212) | class FlyoutTextButton extends StatefulWidget {
method createState (line 226) | State<FlyoutTextButton> createState()
class _FlyoutTextButtonState (line 229) | class _FlyoutTextButtonState extends State<FlyoutTextButton> {
method build (line 233) | Widget build(BuildContext context)
class FlyoutIconButton (line 247) | class FlyoutIconButton extends StatefulWidget {
method createState (line 261) | State<FlyoutIconButton> createState()
class _FlyoutIconButtonState (line 264) | class _FlyoutIconButtonState extends State<FlyoutIconButton> {
method build (line 268) | Widget build(BuildContext context)
class FlyoutFilledButton (line 282) | class FlyoutFilledButton extends StatefulWidget {
method createState (line 296) | State<FlyoutFilledButton> createState()
class _FlyoutFilledButtonState (line 299) | class _FlyoutFilledButtonState extends State<FlyoutFilledButton> {
method build (line 303) | Widget build(BuildContext context)
FILE: lib/components/layout.dart
class SliverGridViewWithFixedItemHeight (line 3) | class SliverGridViewWithFixedItemHeight extends StatelessWidget {
method build (line 17) | Widget build(BuildContext context)
method calcChildAspectRatio (line 28) | double calcChildAspectRatio(double width)
class SliverGridDelegateWithFixedHeight (line 38) | class SliverGridDelegateWithFixedHeight extends SliverGridDelegate{
method getLayout (line 49) | SliverGridLayout getLayout(SliverConstraints constraints)
method shouldRelayout (line 66) | bool shouldRelayout(covariant SliverGridDelegate oldDelegate)
class SliverGridDelegateWithComics (line 77) | class SliverGridDelegateWithComics extends SliverGridDelegate{
method getLayout (line 85) | SliverGridLayout getLayout(SliverConstraints constraints)
method getDetailedModeLayout (line 97) | SliverGridLayout getDetailedModeLayout(SliverConstraints constraints, ...
method getBriefModeLayout (line 115) | SliverGridLayout getBriefModeLayout(SliverConstraints constraints, dou...
method shouldRelayout (line 140) | bool shouldRelayout(covariant SliverGridDelegate oldDelegate)
FILE: lib/components/loading.dart
class NetworkError (line 3) | class NetworkError extends StatelessWidget {
method build (line 18) | Widget build(BuildContext context)
class ListLoadingIndicator (line 67) | class ListLoadingIndicator extends StatelessWidget {
method build (line 71) | Widget build(BuildContext context)
class LoadingState (line 82) | abstract class LoadingState<T extends StatefulWidget, S extends Object>
method loadData (line 90) | Future<Res<S>> loadData()
method buildContent (line 92) | Widget buildContent(BuildContext context, S data)
method buildFrame (line 94) | Widget? buildFrame(BuildContext context, Widget child)
method buildLoading (line 96) | Widget buildLoading()
method retry (line 104) | void retry()
method buildError (line 124) | Widget buildError()
method initState (line 145) | void initState()
method build (line 166) | Widget build(BuildContext context)
class MultiPageLoadingState (line 181) | abstract class MultiPageLoadingState<T extends StatefulWidget, S extends...
method loadData (line 195) | Future<Res<List<S>>> loadData(int page)
method buildFrame (line 197) | Widget? buildFrame(BuildContext context, Widget child)
method buildContent (line 199) | Widget buildContent(BuildContext context, List<S> data)
method nextPage (line 207) | void nextPage()
method reset (line 233) | void reset()
method firstLoad (line 244) | void firstLoad()
method initState (line 268) | void initState()
method buildLoading (line 273) | Widget buildLoading(BuildContext context)
method buildError (line 281) | Widget buildError(BuildContext context, String error)
method build (line 300) | Widget build(BuildContext context)
class FiveDotLoadingAnimation (line 324) | class FiveDotLoadingAnimation extends StatefulWidget {
method createState (line 328) | State<FiveDotLoadingAnimation> createState()
class _FiveDotLoadingAnimationState (line 332) | class _FiveDotLoadingAnimationState extends State<FiveDotLoadingAnimation>
method initState (line 337) | void initState()
method dispose (line 347) | void dispose()
method build (line 367) | Widget build(BuildContext context)
method buildDot (line 381) | Widget buildDot(int index)
FILE: lib/components/menu.dart
function showDesktopMenu (line 3) | void showDesktopMenu(
class DesktopMenuRoute (line 8) | class DesktopMenuRoute<T> extends PopupRoute<T> {
method buildPage (line 25) | Widget buildPage(BuildContext context, Animation<double> animation,
method buildEntry (line 68) | Widget buildEntry(DesktopMenuEntry entry, BuildContext context)
method buildTransitions (line 101) | Widget buildTransitions(BuildContext context, Animation<double> animat...
class DesktopMenuEntry (line 111) | class DesktopMenuEntry {
FILE: lib/components/message.dart
function hideAllMessages (line 3) | void hideAllMessages()
function showToast (line 7) | void showToast({required String message, Widget? icon, Widget? trailing})
class _ToastOverlay (line 20) | class _ToastOverlay extends StatelessWidget {
method build (line 30) | Widget build(BuildContext context)
class OverlayWidget (line 64) | class OverlayWidget extends StatefulWidget {
method addOverlay (line 69) | void addOverlay(OverlayEntry entry)
method removeAll (line 72) | void removeAll()
method createState (line 75) | State<OverlayWidget> createState()
class _OverlayWidgetState (line 78) | class _OverlayWidgetState extends State<OverlayWidget> {
method addOverlay (line 83) | void addOverlay(OverlayEntry entry)
method remove (line 90) | void remove(OverlayEntry entry)
method removeAll (line 96) | void removeAll()
method build (line 104) | Widget build(BuildContext context)
function showDialogMessage (line 112) | void showDialogMessage(BuildContext context, String title, String message)
function showConfirmDialog (line 125) | void showConfirmDialog(BuildContext context, String title, String content,
class LoadingDialogController (line 145) | class LoadingDialogController {
method close (line 150) | void close()
function showLoadingDialog (line 163) | LoadingDialogController showLoadingDialog(BuildContext context,
class ContentDialog (line 218) | class ContentDialog extends StatelessWidget {
method build (line 233) | Widget build(BuildContext context)
FILE: lib/components/navigation_bar.dart
class PaneItemEntry (line 3) | class PaneItemEntry {
class PaneActionEntry (line 14) | class PaneActionEntry {
class NaviPane (line 25) | class NaviPane extends StatefulWidget {
method createState (line 48) | State<NaviPane> createState()
class _NaviPaneState (line 51) | class _NaviPaneState extends State<NaviPane>
method onNavigatorStateChange (line 76) | void onNavigatorStateChange()
method initState (line 81) | void initState()
method didChangeDependencies (line 93) | void didChangeDependencies()
method dispose (line 99) | void dispose()
method targetFormContext (line 106) | double targetFormContext(BuildContext context)
method onRebuild (line 123) | void onRebuild(BuildContext context)
method build (line 150) | Widget build(BuildContext context)
method buildTop (line 209) | Widget buildTop()
method buildBottom (line 236) | Widget buildBottom()
method buildLeft (line 273) | Widget buildLeft()
class _SideNaviWidget (line 333) | class _SideNaviWidget extends StatefulWidget {
method createState (line 350) | State<_SideNaviWidget> createState()
class _SideNaviWidgetState (line 353) | class _SideNaviWidgetState extends State<_SideNaviWidget> {
method build (line 357) | Widget build(BuildContext context)
class _PaneActionWidget (line 399) | class _PaneActionWidget extends StatefulWidget {
method createState (line 408) | State<_PaneActionWidget> createState()
class _PaneActionWidgetState (line 411) | class _PaneActionWidgetState extends State<_PaneActionWidget> {
method build (line 415) | Widget build(BuildContext context)
class _SingleBottomNaviWidget (line 452) | class _SingleBottomNaviWidget extends StatefulWidget {
method createState (line 466) | State<_SingleBottomNaviWidget> createState()
class _SingleBottomNaviWidgetState (line 470) | class _SingleBottomNaviWidgetState extends State<_SingleBottomNaviWidget>
method dispose (line 477) | void dispose()
method didUpdateWidget (line 483) | void didUpdateWidget(covariant _SingleBottomNaviWidget oldWidget)
method initState (line 495) | void initState()
method build (line 505) | Widget build(BuildContext context)
method buildContent (line 523) | Widget buildContent()
class NaviObserver (line 554) | class NaviObserver extends NavigatorObserver implements Listenable {
method didPop (line 560) | void didPop(Route route, Route? previousRoute)
method didPush (line 566) | void didPush(Route route, Route? previousRoute)
method didRemove (line 572) | void didRemove(Route route, Route? previousRoute)
method didReplace (line 578) | void didReplace({Route? newRoute, Route? oldRoute})
method addListener (line 589) | void addListener(VoidCallback listener)
method removeListener (line 594) | void removeListener(VoidCallback listener)
method notifyListeners (line 598) | void notifyListeners()
class _NaviPopScope (line 605) | class _NaviPopScope extends StatelessWidget {
method build (line 616) | Widget build(BuildContext context)
class NaviPaddingWidgetController (line 648) | class NaviPaddingWidgetController extends StateController {
method setWithPadding (line 655) | void setWithPadding(bool value)
class NaviPaddingWidget (line 661) | class NaviPaddingWidget extends StatelessWidget {
method build (line 667) | Widget build(BuildContext context)
FILE: lib/components/pop_up_widget.dart
class PopUpWidget (line 3) | class PopUpWidget<T> extends PopupRoute<T> {
method buildPage (line 18) | Widget buildPage(BuildContext context, Animation<double> animation,
method buildTransitions (line 66) | Widget buildTransitions(BuildContext context, Animation<double> animat...
class PopupIndicatorWidget (line 77) | class PopupIndicatorWidget extends InheritedWidget {
method updateShouldNotify (line 81) | bool updateShouldNotify(covariant InheritedWidget oldWidget)
method maybeOf (line 83) | PopupIndicatorWidget? maybeOf(BuildContext context)
function showPopUpWidget (line 88) | Future<T> showPopUpWidget<T>(BuildContext context, Widget widget)
class PopUpWidgetScaffold (line 92) | class PopUpWidgetScaffold extends StatefulWidget {
method createState (line 101) | State<PopUpWidgetScaffold> createState()
class _PopUpWidgetScaffoldState (line 104) | class _PopUpWidgetScaffoldState extends State<PopUpWidgetScaffold> {
method build (line 108) | Widget build(BuildContext context)
FILE: lib/components/scroll.dart
class SmoothCustomScrollView (line 3) | class SmoothCustomScrollView extends StatelessWidget {
method build (line 11) | Widget build(BuildContext context)
class SmoothScrollProvider (line 26) | class SmoothScrollProvider extends StatefulWidget {
method createState (line 36) | State<SmoothScrollProvider> createState()
class _SmoothScrollProviderState (line 39) | class _SmoothScrollProviderState extends State<SmoothScrollProvider> {
method initState (line 47) | void initState()
method build (line 53) | Widget build(BuildContext context)
FILE: lib/components/scrollable_list/src/element_registry.dart
class RegistryWidget (line 8) | class RegistryWidget extends StatefulWidget {
method createState (line 24) | State<StatefulWidget> createState()
class RegisteredElementWidget (line 29) | class RegisteredElementWidget extends ProxyWidget {
method createElement (line 35) | Element createElement()
class _RegistryWidgetState (line 38) | class _RegistryWidgetState extends State<RegistryWidget> {
method build (line 42) | Widget build(BuildContext context)
class _InheritedRegistryWidget (line 48) | class _InheritedRegistryWidget extends InheritedWidget {
method updateShouldNotify (line 56) | bool updateShouldNotify(InheritedWidget oldWidget)
class _RegisteredElement (line 59) | class _RegisteredElement extends ProxyElement {
method notifyClients (line 63) | void notifyClients(ProxyWidget oldWidget)
method mount (line 68) | void mount(Element? parent, dynamic newSlot)
method didChangeDependencies (line 79) | void didChangeDependencies()
method unmount (line 90) | void unmount()
FILE: lib/components/scrollable_list/src/item_positions_listener.dart
class ItemPositionsListener (line 12) | abstract class ItemPositionsListener {
class ItemPosition (line 22) | class ItemPosition {
method toString (line 59) | String toString()
FILE: lib/components/scrollable_list/src/item_positions_notifier.dart
class ItemPositionsNotifier (line 10) | class ItemPositionsNotifier implements ItemPositionsListener {
FILE: lib/components/scrollable_list/src/positioned_list.dart
class PositionedList (line 26) | class PositionedList extends StatefulWidget {
method createState (line 136) | State<StatefulWidget> createState()
class _PositionedListState (line 139) | class _PositionedListState extends State<PositionedList> {
method initState (line 148) | void initState()
method dispose (line 156) | void dispose()
method didUpdateWidget (line 162) | void didUpdateWidget(PositionedList oldWidget)
method build (line 168) | Widget build(BuildContext context)
method _buildSeparatedListElement (line 239) | Widget _buildSeparatedListElement(int index)
method _buildItem (line 247) | Widget _buildItem(int index)
method _schedulePositionNotificationUpdate (line 309) | void _schedulePositionNotificationUpdate()
FILE: lib/components/scrollable_list/src/post_mount_callback.dart
class PostMountCallback (line 8) | class PostMountCallback extends StatelessWidget {
method createElement (line 20) | StatelessElement createElement()
method build (line 23) | Widget build(BuildContext context)
class _PostMountCallbackElement (line 26) | class _PostMountCallbackElement extends StatelessElement {
method mount (line 30) | void mount(Element? parent, dynamic newSlot)
FILE: lib/components/scrollable_list/src/scroll_view.dart
class UnboundedCustomScrollView (line 14) | class UnboundedCustomScrollView extends CustomScrollView {
method buildViewport (line 60) | Widget buildViewport(
FILE: lib/components/scrollable_list/src/scrollable_positioned_list.dart
class ScrollablePositionedList (line 34) | class ScrollablePositionedList extends StatefulWidget {
method createState (line 178) | State<StatefulWidget> createState()
class ItemScrollController (line 183) | class ItemScrollController {
method jumpTo (line 207) | void jumpTo({required int index, double alignment = 0})
method scrollTo (line 232) | Future<void> scrollTo({
method _attach (line 251) | void _attach(_ScrollablePositionedListState scrollableListState)
method _detach (line 256) | void _detach()
class _ScrollablePositionedListState (line 261) | class _ScrollablePositionedListState extends State<ScrollablePositionedL...
method initState (line 279) | void initState()
method deactivate (line 294) | void deactivate()
method dispose (line 300) | void dispose()
method didUpdateWidget (line 310) | void didUpdateWidget(ScrollablePositionedList oldWidget)
method build (line 340) | Widget build(BuildContext context)
method _cacheExtent (line 415) | double _cacheExtent(BoxConstraints constraints)
method _jumpTo (line 420) | void _jumpTo({required int index, required double alignment})
method _scrollTo (line 432) | Future<void> _scrollTo({
method _startScroll (line 464) | Future<void> _startScroll({
method _stopScroll (line 522) | void _stopScroll({bool canceled = false})
method _opacityAnimation (line 551) | Animatable<double> _opacityAnimation(List<double> opacityAnimationWeig...
method _updatePositions (line 567) | void _updatePositions()
class _ListDisplayDetails (line 583) | class _ListDisplayDetails {
FILE: lib/components/scrollable_list/src/viewport.dart
class UnboundedViewport (line 15) | class UnboundedViewport extends Viewport {
method createRenderObject (line 43) | RenderViewport createRenderObject(BuildContext context)
class UnboundedRenderViewport (line 63) | class UnboundedRenderViewport extends RenderViewport {
method performResize (line 109) | void performResize()
method describeSemanticsClip (line 125) | Rect describeSemanticsClip(RenderSliver? child)
method performLayout (line 150) | void performLayout()
method _attemptLayout (line 221) | double _attemptLayout(
method updateOutOfBandData (line 301) | void updateOutOfBandData(
FILE: lib/components/scrollable_list/src/wrapping.dart
class CustomShrinkWrappingViewport (line 31) | class CustomShrinkWrappingViewport extends CustomViewport {
method createRenderObject (line 67) | CustomRenderShrinkWrappingViewport createRenderObject(BuildContext con...
method updateRenderObject (line 79) | void updateRenderObject(
class CustomRenderShrinkWrappingViewport (line 118) | class CustomRenderShrinkWrappingViewport extends CustomRenderViewport {
method performLayout (line 173) | void performLayout()
method _attemptLayout (line 270) | double _attemptLayout(
method updateOutOfBandData (line 351) | void updateOutOfBandData(
method labelForChild (line 367) | String labelForChild(int index)
class CustomViewport (line 401) | abstract class CustomViewport extends MultiChildRenderObjectWidget {
method getDefaultCrossAxisDirection (line 494) | AxisDirection getDefaultCrossAxisDirection(
method createRenderObject (line 523) | CustomRenderViewport createRenderObject(BuildContext context)
method createElement (line 526) | _ViewportElement createElement()
method debugFillProperties (line 529) | void debugFillProperties(DiagnosticPropertiesBuilder properties)
class _ViewportElement (line 549) | class _ViewportElement extends MultiChildRenderObjectElement {
method mount (line 561) | void mount(Element? parent, dynamic newSlot)
method update (line 567) | void update(MultiChildRenderObjectWidget newWidget)
method _updateCenter (line 572) | void _updateCenter()
method debugVisitOnstageChildren (line 585) | void debugVisitOnstageChildren(ElementVisitor visitor)
class CustomSliverPhysicalContainerParentData (line 593) | class CustomSliverPhysicalContainerParentData
class CustomRenderViewport (line 641) | abstract class CustomRenderViewport
method setupParentData (line 714) | void setupParentData(RenderObject child)
method computeDryLayout (line 754) | Size computeDryLayout(BoxConstraints constraints)
method updateOutOfBandData (line 830) | void updateOutOfBandData(
method updateChildLayoutOffset (line 844) | void updateChildLayoutOffset(RenderSliver child, double layoutOffset,
method paintOffsetOf (line 853) | Offset paintOffsetOf(RenderSliver child)
method scrollOffsetOf (line 861) | double scrollOffsetOf(RenderSliver child, double scrollOffsetWithinChild)
method maxScrollObstructionExtentBefore (line 885) | double maxScrollObstructionExtentBefore(RenderSliver child)
method applyPaintTransform (line 909) | void applyPaintTransform(RenderObject child, Matrix4 transform)
method computeChildMainAxisPosition (line 915) | double computeChildMainAxisPosition(
method labelForChild (line 948) | String labelForChild(int index)
method debugFillProperties (line 985) | void debugFillProperties(DiagnosticPropertiesBuilder properties)
FILE: lib/components/select.dart
class Select (line 3) | class Select extends StatefulWidget {
method createState (line 33) | State<Select> createState()
class _SelectState (line 36) | class _SelectState extends State<Select> {
method build (line 41) | Widget build(BuildContext context)
class FilterChipFixedWidth (line 133) | class FilterChipFixedWidth extends StatefulWidget {
method createState (line 147) | State<FilterChipFixedWidth> createState()
class _FilterChipFixedWidthState (line 150) | class _FilterChipFixedWidthState extends State<FilterChipFixedWidth> {
method initState (line 160) | void initState()
method measureSize (line 165) | void measureSize()
method build (line 174) | Widget build(BuildContext context)
method firstBuild (line 196) | Widget firstBuild()
method buildContent (line 205) | Widget buildContent()
class AnimatedCheckWidget (line 232) | class AnimatedCheckWidget extends AnimatedWidget {
method build (line 242) | Widget build(BuildContext context)
class AnimatedCheckIcon (line 265) | class AnimatedCheckIcon extends StatefulWidget {
method createState (line 271) | State<AnimatedCheckIcon> createState()
class _AnimatedCheckIconState (line 274) | class _AnimatedCheckIconState extends State<AnimatedCheckIcon>
method initState (line 280) | void initState()
method dispose (line 294) | void dispose()
method build (line 300) | Widget build(BuildContext context)
class OptionChip (line 308) | class OptionChip extends StatelessWidget {
method build (line 322) | Widget build(BuildContext context)
FILE: lib/components/select_download_eps.dart
class SelectDownloadChapter (line 4) | class SelectDownloadChapter extends StatefulWidget {
method createState (line 13) | State<SelectDownloadChapter> createState()
class _SelectDownloadChapterState (line 16) | class _SelectDownloadChapterState extends State<SelectDownloadChapter> {
method build (line 20) | Widget build(BuildContext context)
FILE: lib/components/side_bar.dart
class SideBarRoute (line 8) | class SideBarRoute<T> extends PopupRoute<T> {
method buildPage (line 45) | Widget buildPage(BuildContext context, Animation<double> animation,
method buildTransitions (line 119) | Widget buildTransitions(BuildContext context, Animation<double> animat...
class SidebarBody (line 133) | class SidebarBody extends StatefulWidget {
method createState (line 145) | State<SidebarBody> createState()
class _SidebarBodyState (line 148) | class _SidebarBodyState extends State<SidebarBody> {
method build (line 152) | Widget build(BuildContext context)
function showSideBar (line 224) | void showSideBar(BuildContext context, Widget widget,
FILE: lib/components/window_frame.dart
class WindowFrameController (line 22) | class WindowFrameController extends StateController {
method setDarkTheme (line 27) | void setDarkTheme()
method resetTheme (line 32) | void resetTheme()
method hideWindowFrame (line 39) | void hideWindowFrame()
method showWindowFrame (line 44) | void showWindowFrame()
class WindowFrame (line 50) | class WindowFrame extends StatelessWidget {
method build (line 56) | Widget build(BuildContext context)
method buildMenuButton (line 134) | Widget buildMenuButton(
class _MenuPainter (line 157) | class _MenuPainter extends CustomPainter {
method paint (line 163) | void paint(Canvas canvas, Size size)
method shouldRepaint (line 176) | bool shouldRepaint(covariant CustomPainter oldDelegate)
class _SideBar (line 179) | class _SideBar extends StatefulWidget {
method createState (line 183) | State<_SideBar> createState()
class __SideBarState (line 186) | class __SideBarState extends State<_SideBar>
method run (line 190) | void run()
method initState (line 200) | void initState()
method dispose (line 209) | void dispose()
method build (line 215) | Widget build(BuildContext context)
class _SideBarBody (line 261) | class _SideBarBody extends StatelessWidget {
method toPage (line 264) | void toPage(Widget Function() builder)
method build (line 270) | Widget build(BuildContext context)
method buildItem (line 328) | Widget buildItem(
class WindowButtons (line 349) | class WindowButtons extends StatefulWidget {
method createState (line 353) | State<WindowButtons> createState()
class _WindowButtonsState (line 356) | class _WindowButtonsState extends State<WindowButtons> with WindowListen...
method initState (line 360) | void initState()
method dispose (line 373) | void dispose()
method onWindowMaximize (line 379) | void onWindowMaximize()
method onWindowUnmaximize (line 387) | void onWindowUnmaximize()
method build (line 395) | Widget build(BuildContext context)
class WindowButton (line 499) | class WindowButton extends StatefulWidget {
method createState (line 516) | State<WindowButton> createState()
class _WindowButtonState (line 519) | class _WindowButtonState extends State<WindowButton> {
method build (line 523) | Widget build(BuildContext context)
class CloseIcon (line 546) | class CloseIcon extends StatelessWidget {
method build (line 552) | Widget build(BuildContext context)
class _ClosePainter (line 555) | class _ClosePainter extends _IconPainter {
method paint (line 559) | void paint(Canvas canvas, Size size)
class MaximizeIcon (line 567) | class MaximizeIcon extends StatelessWidget {
method build (line 573) | Widget build(BuildContext context)
class _MaximizePainter (line 576) | class _MaximizePainter extends _IconPainter {
method paint (line 580) | void paint(Canvas canvas, Size size)
class RestoreIcon (line 587) | class RestoreIcon extends StatelessWidget {
method build (line 596) | Widget build(BuildContext context)
class _RestorePainter (line 599) | class _RestorePainter extends _IconPainter {
method paint (line 603) | void paint(Canvas canvas, Size size)
class MinimizeIcon (line 616) | class MinimizeIcon extends StatelessWidget {
method build (line 622) | Widget build(BuildContext context)
class _MinimizePainter (line 625) | class _MinimizePainter extends _IconPainter {
method paint (line 629) | void paint(Canvas canvas, Size size)
class _IconPainter (line 637) | abstract class _IconPainter extends CustomPainter {
method shouldRepaint (line 643) | bool shouldRepaint(covariant CustomPainter oldDelegate)
class _AlignedPaint (line 646) | class _AlignedPaint extends StatelessWidget {
method build (line 652) | Widget build(BuildContext context)
function getPaint (line 659) | Paint getPaint(Color color, [bool isAntiAlias = false])
class WindowPlacement (line 665) | class WindowPlacement {
method applyToWindow (line 672) | Future<void> applyToWindow()
method writeToFile (line 684) | Future<void> writeToFile()
method loadFromFile (line 695) | Future<WindowPlacement> loadFromFile()
method loop (line 723) | void loop()
method validate (line 737) | bool validate(Rect rect)
class VirtualWindowFrame (line 742) | class VirtualWindowFrame extends StatefulWidget {
method createState (line 752) | State<StatefulWidget> createState()
class _VirtualWindowFrameState (line 755) | class _VirtualWindowFrameState extends State<VirtualWindowFrame>
method initState (line 762) | void initState()
method dispose (line 768) | void dispose()
method _buildVirtualWindowFrame (line 773) | Widget _buildVirtualWindowFrame(BuildContext context)
method build (line 794) | Widget build(BuildContext context)
method onWindowFocus (line 802) | void onWindowFocus()
method onWindowBlur (line 809) | void onWindowBlur()
method onWindowMaximize (line 816) | void onWindowMaximize()
method onWindowUnmaximize (line 823) | void onWindowUnmaximize()
method onWindowEnterFullScreen (line 830) | void onWindowEnterFullScreen()
method onWindowLeaveFullScreen (line 837) | void onWindowLeaveFullScreen()
function VirtualWindowFrameInit (line 845) | TransitionBuilder VirtualWindowFrameInit()
FILE: lib/foundation/app.dart
class App (line 12) | class App {
method uiMode (line 30) | UiModes uiMode([BuildContext? context])
method init (line 52) | Future<void> init()
method back (line 57) | back(BuildContext context)
method globalBack (line 63) | globalBack()
method off (line 69) | off(BuildContext context, Widget Function() page)
method globalOff (line 75) | globalOff(Widget Function() page)
method offAll (line 81) | offAll(Widget Function() page)
method to (line 86) | Future<T?> to<T extends Object?>(BuildContext context, Widget Function...
method globalTo (line 93) | Future<T?> globalTo<T extends Object?>(Widget Function() page, {bool p...
method _currentRoute (line 99) | String? _currentRoute()
method screenSize (line 124) | Size screenSize(BuildContext context)
method colors (line 126) | ColorScheme colors(BuildContext context)
type UiModes (line 129) | enum UiModes {
FILE: lib/foundation/app_page_route.dart
class AppPageRoute (line 12) | class AppPageRoute<T> extends PageRoute<T> with _AppRouteTransitionMixin{
method buildContent (line 37) | Widget buildContent(BuildContext context)
function buildContent (line 62) | Widget buildContent(BuildContext context)
function canTransitionTo (line 74) | bool canTransitionTo(TransitionRoute<dynamic> nextRoute)
function buildPage (line 88) | Widget buildPage(
function _isPopGestureEnabled (line 108) | bool _isPopGestureEnabled<T>(PageRoute<T> route)
function buildTransitions (line 124) | Widget buildTransitions(BuildContext context, Animation<double> animatio...
function _startPopGesture (line 155) | IOSBackGestureController _startPopGesture(PageRoute<T> route)
class IOSBackGestureController (line 160) | class IOSBackGestureController {
method dragEnd (line 169) | void dragEnd(double velocity)
method dragUpdate (line 213) | void dragUpdate(double delta)
class IOSBackGestureDetector (line 218) | class IOSBackGestureDetector extends StatefulWidget {
method createState (line 235) | State<IOSBackGestureDetector> createState()
class _IOSBackGestureDetectorState (line 238) | class _IOSBackGestureDetectorState extends State<IOSBackGestureDetector> {
method dispose (line 244) | void dispose()
method initState (line 250) | void initState()
method build (line 260) | Widget build(BuildContext context)
method _handlePointerDown (line 283) | void _handlePointerDown(PointerDownEvent event)
method _handleDragCancel (line 287) | void _handleDragCancel()
method _convertToLogical (line 293) | double _convertToLogical(double value)
method _handleDragEnd (line 302) | void _handleDragEnd(DragEndDetails details)
method _handleDragStart (line 310) | void _handleDragStart(DragStartDetails details)
method _handleDragUpdate (line 316) | void _handleDragUpdate(DragUpdateDetails details)
class SlidePageTransitionBuilder (line 324) | class SlidePageTransitionBuilder extends PageTransitionsBuilder {
method buildTransitions (line 326) | Widget buildTransitions<T>(
FILE: lib/foundation/cache_manager.dart
class CacheManager (line 9) | class CacheManager {
method setLimitSize (line 52) | void setLimitSize(int size)
method setType (line 56) | void setType(String key, String? type)
method getType (line 64) | String? getType(String key)
method writeCache (line 75) | Future<void> writeCache(String key, Uint8List data, [int duration = 7 ...
method openWrite (line 99) | Future<CachingFile> openWrite(String key)
method findCache (line 113) | Future<String?> findCache(String key)
method checkCache (line 133) | Future<void> checkCache()
method delete (line 197) | Future<void> delete(String key)
method clear (line 223) | Future<void> clear()
method deleteKeyword (line 232) | Future<void> deleteKeyword(String keyword)
class CachingFile (line 261) | class CachingFile{
method writeBytes (line 274) | Future<void> writeBytes(List<int> data)
method close (line 282) | Future<void> close()
method cancel (line 291) | Future<void> cancel()
method reset (line 295) | void reset()
FILE: lib/foundation/def.dart
type ActionFunc (line 3) | typedef ActionFunc = void Function();
type ComicType (line 5) | enum ComicType {
FILE: lib/foundation/history.dart
class HistoryMixin (line 13) | abstract mixin class HistoryMixin {
class HistoryType (line 27) | final class HistoryType {
class History (line 68) | base class History extends LinkedListEntry<History> {
method toMap (line 107) | Map<String, dynamic> toMap()
method toString (line 134) | String toString()
method findOrCreate (line 153) | Future<History> findOrCreate(
method createIfNull (line 167) | Future<History> createIfNull(
class HistoryManager (line 178) | class HistoryManager {
method tryUpdateDb (line 192) | Future<void> tryUpdateDb()
method init (line 224) | Future<void> init()
method readDataFromJson (line 263) | void readDataFromJson(List<dynamic> json)
method saveData (line 275) | void saveData()
method addHistory (line 282) | Future<void> addHistory(History newItem)
method saveReadHistory (line 315) | Future<void> saveReadHistory(History history,
method clearHistory (line 335) | void clearHistory()
method remove (line 340) | void remove(String id)
method find (line 348) | Future<History?> find(String target)
method updateCache (line 352) | void updateCache()
method findSync (line 362) | History? findSync(String target)
method getAll (line 380) | List<History> getAll()
method vacuum (line 388) | void vacuum()
method getWeekData (line 395) | List<int> getWeekData(int days)
method getRecent (line 410) | List<History> getRecent()
method count (line 420) | int count()
FILE: lib/foundation/image_favorites.dart
class ImageFavorite (line 5) | class ImageFavorite{
class ImageFavoriteManager (line 22) | class ImageFavoriteManager{
method init (line 26) | void init()
method add (line 38) | void add(ImageFavorite favorite)
method getAll (line 47) | List<ImageFavorite> getAll()
method delete (line 53) | void delete(ImageFavorite favorite)
FILE: lib/foundation/image_loader/base_image_provider.dart
class BaseImageProvider (line 11) | abstract class BaseImageProvider<T extends BaseImageProvider<T>>
method loadImage (line 16) | ImageStreamCompleter loadImage(T key, ImageDecoderCallback decode)
method _loadBufferAsync (line 32) | Future<ui.Codec> _loadBufferAsync(
method _checkCacheSize (line 122) | void _checkCacheSize()
method clearCache (line 130) | void clearCache()
method setCacheSizeLimit (line 135) | void setCacheSizeLimit(int size)
method load (line 140) | Future<Uint8List> load(StreamController<ImageChunkEvent> chunkEvents)
method toString (line 153) | String toString()
type FileDecoderCallback (line 158) | typedef FileDecoderCallback = Future<ui.Codec> Function(Uint8List);
FILE: lib/foundation/image_loader/cached_image.dart
type ErrorListener (line 9) | typedef ErrorListener = void Function();
class CachedImageProvider (line 11) | class CachedImageProvider
method load (line 24) | Future<Uint8List> load(StreamController<ImageChunkEvent> chunkEvents)
method obtainKey (line 54) | Future<CachedImageProvider> obtainKey(ImageConfiguration configuration)
FILE: lib/foundation/image_loader/file_image_loader.dart
class FileImageProvider (line 7) | class FileImageProvider extends ImageProvider<FileImageProvider> {
method obtainKey (line 19) | Future<FileImageProvider> obtainKey(ImageConfiguration configuration)
method loadImage (line 24) | ImageStreamCompleter loadImage(FileImageProvider key, ImageDecoderCall...
method _loadAsync (line 32) | Future<Codec> _loadAsync(
method toString (line 61) | String toString()
FILE: lib/foundation/image_loader/image_recombine.dart
function _getSegmentationNum (line 11) | int _getSegmentationNum(String epsId, String scrambleID, String pictureN...
function _segmentationPicture (line 40) | Future<Uint8List> _segmentationPicture(_RecombinationTask data)
function _recombineImageAndWriteFile (line 85) | Future<Uint8List> _recombineImageAndWriteFile(_RecombinationTask data)
class _RecombinationTask (line 96) | class _RecombinationTask {
method removeCompleter (line 104) | _RecombinationTask removeCompleter()
class JmRecombine (line 112) | class JmRecombine{
method recombineImage (line 125) | Future<Uint8List> recombineImage(Uint8List imgData, String epsId,
method _pushTask (line 139) | void _pushTask()
method _start (line 146) | Future<void> _start()
method _listen (line 153) | void _listen()
method _handleError (line 176) | _handleError()
method _run (line 194) | void _run(SendPort port)
function startRecombineAndWriteImage (line 213) | Future<Uint8List> startRecombineAndWriteImage(Uint8List imgData, String ...
FILE: lib/foundation/image_loader/stream_image_provider.dart
type ErrorListener (line 8) | typedef ErrorListener = void Function();
class StreamImageProvider (line 10) | class StreamImageProvider
method load (line 22) | Future<Uint8List> load(StreamController<ImageChunkEvent> chunkEvents)
method obtainKey (line 48) | Future<StreamImageProvider> obtainKey(ImageConfiguration configuration)
FILE: lib/foundation/image_manager.dart
class BadRequestException (line 26) | class BadRequestException {
method toString (line 32) | String toString()
class ImageManager (line 35) | class ImageManager {
method clearTasks (line 46) | void clearTasks()
method getImage (line 58) | Stream<DownloadProgress> getImage(final String url,
method getEhImageNew (line 148) | Stream<DownloadProgress> getEhImageNew(
method getShowKey (line 187) | Future<void> getShowKey()
method getImageFromApi (line 250) | Future<(String image, String nl)> getImageFromApi([String? nl])
method getImageFromApi (line 287) | Future<(String, String, String?)> getImageFromApi()
method getImageFromHtml (line 320) | Future<(String, String, String?)> getImageFromHtml()
method getHitomiImage (line 455) | Stream<DownloadProgress> getHitomiImage(
method getJmImage (line 534) | Stream<DownloadProgress> getJmImage(String url, Map<String, String>? h...
method getCustomImage (line 622) | Stream<DownloadProgress> getCustomImage(
method wait (line 724) | Future<void> wait(String cacheKey)
method getCustomThumbnail (line 737) | Stream<DownloadProgress> getCustomThumbnail(
method getFile (line 829) | Future<File?> getFile(String key)
method clear (line 837) | Future<void> clear()
method find (line 841) | Future<bool> find(String key)
method delete (line 845) | Future<void> delete(String key)
method getExt (line 849) | String? getExt(Response res)
class DownloadProgress (line 877) | class DownloadProgress {
method getFile (line 895) | File getFile()
class ImageExceedError (line 898) | class ImageExceedError extends Error {
method toString (line 900) | String toString()
FILE: lib/foundation/js_engine.dart
class JavaScriptRuntimeException (line 32) | class JavaScriptRuntimeException implements Exception {
method toString (line 38) | String toString()
class JsEngine (line 43) | class JsEngine with _JSEngineApi{
method reset (line 56) | void reset()
method init (line 62) | Future<void> init()
method _messageReceiver (line 87) | dynamic _messageReceiver(dynamic message)
method _http (line 161) | Future<Map<String, dynamic>> _http(Map<String, dynamic> req)
method runCode (line 196) | dynamic runCode(String js, [String? name])
method dispose (line 200) | void dispose()
class _JSEngineApi (line 208) | mixin class _JSEngineApi{
method handleHtmlCallback (line 213) | dynamic handleHtmlCallback(Map<String, dynamic> data)
method handleCookieCallback (line 259) | dynamic handleCookieCallback(Map<String, dynamic> data)
method clear (line 291) | void clear()
method clearCookies (line 296) | void clearCookies(List<String> domains)
method _convert (line 304) | dynamic _convert(Map<String, dynamic> data)
method _parsePrivateKey (line 379) | RSAPrivateKey _parsePrivateKey(String privateKeyString)
method _processInBlocks (line 396) | Uint8List _processInBlocks(
method _randomInt (line 421) | int _randomInt(int min, int max)
FILE: lib/foundation/local_favorites.dart
function getCurTime (line 27) | String getCurTime()
class FavoriteType (line 34) | final class FavoriteType {
class FavoriteItem (line 89) | class FavoriteItem {
method toDownloadId (line 107) | String toDownloadId()
method toJson (line 191) | Map<String, dynamic> toJson()
method toString (line 247) | String toString()
class FavoriteItemWithFolderInfo (line 256) | class FavoriteItemWithFolderInfo {
class FolderSync (line 273) | class FolderSync {
class LocalFavoritesManager (line 287) | class LocalFavoritesManager {
method init (line 297) | Future<void> init()
method _checkAndCreate (line 303) | void _checkAndCreate()
method updateUI (line 362) | void updateUI()
method find (line 369) | Future<List<String>> find(String target, FavoriteType type)
method findWithModel (line 383) | Future<List<String>> findWithModel(FavoriteItem item)
method saveData (line 397) | Future<void> saveData()
method readData (line 405) | Future<void> readData()
method _getTablesWithDB (line 498) | List<String> _getTablesWithDB()
method _getFolderNamesWithDB (line 506) | List<String> _getFolderNamesWithDB()
method updateOrder (line 528) | void updateOrder(Map<String, int> order)
method _getFolderSyncWithDB (line 537) | List<FolderSync> _getFolderSyncWithDB()
method updateFolderSyncTime (line 545) | void updateFolderSyncTime(FolderSync folderSync)
method insertFolderSync (line 553) | void insertFolderSync(FolderSync folderSync)
method count (line 562) | int count(String folderName)
method maxValue (line 573) | int maxValue(String folder)
method minValue (line 580) | int minValue(String folder)
method getAllComics (line 587) | List<FavoriteItem> getAllComics(String folder)
method addTagTo (line 595) | void addTagTo(String folder, String target, String tag)
method allComics (line 604) | List<FavoriteItemWithFolderInfo> allComics()
method createFolder (line 617) | String createFolder(String name, [bool renameWhenInvalidName = false])
method comicExists (line 658) | bool comicExists(String folder, String target, int type)
method getComic (line 666) | FavoriteItem getComic(String folder, String target, FavoriteType type)
method addComic (line 680) | void addComic(String folder, FavoriteItem comic, [int? order])
method getCover (line 731) | Future<File> getCover(FavoriteItem item)
method deleteFolder (line 764) | void deleteFolder(String name)
method checkAndDeleteCover (line 774) | void checkAndDeleteCover(FavoriteItem item)
method deleteComic (line 780) | void deleteComic(String folder, FavoriteItem comic)
method deleteComicWithTarget (line 786) | void deleteComicWithTarget(String folder, String target, FavoriteType ...
method clearAll (line 795) | Future<void> clearAll()
method reorder (line 802) | void reorder(List<FavoriteItem> newFolder, String folder)
method rename (line 814) | void rename(String before, String after)
method onReadEnd (line 835) | void onReadEnd(String target, FavoriteType type)
method folderToJsonString (line 878) | String folderToJsonString(String folderName)
method loadFolderData (line 891) | (bool, String) loadFolderData(String dataString)
method search (line 913) | List<FavoriteItemWithFolderInfo> search(String keyword)
method test (line 932) | bool test(FavoriteItemWithFolderInfo comic, String keyword)
method editTags (line 951) | void editTags(String target, String folder, List<String> tags)
method isExist (line 961) | bool isExist(String target)
method _cacheFavoritedTargets (line 970) | void _cacheFavoritedTargets()
method updateInfo (line 983) | void updateInfo(String folder, FavoriteItem comic)
FILE: lib/foundation/log.dart
function log (line 6) | void log(String content,
class LogManager (line 11) | class LogManager {
method printWarning (line 22) | void printWarning(String text)
method printError (line 26) | void printError(String text)
method addLog (line 30) | void addLog(LogLevel level, String title, String content)
method clear (line 63) | void clear()
method toString (line 66) | String toString()
method writeLog (line 76) | void writeLog(LogLevel level, String title, String content)
class Log (line 86) | class Log {
method info (line 97) | void info(String title, String message)
method warning (line 101) | void warning(String title, String message)
method error (line 105) | void error(String title, String message)
type LogLevel (line 119) | enum LogLevel { error, warning, info }
FILE: lib/foundation/pair.dart
class Pair (line 1) | class Pair<M, V>{
FILE: lib/foundation/stack.dart
class Stack (line 3) | class Stack<T>{
method push (line 12) | void push(T value)
method pop (line 16) | T pop()
FILE: lib/foundation/state_controller.dart
class SimpleController (line 4) | class SimpleController extends StateController {
method refresh (line 10) | void refresh()
class StateController (line 15) | abstract class StateController {
method put (line 18) | T put<T extends StateController>(T controller,
method putIfNotExists (line 24) | T putIfNotExists<T extends StateController>(T controller,
method find (line 30) | T find<T extends StateController>({Object? tag})
method findAll (line 41) | List<T> findAll<T extends StateController>({Object? tag})
method findOrNull (line 49) | T? findOrNull<T extends StateController>({Object? tag})
method remove (line 60) | void remove<T>([Object? tag, bool check = false])
method putSimpleController (line 73) | SimpleController putSimpleController(
method update (line 84) | void update([List<Object>? ids])
method dispose (line 98) | void dispose()
method refresh (line 102) | void refresh()
class StateControllerWrapped (line 107) | class StateControllerWrapped {
class StateBuilder (line 115) | class StateBuilder<T extends StateController> extends StatefulWidget {
method builderWrapped (line 136) | Widget builderWrapped(StateController controller)
method initStateWrapped (line 140) | void initStateWrapped(StateController controller)
method disposeWrapped (line 144) | void disposeWrapped(StateController controller)
method createState (line 151) | State<StateBuilder> createState()
class _StateBuilderState (line 154) | class _StateBuilderState<T extends StateController>
method initState (line 159) | void initState()
method dispose (line 178) | void dispose()
method build (line 185) | Widget build(BuildContext context)
class StateWithController (line 188) | abstract class StateWithController<T extends StatefulWidget> extends Sta...
method refresh (line 191) | void refresh()
method initState (line 197) | void initState()
method dispose (line 212) | void dispose()
method update (line 217) | void update()
FILE: lib/foundation/ui_mode.dart
class UiMode (line 4) | class UiMode{
method m1 (line 5) | bool m1(BuildContext context)
method m2 (line 9) | bool m2(BuildContext context)
method m3 (line 13) | bool m3(BuildContext context)
FILE: lib/foundation/widget_utils.dart
function padding (line 7) | Widget padding(EdgeInsetsGeometry padding)
function paddingLeft (line 11) | Widget paddingLeft(double padding)
function paddingRight (line 15) | Widget paddingRight(double padding)
function paddingTop (line 19) | Widget paddingTop(double padding)
function paddingBottom (line 23) | Widget paddingBottom(double padding)
function paddingVertical (line 27) | Widget paddingVertical(double padding)
function paddingHorizontal (line 32) | Widget paddingHorizontal(double padding)
function paddingAll (line 37) | Widget paddingAll(double padding)
function toCenter (line 41) | Widget toCenter()
function toAlign (line 45) | Widget toAlign(AlignmentGeometry alignment)
function sliverPadding (line 49) | Widget sliverPadding(EdgeInsetsGeometry padding)
function sliverPaddingAll (line 53) | Widget sliverPaddingAll(double padding)
function sliverPaddingVertical (line 57) | Widget sliverPaddingVertical(double padding)
function sliverPaddingHorizontal (line 62) | Widget sliverPaddingHorizontal(double padding)
function toSliver (line 67) | Widget toSliver()
function fixWidth (line 71) | Widget fixWidth(double width)
function fixHeight (line 75) | Widget fixHeight(double height)
function to (line 93) | Future<T?> to<T>(Widget Function() builder)
function off (line 98) | void off(Widget Function() builder)
function pop (line 103) | void pop()
function showMessage (line 111) | void showMessage({required String message, Widget? icon, Widget? trailing})
function hideMessages (line 115) | void hideMessages()
function withHeight (line 160) | TextStyle withHeight(double value)
function withColor (line 162) | TextStyle withColor(Color? color)
FILE: lib/init.dart
function init (line 34) | Future<void> init()
function _checkOldData (line 95) | Future<void> _checkOldData()
function _checkAccountData (line 177) | Future<void> _checkAccountData()
FILE: lib/main.dart
function main (line 29) | void main(List<String> args)
class MyApp (line 68) | class MyApp extends StatefulWidget {
method createState (line 74) | State<MyApp> createState()
class _MyAppState (line 77) | class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
method hideContent (line 84) | void hideContent()
method showContent (line 95) | void showContent()
method didChangeAppLifecycleState (line 101) | void didChangeAppLifecycleState(AppLifecycleState state)
method initState (line 136) | void initState()
method didChangePlatformBrightness (line 157) | void didChangePlatformBrightness()
method _generateColorSchemes (line 161) | (ColorScheme, ColorScheme) _generateColorSchemes(
method build (line 175) | Widget build(BuildContext context)
method rebuild (line 178) | void rebuild(Element el)
class _SystemUiProvider (line 262) | class _SystemUiProvider extends StatelessWidget {
method build (line 268) | Widget build(BuildContext context)
FILE: lib/network/app_dio.dart
class MyLogInterceptor (line 12) | class MyLogInterceptor implements Interceptor {
method onError (line 14) | void onError(DioException err, ErrorInterceptorHandler handler)
method _getStatusCodeInfo (line 51) | String _getStatusCodeInfo(int? statusCode)
method onResponse (line 61) | void onResponse(
method onRequest (line 87) | void onRequest(RequestOptions options, RequestInterceptorHandler handler)
class AppHttpAdapter (line 95) | class AppHttpAdapter implements HttpClientAdapter{
method createAdapter (line 102) | Future<HttpClientAdapter> createAdapter(bool http2)
method close (line 114) | void close({bool force = false})
method changeHost (line 120) | bool changeHost(RequestOptions options)
method fetch (line 131) | Future<ResponseBody> fetch(RequestOptions o, Stream<Uint8List>? reques...
method fetchOnce (line 159) | Future<ResponseBody> fetchOnce(RequestOptions o, Stream<Uint8List>? re...
method checkCookie (line 201) | ResponseBody checkCookie(ResponseBody res)
function logDio (line 235) | Dio logDio([BaseOptions? options, bool http2 = false])
FILE: lib/network/base_comic.dart
class BaseComic (line 1) | abstract class BaseComic {
class CustomComic (line 19) | class CustomComic extends BaseComic {
FILE: lib/network/cache_network.dart
class CachedNetwork (line 12) | class CachedNetwork {
method get (line 13) | Future<CachedNetworkRes<String>> get(String url, BaseOptions options,
method delete (line 48) | void delete(String url)
type CacheExpiredTime (line 53) | enum CacheExpiredTime {
class CachedNetworkRes (line 65) | class CachedNetworkRes<T> {
FILE: lib/network/cloudflare.dart
class CloudflareException (line 12) | class CloudflareException implements DioException {
method toString (line 18) | String toString()
method fromString (line 22) | CloudflareException? fromString(String message)
method copyWith (line 29) | DioException copyWith(
class CloudflareInterceptor (line 58) | class CloudflareInterceptor extends Interceptor {
method onRequest (line 60) | void onRequest(RequestOptions options, RequestInterceptorHandler handler)
method onError (line 68) | void onError(DioException err, ErrorInterceptorHandler handler)
method onResponse (line 77) | void onResponse(Response response, ResponseInterceptorHandler handler)
method _check (line 88) | CloudflareException? _check(Response response)
function passCloudflare (line 96) | void passCloudflare(CloudflareException e, void Function() onFinished)
function saveCookies (line 100) | void saveCookies(Map<String, String> cookies)
FILE: lib/network/cookie_jar.dart
class CookieJarSql (line 7) | class CookieJarSql {
method init (line 16) | void init()
method saveFromResponse (line 32) | void saveFromResponse(Uri uri, List<Cookie> cookies)
method _loadWithDomain (line 56) | List<Cookie> _loadWithDomain(String domain)
method _getAcceptedDomains (line 78) | List<String> _getAcceptedDomains(String host)
method loadForRequest (line 87) | List<Cookie> loadForRequest(Uri uri)
method _checkPathMatch (line 112) | bool _checkPathMatch(Uri uri, String? cookiePath)
method saveFromResponseCookieHeader (line 132) | void saveFromResponseCookieHeader(Uri uri, List<String> cookieHeader)
method loadForRequestCookieHeader (line 139) | String loadForRequestCookieHeader(Uri uri)
method delete (line 156) | void delete(Uri uri, String name)
method deleteUri (line 166) | void deleteUri(Uri uri)
method deleteAll (line 176) | void deleteAll()
method dispose (line 182) | void dispose()
class SingleInstanceCookieJar (line 187) | class SingleInstanceCookieJar extends CookieJarSql {
class CookieManagerSql (line 196) | class CookieManagerSql extends Interceptor {
method onRequest (line 202) | void onRequest(RequestOptions options, RequestInterceptorHandler handler)
method onResponse (line 211) | void onResponse(Response response, ResponseInterceptorHandler handler)
method onError (line 218) | void onError(DioException err, ErrorInterceptorHandler handler)
FILE: lib/network/custom_download_model.dart
class CustomDownloadedItem (line 13) | class CustomDownloadedItem extends DownloadedItem {
method toJson (line 62) | Map<String, dynamic> toJson()
class CustomDownloadingItem (line 90) | class CustomDownloadingItem extends DownloadingItem {
method _getImage (line 108) | Stream<DownloadProgress> _getImage(String url)
method getOneEp (line 124) | Future<void> getOneEp(int i, Map<int, List<String>> links)
method getLinks (line 145) | Future<Map<int, List<String>>> getLinks()
method toMap (line 169) | Map<String, dynamic> toMap()
method toDownloadedItem (line 188) | Future<DownloadedItem> toDownloadedItem()
method downloadImage (line 214) | Stream<DownloadProgress> downloadImage(String link)
FILE: lib/network/download.dart
type DownloadingCallback (line 36) | typedef DownloadingCallback = void Function();
class DownloadManager (line 38) | class DownloadManager with _DownloadDb implements Listenable {
method addListener (line 69) | void addListener(VoidCallback listener)
method removeListener (line 74) | void removeListener(VoidCallback listener)
method notifyListeners (line 78) | void notifyListeners()
method _getPath (line 85) | Future<void> _getPath()
method updatePath (line 113) | Future<String> updatePath(String newPath, {bool transform = true})
method _getInfo (line 138) | Future<void> _getInfo()
method _initDb (line 159) | Future<void> _initDb()
method dispose (line 201) | void dispose()
method init (line 210) | Future<void> init()
method _saveInfo (line 219) | Future<void> _saveInfo()
method moveToFirst (line 231) | void moveToFirst(DownloadingItem item)
method generateId (line 241) | String generateId(String source, String id)
method _onFinish (line 251) | void _onFinish()
method pause (line 267) | void pause()
method _onError (line 273) | void _onError()
method start (line 281) | void start()
method cancel (line 289) | void cancel(String id)
method getComicOrNull (line 315) | Future<DownloadedItem?> getComicOrNull(String id)
method delete (line 320) | Future<void> delete(List<String> ids)
method deleteEpisode (line 337) | Future<String?> deleteEpisode(DownloadedItem comic, int ep)
method getEpLength (line 358) | Future<int> getEpLength(String id, int ep)
method getComicLength (line 365) | Future<int> getComicLength(String id)
method getImage (line 372) | File getImage(String id, int ep, int index)
method getImageAsync (line 388) | Future<File> getImageAsync(String id, int ep, int index)
method getCover (line 417) | File getCover(String id)
function downloadingItemFromMap (line 422) | DownloadingItem downloadingItemFromMap(
function addPicDownload (line 459) | void addPicDownload(ComicItem comic, List<int> downloadEps)
function addEhDownload (line 470) | void addEhDownload(Gallery gallery, [int type = 0])
function addJmDownload (line 482) | void addJmDownload(JmComicInfo comic, List<int> downloadEps)
function addHitomiDownload (line 493) | void addHitomiDownload(HitomiComic comic, String cover, String link)
function addHtDownload (line 505) | void addHtDownload(HtComicInfo comic)
function addNhentaiDownload (line 516) | void addNhentaiDownload(NhentaiComic comic)
function addCustomDownload (line 527) | void addCustomDownload(ComicInfoData comic, List<int> downloadEps)
function addFavoriteDownload (line 538) | void addFavoriteDownload(FavoriteItem comic)
function _getComicFromJson (line 558) | DownloadedItem? _getComicFromJson(String id, String json, DateTime time,...
class _DownloadDb (line 586) | abstract mixin class _DownloadDb {
method _createTable (line 589) | void _createTable()
method _addToDb (line 603) | void _addToDb(DownloadedItem item, String directory, [DateTime? time])
method isExists (line 618) | bool isExists(String id)
method _deleteFromDb (line 626) | void _deleteFromDb(String id)
method _getComicWithDb (line 633) | DownloadedItem? _getComicWithDb(String id)
method getAll (line 656) | List<DownloadedItem> getAll(
method getDirectory (line 676) | String getDirectory(String id)
method _findAccurateDirectory (line 693) | String _findAccurateDirectory(String directory)
FILE: lib/network/download_model.dart
class DownloadedItem (line 17) | abstract class DownloadedItem {
method toJson (line 45) | Map<String, dynamic> toJson()
type DownloadType (line 52) | enum DownloadType {
type DownloadProgressCallback (line 74) | typedef DownloadProgressCallback = void Function();
type DownloadProgressCallbackAsync (line 76) | typedef DownloadProgressCallbackAsync = Future<void> Function();
class DownloadingItem (line 78) | abstract class DownloadingItem with _TransferSpeedMixin {
method downloadCover (line 130) | Future<void> downloadCover()
method retry (line 146) | Future<void> retry()
method onStart (line 158) | FutureOr<void> onStart()
method _addDownloading (line 171) | void _addDownloading(String link, int ep, int index)
method _scheduleTasks (line 196) | void _scheduleTasks(int ep, int index)
method start (line 214) | void start()
method _stopAllTasks (line 270) | void _stopAllTasks()
method pause (line 284) | void pause()
method stop (line 293) | void stop()
method toBaseMap (line 315) | Map<String, dynamic> toBaseMap()
method toMap (line 339) | Map<String, dynamic> toMap()
method getLinks (line 370) | Future<Map<int, List<String>>> getLinks()
method downloadImage (line 379) | Stream<DownloadProgress> downloadImage(String link)
method toDownloadedItem (line 405) | FutureOr<DownloadedItem> toDownloadedItem()
method toString (line 408) | String toString()
class _ImageDownloadWrapper (line 413) | class _ImageDownloadWrapper {
method cancel (line 430) | void cancel()
method listen (line 452) | void listen()
method wait (line 489) | Future<_ImageDownloadWrapper> wait()
class _TransferSpeedMixin (line 499) | abstract mixin class _TransferSpeedMixin {
method onData (line 508) | void onData(int length)
method onNextSecond (line 513) | void onNextSecond(Timer t)
method runRecorder (line 519) | void runRecorder()
method stopRecorder (line 526) | void stopRecorder()
FILE: lib/network/eh_network/eh_download_model.dart
class DownloadedGallery (line 18) | class DownloadedGallery extends DownloadedItem{
method toJson (line 24) | Map<String, dynamic> toJson()
method _getTags (line 64) | List<String> _getTags()
class EhDownloadingItem (line 75) | class EhDownloadingItem extends DownloadingItem{
method getLinks (line 105) | Future<Map<int, List<String>>> getLinks()
method downloadImage (line 112) | Stream<DownloadProgress> downloadImage(String link)
method toMap (line 117) | Map<String, dynamic> toMap()
method onStart (line 127) | Future<void> onStart()
method finish (line 219) | void finish()
method toDownloadedItem (line 261) | FutureOr<DownloadedItem> toDownloadedItem()
class _IsolateDownloader (line 266) | class _IsolateDownloader{
method stop (line 284) | void stop()
method pause (line 290) | void pause()
method start (line 294) | void start()
method run (line 318) | void run(_DownloadData data)
class _DownloadData (line 370) | class _DownloadData{
class _DownloadException (line 380) | class _DownloadException{
FILE: lib/network/eh_network/eh_main_network.dart
class EhNetwork (line 26) | class EhNetwork {
method createEhNetwork (line 31) | EhNetwork createEhNetwork()
method getCookies (line 64) | Future<String> getCookies(bool setNW, [String? url])
method request (line 112) | Future<Res<String>> request(String url,
method apiRequest (line 171) | Future<Res<String>> apiRequest(
method post (line 205) | Future<Res<String>> post(
method getUserName (line 244) | Future<bool> getUserName()
method getStarsFromPosition (line 270) | double getStarsFromPosition(String position)
method getGalleries (line 304) | Future<Res<Galleries>> getGalleries(String url,
method getNextPageGalleries (line 482) | Future<bool> getNextPageGalleries(Galleries galleries)
method _parseComment (line 491) | Comment _parseComment(dom.Element e)
method getGalleryInfo (line 521) | Future<Res<Gallery>> getGalleryInfo(String link, [bool setNW = true])
method getComments (line 648) | Future<Res<List<Comment>>> getComments(String url)
method getReaderLink (line 669) | Future<Res<String>> getReaderLink(String gLink, int page)
method _getReaderLinks (line 685) | Future<Res<List<String>>> _getReaderLinks(String link, int page)
method getImageLinkWithNL (line 717) | Future<(String image, String? nl)> getImageLinkWithNL(
method getThumbnailUrls (line 734) | Future<Res<List<String>>> getThumbnailUrls(Gallery gallery)
method getLargeThumbnails (line 767) | Future<Res<List<String>>> getLargeThumbnails(Gallery gallery, int page)
method _splitKeyword (line 776) | List<String> _splitKeyword(String keyword)
method search (line 811) | Future<Res<Galleries>> search(String keyword,
method getLeaderBoardByPage (line 866) | Future<Res<List<EhGalleryBrief>>> getLeaderBoardByPage(
method getLeaderboard (line 879) | Future<Res<EhLeaderboard>> getLeaderboard(EhLeaderboardType type)
method getLeaderboardNextPage (line 888) | Future<void> getLeaderboardNextPage(EhLeaderboard leaderboard)
method rateGallery (line 903) | Future<bool> rateGallery(Map<String, String> auth, int rating)
method favorite (line 916) | Future<bool> favorite(String gid, String token, {String id = "0"})
method unfavorite (line 932) | Future<bool> unfavorite(String gid, String token)
method unfavorite2 (line 944) | Future<bool> unfavorite2(String gid)
method comment (line 956) | Future<Res<bool>> comment(String content, String link)
method getImageLimit (line 971) | Future<Res<EhImageLimit>> getImageLimit()
method resetImageLimit (line 1001) | Future<bool> resetImageLimit()
method getProfiles (line 1014) | Future<Res<Map<String, String>>> getProfiles()
method getArchiveDownloadInfo (line 1028) | Future<Res<ArchiveDownloadInfo>> getArchiveDownloadInfo(String url)
method cancelAndReloadArchiveInfo (line 1054) | Future<Res<ArchiveDownloadInfo>> cancelAndReloadArchiveInfo(ArchiveDow...
method getArchiveDownloadLink (line 1083) | Future<Res<String>> getArchiveDownloadLink(String apiUrl, int type)
method voteComment (line 1114) | Future<Res<int>> voteComment(Map<String, String> auth, String cid, boo...
FILE: lib/network/eh_network/eh_models.dart
class EhGalleryBrief (line 5) | class EhGalleryBrief extends BaseComic{
class Galleries (line 36) | class Galleries{
class Comment (line 43) | class Comment{
class Gallery (line 55) | class Gallery with HistoryMixin{
method _generateTags (line 76) | List<String> _generateTags()
method toBrief (line 86) | EhGalleryBrief toBrief()
method toJson (line 97) | Map<String, dynamic> toJson()
type EhLeaderboardType (line 163) | enum EhLeaderboardType{
class EhLeaderboard (line 189) | class EhLeaderboard{
class EhImageLimit (line 198) | class EhImageLimit{
class ArchiveDownloadInfo (line 208) | class ArchiveDownloadInfo{
FILE: lib/network/eh_network/get_gallery_id.dart
function getGalleryId (line 2) | String getGalleryId(String url)
FILE: lib/network/favorite_download.dart
class FavoriteDownloading (line 23) | class FavoriteDownloading extends DownloadingItem{
method start (line 32) | void start()
method onStart (line 38) | Future<void> onStart()
method getLinks (line 98) | Future<Map<int, List<String>>> getLinks()
method toMap (line 104) | Map<String, dynamic> toMap()
method toDownloadedItem (line 120) | FutureOr<DownloadedItem> toDownloadedItem()
method downloadImage (line 124) | Stream<DownloadProgress> downloadImage(String link)
FILE: lib/network/file_downloader.dart
class FileDownloader (line 8) | class FileDownloader{
method _writeStatus (line 35) | Future<void> _writeStatus()
method _readStatus (line 40) | Future<void> _readStatus()
method _prepareFile (line 51) | Future<void> _prepareFile()
method _createTasks (line 67) | Future<void> _createTasks()
method start (line 97) | Stream<DownloadingStatus> start()
method _reportStatus (line 104) | void _reportStatus(StreamController<DownloadingStatus> stream)
method _download (line 108) | void _download(StreamController<DownloadingStatus> resultStream)
method _scheduleDownload (line 162) | Future<void> _scheduleDownload()
method _fetchBlock (line 183) | Future<void> _fetchBlock(_DownloadBlock block)
method stop (line 239) | Future<void> stop()
class DownloadingStatus (line 246) | class DownloadingStatus{
method toString (line 260) | String toString()
class _DownloadBlock (line 265) | class _DownloadBlock{
method toString (line 274) | String toString()
FILE: lib/network/hitomi_network/fetch_data.dart
function fetchComicData (line 18) | Future<Res<List<int>>> fetchComicData(String url, int start, {int? maxLe...
FILE: lib/network/hitomi_network/hitomi_download_model.dart
class DownloadedHitomiComic (line 11) | class DownloadedHitomiComic extends DownloadedItem {
method toMap (line 19) | Map<String, dynamic> toMap()
method toBrief (line 50) | HitomiComicBrief toBrief()
method toJson (line 53) | Map<String, dynamic> toJson()
class HitomiDownloadingItem (line 62) | class HitomiDownloadingItem extends DownloadingItem {
method getLinks (line 90) | Future<Map<int, List<String>>> getLinks()
method downloadImage (line 98) | Stream<DownloadProgress> downloadImage(String link)
method toMap (line 106) | Map<String, dynamic> toMap()
method toDownloadedItem (line 125) | FutureOr<DownloadedItem> toDownloadedItem()
FILE: lib/network/hitomi_network/hitomi_main_network.dart
class HiNetwork (line 15) | class HiNetwork{
method get (line 25) | Future<Res<String>> get(String url, {CacheExpiredTime expiredTime=Cach...
method getComics (line 46) | Future<Res<ComicList>> getComics(String url)
method loadNextPage (line 56) | Future<Res<bool>> loadNextPage(ComicList comicList)
method getComicInfoBrief (line 69) | Future<Res<HitomiComicBrief>> getComicInfoBrief(String id)
method search (line 120) | Future<Res<List<int>>> search(String keyword)
method getComicInfo (line 137) | Future<Res<HitomiComic>> getComicInfo(String target)
type HitomiUrls (line 184) | enum HitomiUrls{
class HitomiDataUrls (line 195) | class HitomiDataUrls{
FILE: lib/network/hitomi_network/hitomi_models.dart
class Tag (line 4) | class Tag {
class HitomiComicBrief (line 11) | class HitomiComicBrief extends BaseComic {
class ComicList (line 52) | class ComicList {
class HitomiFile (line 67) | class HitomiFile {
method toMap (line 79) | Map<String, dynamic> toMap()
class HitomiComic (line 99) | class HitomiComic with HistoryMixin {
method toMap (line 132) | Map<String, dynamic> toMap()
method toBrief (line 157) | HitomiComicBrief toBrief(String link, String cover)
FILE: lib/network/hitomi_network/image.dart
class GG (line 11) | class GG{
method mm (line 14) | int mm(int g)
method s (line 22) | String s(String h)
method getGg (line 40) | Future<void> getGg(String galleryId)
method subdomainFromUrl (line 69) | String subdomainFromUrl(String url, String? base)
method fullPathFromHash (line 87) | String fullPathFromHash(String hash)
method realFullPathFromHash (line 91) | String realFullPathFromHash(String hash)
method urlFromUrl (line 99) | String urlFromUrl(String url, String? base)
method urlFromHash (line 103) | String urlFromHash(HitomiFile image, String? dir, String? ext)
method urlFromUrlFromHash (line 113) | Future<String> urlFromUrlFromHash(String galleryId, HitomiFile image, ...
FILE: lib/network/hitomi_network/search.dart
class HitomiSearch (line 12) | class HitomiSearch{
method search (line 26) | Future<Res<List<int>>> search()
method getTagIndexVersion (line 91) | Future<void> getTagIndexVersion()
method getGalleryIdsFromNozomi (line 101) | Future<List<int>> getGalleryIdsFromNozomi(String? area, String tag, St...
method getGalleryIdsForQuery (line 122) | Future<List<int>> getGalleryIdsForQuery(String query)
method hashTerm (line 157) | Uint8List hashTerm(String term)
method getNodeAtAddress (line 162) | Future<Node?> getNodeAtAddress(String field, int address)
method getUrlAtRange (line 173) | Future<Uint8List?> getUrlAtRange(String url, List<int> range)
method decodeNodeData (line 195) | Future<Node?> decodeNodeData(Uint8List data)
method bSearch (line 240) | Future<List<int>?> bSearch(String field, Uint8List key, Node? node)
method compareArrayBuffers (line 249) | int compareArrayBuffers(Uint8List a, Uint8List b)
method locateKey (line 261) | List<dynamic> locateKey(Uint8List key, Node node)
method isLeaf (line 273) | bool isLeaf(Node node)
method getGalleryIdsFromData (line 298) | Future<List<int>> getGalleryIdsFromData(List<int>? data)
class Node (line 334) | class Node{
FILE: lib/network/htmanga_network/ht_download_model.dart
class DownloadedHtComic (line 12) | class DownloadedHtComic extends DownloadedItem {
method toJson (line 41) | Map<String, dynamic> toJson()
class DownloadingHtComic (line 54) | class DownloadingHtComic extends DownloadingItem {
method _getCover (line 61) | String _getCover()
method getLinks (line 76) | Future<Map<int, List<String>>> getLinks()
method downloadImage (line 82) | Stream<DownloadProgress> downloadImage(String link)
method toMap (line 87) | Map<String, dynamic> toMap()
method toDownloadedItem (line 100) | FutureOr<DownloadedItem> toDownloadedItem()
FILE: lib/network/htmanga_network/htmanga_main_network.dart
class HtmangaNetwork (line 18) | class HtmangaNetwork {
method logout (line 28) | void logout()
method get (line 33) | Future<Res<String>> get(String url,
method post (line 63) | Future<Res<String>> post(String url, String data)
method login (line 86) | Future<Res<bool>> login(String account, String pwd, [bool saveData = t...
method loginFromAppdata (line 103) | Future<Res<bool>> loginFromAppdata()
method getHomePage (line 108) | Future<Res<HtHomePageData>> getHomePage()
method getComicList (line 163) | Future<Res<List<HtComicBrief>>> getComicList(String url, int page, {bo...
method search (line 240) | Future<Res<List<HtComicBrief>>> search(String keyword, int page)
method getComicInfo (line 255) | Future<Res<HtComicInfo>> getComicInfo(String id)
method getThumbnails (line 301) | Future<Res<List<String>>> getThumbnails(String id, int page)
method getImages (line 318) | Future<Res<List<String>>> getImages(String id)
method getFolders (line 339) | Future<Res<Map<String, String>>> getFolders()
method createFolder (line 360) | Future<bool> createFolder(String name)
method deleteFolder (line 365) | Future<bool> deleteFolder(String id)
method addFavorite (line 371) | Future<Res<bool>> addFavorite(String comicId, String folderId)
method delFavorite (line 380) | Future<Res<bool>> delFavorite(String favoriteId)
method getFavoriteFolderComics (line 393) | Future<Res<List<HtComicBrief>>> getFavoriteFolderComics(
FILE: lib/network/htmanga_network/models.dart
class HtHomePageData (line 5) | @immutable
class HtComicBrief (line 14) | @immutable
class HtComicInfo (line 44) | @immutable
method toBrief (line 61) | HtComicBrief toBrief()
method toJson (line 63) | Map<String, dynamic> toJson()
FILE: lib/network/http_client.dart
function getProxy (line 10) | Future<String?> getProxy()
function setNetworkProxy (line 62) | Future<void> setNetworkProxy()
function setProxy (line 80) | void setProxy(String? proxy)
class ProxyHttpOverrides (line 88) | class ProxyHttpOverrides extends HttpOverrides {
method createHttpClient (line 95) | HttpClient createHttpClient(SecurityContext? context)
FILE: lib/network/http_proxy.dart
class HttpProxyRequest (line 7) | class HttpProxyRequest {
class _HttpProxyHandler (line 18) | class _HttpProxyHandler {
method handle (line 23) | void handle(
method close (line 67) | void close()
method forward (line 76) | void forward(String host, int port)
type RequestHandler (line 96) | typedef RequestHandler = void Function(HttpProxyRequest request);
class HttpProxyServer (line 98) | class HttpProxyServer {
method run (line 107) | void run()
method close (line 117) | void close()
method startServer (line 123) | void startServer()
method reload (line 139) | void reload()
method createConfigFile (line 143) | void createConfigFile()
FILE: lib/network/jm_network/headers.dart
function getHeader (line 25) | BaseOptions getHeader(int time,
FILE: lib/network/jm_network/jm_download.dart
class DownloadedJmComic (line 14) | class DownloadedJmComic extends DownloadedItem {
method toMap (line 21) | Map<String, dynamic> toMap()
method toJson (line 69) | Map<String, dynamic> toJson()
class JmDownloadingItem (line 78) | class JmDownloadingItem extends DownloadingItem {
method getOneEp (line 94) | Future<void> getOneEp(int key, Map<int, List<String>> res)
method getLinks (line 113) | Future<Map<int, List<String>>> getLinks()
method downloadImage (line 133) | Stream<DownloadProgress> downloadImage(String link)
method toMap (line 151) | Map<String, dynamic> toMap()
method toDownloadedItem (line 168) | FutureOr<DownloadedItem> toDownloadedItem()
FILE: lib/network/jm_network/jm_image.dart
function getBaseUrl (line 12) | String getBaseUrl()
function getJmCoverUrl (line 16) | String getJmCoverUrl(String id)
function getJmImageUrl (line 20) | String getJmImageUrl(String imageName, String id)
function getJmAvatarUrl (line 24) | String getJmAvatarUrl(String imageName)
FILE: lib/network/jm_network/jm_models.dart
class HomePageData (line 5) | class HomePageData {
class HomePageItem (line 11) | class HomePageItem {
class JmComicBrief (line 20) | class JmComicBrief extends BaseComic {
class ComicCategoryInfo (line 49) | class ComicCategoryInfo {
class PromoteList (line 56) | class PromoteList {
class SearchRes (line 66) | class SearchRes {
class Category (line 76) | class Category {
class SubCategory (line 88) | class SubCategory {
class JmComicInfo (line 96) | class JmComicInfo with HistoryMixin {
method seriesToJsonMap (line 128) | Map<String, String> seriesToJsonMap(Map<int, String> map)
method jsonMapToSeries (line 136) | Map<int, String> jsonMapToSeries(Map<String, dynamic> map)
method toJson (line 144) | Map<String, dynamic> toJson()
method toBrief (line 176) | JmComicBrief toBrief()
class Comment (line 195) | class Comment {
FILE: lib/network/jm_network/jm_network.dart
function getJm (line 30) | Future<CachedNetworkRes<String>> getJm(
class JmNetwork (line 70) | class JmNetwork {
method convertData (line 98) | String convertData(String input, int time)
method init (line 123) | Future<void> init()
method get (line 128) | Future<Res<dynamic>> get(String url,
method post (line 182) | Future<Res<dynamic>> post(String url, String data)
method getHomePage (line 221) | Future<Res<HomePageData>> getHomePage()
method getPromoteList (line 268) | Future<Res<PromoteList>> getPromoteList(String id)
method loadMorePromoteListComics (line 308) | Future<void> loadMorePromoteListComics(PromoteList list)
method getLatest (line 350) | Future<Res<List<JmComicBrief>>> getLatest(int page)
method getHotTags (line 388) | Future<Res<bool>> getHotTags()
method searchNew (line 401) | Future<Res<List<JmComicBrief>>> searchNew(
method getCategories (line 464) | Future<Res<List<Category>>> getCategories()
method getCategoryComics (line 485) | Future<Res<List<JmComicBrief>>> getCategoryComics(
method getComicInfo (line 530) | Future<Res<JmComicInfo>> getComicInfo(String id)
method login (line 585) | Future<Res<bool>> login(String account, String pwd)
method loginFromAppdata (line 602) | Future<Res<bool>> loginFromAppdata()
method logout (line 607) | Future<void> logout()
method likeComic (line 611) | Future<void> likeComic(String id)
method createFolder (line 616) | Future<Res<bool>> createFolder(String name)
method getFolderComicsPage (line 626) | Future<Res<List<JmComicBrief>>> getFolderComicsPage(
method getFolders (line 670) | Future<Res<Map<String, String>>> getFolders()
method moveToFolder (line 689) | Future<Res<bool>> moveToFolder(String comicId, String folderId)
method favorite (line 700) | Future<Res<bool>> favorite(String id, String? folder)
method getChapter (line 729) | Future<Res<List<String>>> getChapter(String id)
method getScramble (line 749) | Future<String?> getScramble(String id)
method getComment (line 761) | Future<Res<List<Comment>>> getComment(String id, int page,
method parseContent (line 769) | String parseContent(String input)
method deleteFolder (line 796) | Future<Res<bool>> deleteFolder(String id)
method getWeekRecommendation (line 812) | Future<Res<Map<String, String>>> getWeekRecommendation()
method getWeekRecommendationComics (line 833) | Future<Res<List<JmComicBrief>>> getWeekRecommendationComics(
method comment (line 863) | Future<Res<dynamic>> comment(String aid, String content)
type ComicsOrder (line 875) | enum ComicsOrder {
type WeekRecommendationType (line 916) | enum WeekRecommendationType {
FILE: lib/network/net_fav_to_local.dart
type GetFavoriteFunc (line 16) | typedef GetFavoriteFunc<T extends Object> = Future<Res<List<T>>> Function(
type ComicToLocalFavoriteFunc (line 19) | typedef ComicToLocalFavoriteFunc<T extends Object> = FavoriteItem Functi...
function getFavorites (line 21) | Future<List<T>> getFavorites<T extends Object>(BuildContext context,
function load (line 25) | Stream<(int, int?)> load()
function startConvert (line 102) | void startConvert<T extends Object>(
function startFolderSync (line 132) | void startFolderSync<T extends Object>(
FILE: lib/network/nhentai_network/download.dart
class NhentaiDownloadedComic (line 12) | class NhentaiDownloadedComic extends DownloadedItem {
method toJson (line 46) | Map<String, dynamic> toJson()
class NhentaiDownloadingItem (line 63) | class NhentaiDownloadingItem extends DownloadingItem {
method getLinks (line 74) | Future<Map<int, List<String>>> getLinks()
method downloadImage (line 80) | Stream<DownloadProgress> downloadImage(String link)
method toMap (line 88) | Map<String, dynamic> toMap()
method toDownloadedItem (line 101) | FutureOr<DownloadedItem> toDownloadedItem()
FILE: lib/network/nhentai_network/login.dart
function nhLogin (line 11) | void nhLogin(void Function() onFinished)
FILE: lib/network/nhentai_network/models.dart
class NhentaiComicBrief (line 5) | @immutable
class NhentaiHomePageData (line 29) | class NhentaiHomePageData{
class NhentaiComic (line 37) | class NhentaiComic with HistoryMixin{
method toMap (line 54) | Map<String, dynamic> toMap()
class NhentaiComment (line 79) | class NhentaiComment{
FILE: lib/network/nhentai_network/nhentai_main_network.dart
class NhentaiNetwork (line 21) | class NhentaiNetwork {
method init (line 36) | Future<void> init()
method logout (line 56) | void logout()
method get (line 61) | Future<Res<String>> get(String url)
method post (line 78) | Future<Res<String>> post(String url, dynamic data,
method parseComic (line 91) | NhentaiComicBrief parseComic(Element comicDom)
method removeNullValue (line 113) | List<T> removeNullValue<T extends Object>(List<T?> list)
method getHomePage (line 118) | Future<Res<NhentaiHomePageData>> getHomePage([int? page])
method loadMoreHomePageData (line 151) | Future<Res<bool>> loadMoreHomePageData(NhentaiHomePageData data)
method search (line 173) | Future<Res<List<NhentaiComicBrief>>> search(String keyword, int page,
method getComicInfo (line 214) | Future<Res<NhentaiComic>> getComicInfo(String id)
method combineSpans (line 228) | String combineSpans(Element? title)
method getComments (line 299) | Future<Res<List<NhentaiComment>>> getComments(String id)
method getImages (line 321) | Future<Res<List<String>>> getImages(String id)
method parseJavaScriptJson (line 334) | Map<String, dynamic> parseJavaScriptJson(String jsCode)
method getFavorites (line 391) | Future<Res<List<NhentaiComicBrief>>> getFavorites(int page)
method favoriteComic (line 416) | Future<Res<bool>> favoriteComic(String id, String token)
method unfavoriteComic (line 429) | Future<Res<bool>> unfavoriteComic(String id, String token)
method getCategoryComics (line 442) | Future<Res<List<NhentaiComicBrief>>> getCategoryComics(
type NhentaiSort (line 485) | enum NhentaiSort {
FILE: lib/network/picacg_network/headers.dart
function createNonce (line 9) | String createNonce()
function createSignature (line 15) | String createSignature(String path, String nonce, String time, String me...
function getHeaders (line 26) | BaseOptions getHeaders(String method, String token, String url)
FILE: lib/network/picacg_network/methods.dart
class PicacgNetwork (line 20) | class PicacgNetwork {
method get (line 39) | Future<Res<Map<String, dynamic>>> get(String url,
method post (line 85) | Future<Res<Map<String, dynamic>>> post(
method login (line 145) | Future<Res<String>> login(String email, String password)
method loginFromAppdata (line 166) | Future<Res<bool>> loginFromAppdata()
method getProfile (line 176) | Future<Res<Profile>> getProfile([bool log = true])
method updateProfile (line 204) | Future<Res<bool>> updateProfile()
method getHotTags (line 218) | Future<Res<List<String>>> getHotTags()
method getCategories (line 233) | Future<Res<List<CategoryItem>>> getCategories()
method init (line 264) | Future<String?> init()
method search (line 278) | Future<Res<List<ComicItemBrief>>> search(
method getComicInfo (line 335) | Future<Res<ComicItem>> getComicInfo(String id)
method getEps (line 408) | Future<Res<List<String>>> getEps(String id)
method getComicContent (line 434) | Future<Res<List<String>>> getComicContent(String id, int order)
method loadMoreCommends (line 457) | Future<Res<bool>> loadMoreCommends(Comments c,
method getCommends (line 515) | Future<Comments> getCommends(String id, {String type = "comics"})
method getFavorites (line 522) | Future<Res<List<ComicItemBrief>>> getFavorites(
method getRandomComics (line 560) | Future<Res<List<ComicItemBrief>>> getRandomComics()
method likeOrUnlikeComic (line 592) | Future<bool> likeOrUnlikeComic(String id)
method favouriteOrUnfavouriteComic (line 601) | Future<bool> favouriteOrUnfavouriteComic(String id)
method getLeaderboard (line 613) | Future<Res<List<ComicItemBrief>>> getLeaderboard(String time)
method register (line 644) | Future<Res<String>> register(
method punchIn (line 680) | Future<bool> punchIn()
method uploadAvatar (line 690) | Future<bool> uploadAvatar(String imageData)
method changeSlogan (line 703) | Future<bool> changeSlogan(String slogan)
method getMoreReply (line 719) | Future<void> getMoreReply(Reply reply)
method getReply (line 773) | Future<Reply> getReply(String id)
method likeOrUnlikeComment (line 779) | Future<bool> likeOrUnlikeComment(String id)
method comment (line 784) | Future<bool> comment(String id, String text, bool isReply,
method getRecommendation (line 796) | Future<Res<List<ComicItemBrief>>> getRecommendation(String id)
method getCollection (line 828) | Future<Res<List<List<ComicItemBrief>>>> getCollection()
method getMoreGames (line 877) | Future<void> getMoreGames(Games games)
method getGames (line 899) | Future<Games> getGames()
method getGameInfo (line 905) | Future<Res<GameInfo>> getGameInfo(String id)
method likeGame (line 933) | Future<bool> likeGame(String id)
method changePassword (line 938) | Future<Res<bool>> changePassword(
method getCategoryComics (line 961) | Future<Res<List<ComicItemBrief>>> getCategoryComics(
method getLatest (line 1000) | Future<Res<List<ComicItemBrief>>> getLatest(int page)
function getImageUrl (line 1036) | String getImageUrl(String url)
FILE: lib/network/picacg_network/models.dart
class Profile (line 5) | class Profile {
method toJson (line 19) | Map<String,dynamic> toJson()
class CategoryItem (line 45) | class CategoryItem {
class InitData (line 51) | class InitData {
class ComicItemBrief (line 58) | class ComicItemBrief extends BaseComic{
class ComicItem (line 82) | class ComicItem with HistoryMixin{
method toBrief (line 122) | ComicItemBrief toBrief()
method toJson (line 126) | Map<String,dynamic> toJson()
class Comment (line 178) | class Comment {
method toString (line 193) | String toString()
class Comments (line 211) | class Comments {
class Favorites (line 220) | class Favorites {
class SearchResult (line 228) | class SearchResult{
class Reply (line 237) | class Reply{
class GameItemBrief (line 245) | class GameItemBrief{
class Games (line 254) | class Games{
class GameInfo (line 261) | class GameInfo{
FILE: lib/network/picacg_network/picacg_download_model.dart
class DownloadedComic (line 14) | class DownloadedComic extends DownloadedItem {
method toJson (line 24) | Map<String, dynamic> toJson()
class PicDownloadingItem (line 75) | class PicDownloadingItem extends DownloadingItem {
method getLinks (line 99) | Future<Map<int, List<String>>> getLinks()
method downloadImage (line 109) | Stream<DownloadProgress> downloadImage(String link)
method toMap (line 114) | Map<String, dynamic> toMap()
method toDownloadedItem (line 133) | FutureOr<DownloadedItem> toDownloadedItem()
FILE: lib/network/res.dart
class Res (line 3) | @immutable
method toString (line 30) | String toString()
FILE: lib/network/update.dart
function getLatestVersion (line 7) | Future<String> getLatestVersion()
function checkUpdate (line 15) | Future<bool?> checkUpdate()
function compareSemVer (line 25) | bool compareSemVer(String ver1, String ver2)
function getUpdatesInfo (line 63) | Future<String?> getUpdatesInfo()
function getDownloadUrl (line 74) | Future<String> getDownloadUrl()
FILE: lib/network/webdav.dart
function _retryZone (line 15) | Future<bool> _retryZone(Future<bool> Function() fn)
class Webdav (line 28) | class Webdav {
method uploadData (line 34) | Future<bool> uploadData([String? config])
method downloadData (line 95) | Future<bool> downloadData([String? config])
method syncData (line 151) | void syncData()
FILE: lib/pages/accounts_page.dart
class AccountsPageLogic (line 10) | class AccountsPageLogic extends StateController {
class AccountsPage (line 14) | class AccountsPage extends StatelessWidget {
method build (line 20) | Widget build(BuildContext context)
method buildContent (line 51) | Iterable<Widget> buildContent(BuildContext context)
method setClipboard (line 144) | void setClipboard(String text)
class _LoginPage (line 150) | class _LoginPage extends StatefulWidget {
method createState (line 158) | State<_LoginPage> createState()
class _LoginPageState (line 161) | class _LoginPageState extends State<_LoginPage> {
method build (line 167) | Widget build(BuildContext context)
method login (line 222) | void login()
FILE: lib/pages/auth_page.dart
class AuthPage (line 8) | class AuthPage extends StatefulWidget {
method createState (line 16) | State<AuthPage> createState()
class _AuthPageState (line 19) | class _AuthPageState extends State<AuthPage> with WidgetsBindingObserver {
method initState (line 21) | void initState()
method didChangeAppLifecycleState (line 31) | void didChangeAppLifecycleState(AppLifecycleState state)
method build (line 39) | Widget build(BuildContext context)
method auth (line 74) | void auth()
FILE: lib/pages/category_comics_page.dart
class CategoryComicsPage (line 9) | class CategoryComicsPage extends StatefulWidget {
method createState (line 24) | State<CategoryComicsPage> createState()
class _CategoryComicsPageState (line 27) | class _CategoryComicsPageState extends State<CategoryComicsPage> {
method findData (line 32) | void findData()
method initState (line 52) | void initState()
method build (line 58) | Widget build(BuildContext context)
method buildOptionItem (line 84) | Widget buildOptionItem(
method buildOptions (line 98) | Widget buildOptions()
class _CategoryComicsList (line 128) | class _CategoryComicsList extends ComicsPage<BaseComic> {
method getComics (line 154) | Future<Res<List<BaseComic>>> getComics(int i)
FILE: lib/pages/category_page.dart
class AllCategoryPage (line 12) | class AllCategoryPage extends StatelessWidget {
method build (line 16) | Widget build(BuildContext context)
type ClickTagCallback (line 63) | typedef ClickTagCallback = void Function(String, String?);
class CategoryPage (line 65) | class CategoryPage extends StatelessWidget {
method findComicSourceKey (line 72) | String findComicSourceKey()
method handleClick (line 81) | void handleClick(
method build (line 119) | Widget build(BuildContext context)
method buildTitle (line 187) | Widget buildTitle(String title)
method buildTitleWithRefresh (line 195) | Widget buildTitleWithRefresh(String title, void Function() onRefresh)
method buildTagsWithParams (line 214) | Widget buildTagsWithParams(
method buildTag (line 236) | Widget buildTag(String tag, ClickTagCallback onClick,
method translateTag (line 238) | String translateTag(String tag)
FILE: lib/pages/comic_page.dart
class ComicPage (line 33) | class ComicPage extends StatelessWidget {
method build (line 48) | Widget build(BuildContext context)
class _ComicPageImpl (line 61) | class _ComicPageImpl extends BaseComicPage<ComicInfoData> {
method download (line 77) | void download()
method loadData (line 155) | Future<Res<ComicInfoData>> loadData()
method loadFavorite (line 162) | Future<bool> loadFavorite(ComicInfoData data)
method read (line 170) | void read(History? history)
method recommendationBuilder (line 187) | Widget? recommendationBuilder(ComicInfoData data)
method tapOnTag (line 203) | void tapOnTag(String tag, String key)
method thumbnailImageBuilder (line 226) | Widget thumbnailImageBuilder(int index, String imageUrl)
method toLocalFavoriteItem (line 240) | FavoriteItem toLocalFavoriteItem()
method openFavoritePanel (line 257) | void openFavoritePanel()
class _CommentsPage (line 320) | class _CommentsPage extends StatefulWidget {
method createState (line 330) | State<_CommentsPage> createState()
class _CommentsPageState (line 333) | class _CommentsPageState extends State<_CommentsPage> {
method firstLoad (line 342) | void firstLoad()
method loadMore (line 359) | void loadMore()
method build (line 376) | Widget build(BuildContext context)
method buildBottom (line 462) | Widget buildBottom(BuildContext context)
class EpsData (line 549) | class EpsData {
class ThumbnailsData (line 560) | class ThumbnailsData {
method get (line 566) | Future<void> get(void Function() update)
class ComicPageLogic (line 583) | class ComicPageLogic<T extends Object> extends StateController {
method get (line 599) | void get(Future<Res<T>> Function() loadData,
method refresh_ (line 617) | void refresh_()
class BaseComicPage (line 632) | abstract class BaseComicPage<T extends Object> extends StatelessWidget {
method loadData (line 647) | Future<Res<T>> loadData()
method tapOnTag (line 668) | void tapOnTag(String tag, String key)
method read (line 670) | void read(History? history)
method download (line 672) | void download()
method openFavoritePanel (line 674) | void openFavoritePanel()
method recommendationBuilder (line 701) | Widget? recommendationBuilder(T data)
method update (line 705) | void update()
method loadFavorite (line 726) | Future<bool> loadFavorite(T data)
method onThumbnailTapped (line 735) | void onThumbnailTapped(int index)
method thumbnailImageBuilder (line 739) | Widget thumbnailImageBuilder(int index, String imageUrl)
method toLocalFavoriteItem (line 746) | FavoriteItem toLocalFavoriteItem()
method scrollListener (line 754) | void scrollListener()
method build (line 773) | Widget build(BuildContext context)
method buildLoading (line 824) | Widget buildLoading(BuildContext context)
method buildTitle (line 881) | Widget buildTitle(ComicPageLogic<T> logic)
method showMoreActions (line 895) | void showMoreActions()
method buildComicInfo (line 934) | Widget buildComicInfo(ComicPageLogic<T> logic, BuildContext context,
method buildCover (line 1013) | Widget buildCover(
method buildInfoCard (line 1053) | Widget buildInfoCard(String text, BuildContext context,
method buildPopMenus (line 1061) | List<PopupMenuEntry<dynamic>> buildPopMenus()
method label (line 1101) | Widget label(String text)
method buildActions (line 1160) | Widget buildActions(ComicPageLogic logic, BuildContext context, bool c...
method buildItem (line 1175) | Widget buildItem(String title, IconData icon, VoidCallback onTap,
method buildTags (line 1334) | Widget buildTags(ComicPageLogic logic, BuildContext context)
method buildInfoCards (line 1364) | Iterable<Widget> buildInfoCards(
method buildEpisodeInfo (line 1403) | Iterable<Widget> buildEpisodeInfo(BuildContext context)
method buildIntroduction (line 1507) | List<Widget> buildIntroduction(BuildContext context)
method _thumbnailImageBuilder (line 1542) | Widget _thumbnailImageBuilder(int index)
method buildThumbnails (line 1551) | List<Widget> buildThumbnails(BuildContext context)
method buildRecommendation (line 1640) | List<Widget> buildRecommendation(BuildContext context)
method favoriteComic (line 1668) | void favoriteComic(FavoriteComicWidget widget)
class FavoriteComicWidget (line 1682) | class FavoriteComicWidget extends StatefulWidget {
method createState (line 1734) | State<FavoriteComicWidget> createState()
class _FavoriteComicWidgetState (line 1737) | class _FavoriteComicWidgetState extends State<FavoriteComicWidget> {
method initState (line 1751) | void initState()
method build (line 1766) | Widget build(BuildContext context)
method buildFolder (line 1769) | Widget buildFolder(String name, String id, int p)
FILE: lib/pages/download_page.dart
function read (line 41) | void read({int? ep})
class DownloadPageLogic (line 146) | class DownloadPageLogic extends StateController {
method change (line 169) | void change()
method find (line 178) | void find()
method refresh (line 198) | void refresh()
method resetSelected (line 207) | void resetSelected(int length)
class DownloadPage (line 213) | class DownloadPage extends StatelessWidget {
method build (line 217) | Widget build(BuildContext context)
method buildComics (line 248) | Widget buildComics(BuildContext context, DownloadPageLogic logic)
method getComics (line 260) | Future<void> getComics(DownloadPageLogic logic)
method export (line 281) | Future<void> export(DownloadPageLogic logic)
method downloadFont (line 304) | void downloadFont()
method exportAsPdf (line 335) | void exportAsPdf(DownloadedItem? comic, DownloadPageLogic logic)
method buildItem (line 374) | Widget buildItem(BuildContext context, DownloadPageLogic logic, int in...
method toComicInfoPage (line 523) | void toComicInfoPage(DownloadedItem comic)
method showInfo (line 525) | void showInfo(int index, DownloadPageLogic logic, BuildContext context)
method buildFAB (line 539) | Widget buildFAB(BuildContext context, DownloadPageLogic logic)
method buildTitle (line 581) | Widget buildTitle(BuildContext context, DownloadPageLogic logic)
method buildAppbar (line 598) | Widget buildAppbar(BuildContext context, DownloadPageLogic logic)
method buildActions (line 623) | List<Widget> buildActions(BuildContext context, DownloadPageLogic logic)
method exportSelectedComic (line 776) | void exportSelectedComic(BuildContext context, DownloadPageLogic logic)
method addToLocalFavoriteFolder (line 819) | void addToLocalFavoriteFolder(BuildContext context, DownloadPageLogic ...
class DownloadedComicInfoView (line 921) | class DownloadedComicInfoView extends StatefulWidget {
method createState (line 928) | State<DownloadedComicInfoView> createState()
class _DownloadedComicInfoViewState (line 932) | class _DownloadedComicInfoViewState extends State<DownloadedComicInfoVie...
method build (line 950) | Widget build(BuildContext context)
method getInfo (line 1048) | void getInfo()
method read (line 1054) | void read()
method readSpecifiedEps (line 1058) | void readSpecifiedEps(int i)
class DownloadedComicTile (line 1063) | class DownloadedComicTile extends ComicTile {
method onTap_ (line 1088) | void onTap_()
method onLongTap_ (line 1097) | void onLongTap_()
method onSecondaryTap_ (line 1100) | void onSecondaryTap_(details)
function _toComicInfoPage (line 1118) | void _toComicInfoPage(DownloadedItem comic)
FILE: lib/pages/downloading_page.dart
class DownloadingPage (line 11) | class DownloadingPage extends StatefulWidget {
method createState (line 15) | State<DownloadingPage> createState()
class _DownloadingPageState (line 18) | class _DownloadingPageState extends State<DownloadingPage> {
method dispose (line 22) | void dispose()
method initState (line 28) | void initState()
method onChange (line 34) | void onChange()
method rebuild (line 44) | void rebuild()
method build (line 54) | Widget build(BuildContext context)
class _DownloadingTile (line 155) | class _DownloadingTile extends StatefulWidget {
method createState (line 170) | State<_DownloadingTile> createState()
class _DownloadingTileState (line 173) | class _DownloadingTileState extends State<_DownloadingTile> {
method didUpdateWidget (line 189) | void didUpdateWidget(covariant _DownloadingTile oldWidget)
method updateStatistic (line 198) | void updateStatistic()
method updateUi (line 214) | void updateUi()
method build (line 221) | Widget build(BuildContext context)
method _bytesToSize (line 296) | String _bytesToSize(int bytes)
method getProgressText (line 308) | String getProgressText()
FILE: lib/pages/ehentai/accounts.dart
class CookieManagementView (line 10) | class CookieManagementView extends StatefulWidget {
method createState (line 14) | State<CookieManagementView> createState()
class _CookieManagementViewState (line 17) | class _CookieManagementViewState extends State<CookieManagementView> {
method build (line 19) | Widget build(BuildContext context)
method setClipboard (line 80) | void setClipboard(String text)
FILE: lib/pages/ehentai/eh_comments_page.dart
class CommentsPageLogic (line 17) | class CommentsPageLogic extends StateController {
method change (line 24) | void change()
method get (line 29) | void get(String url)
class _EhCommentWidget (line 41) | class _EhCommentWidget extends StatefulWidget {
method createState (line 51) | State<_EhCommentWidget> createState()
class _EhCommentWidgetState (line 54) | class _EhCommentWidgetState extends State<_EhCommentWidget> {
method voteUp (line 63) | void voteUp()
method voteDown (line 86) | void voteDown()
method build (line 110) | Widget build(BuildContext context)
class CommentsPage (line 199) | class CommentsPage extends StatelessWidget {
method build (line 209) | Widget build(BuildContext context)
method buildBottom (line 258) | Widget buildBottom(BuildContext context, CommentsPageLogic logic)
function showComments (line 339) | void showComments(BuildContext context, String url, String uploader, Map...
class _EhComment (line 351) | class _EhComment extends StatelessWidget {
method build (line 357) | Widget build(BuildContext context)
method onLink (line 364) | void onLink(String link)
method _parse (line 373) | Iterable<Widget> _parse(String html)
method _mergeStyleByTagName (line 385) | TextStyle _mergeStyleByTagName(TextStyle style, String tagName)
method _buildLine (line 410) | Widget _buildLine(String htmlText)
method parse (line 418) | void parse(dom.Node node, TextStyle style,
class RichTextStyle (line 493) | class RichTextStyle {
FILE: lib/pages/ehentai/eh_gallery_page.dart
class EhGalleryPage (line 22) | class EhGalleryPage extends BaseComicPage<Gallery> {
method loadData (line 65) | Future<Res<Gallery>> loadData()
method loadFavorite (line 103) | Future<bool> loadFavorite(Gallery data)
method recommendationBuilder (line 109) | SliverGrid? recommendationBuilder(Gallery data)
method onThumbnailTapped (line 126) | void onThumbnailTapped(int index)
method tapOnTag (line 132) | void tapOnTag(String tag, String key)
method thumbnailImageBuilder (line 189) | Widget thumbnailImageBuilder(int index, String imageUrl)
method starRating (line 202) | void starRating(BuildContext context, Map<String, String> auth)
method toLocalFavoriteItem (line 313) | FavoriteItem toLocalFavoriteItem()
method download (line 317) | void download()
method load (line 328) | void load()
method startDownload (line 433) | void startDownload(int type)
method openFavoritePanel (line 450) | void openFavoritePanel()
method read (line 496) | void read(History? history)
class RatingLogic (line 517) | class RatingLogic extends StateController {
class CommentLogic (line 522) | class CommentLogic extends StateController {
class EhThumbnailLoader (line 527) | class EhThumbnailLoader extends StatefulWidget {
method createState (line 536) | State<EhThumbnailLoader> createState()
class _EhThumbnailLoaderState (line 539) | class _EhThumbnailLoaderState extends State<EhThumbnailLoader> {
method initState (line 545) | void initState()
method build (line 551) | Widget build(BuildContext context)
method _loadImage (line 571) | void _loadImage()
class _EhThumbnailPainter (line 590) | class _EhThumbnailPainter extends CustomPainter {
method paint (line 597) | void paint(Canvas canvas, Size size)
method shouldRepaint (line 613) | bool shouldRepaint(covariant _EhThumbnailPainter oldDelegate)
class RatingWidget (line 618) | class RatingWidget extends StatefulWidget {
method createState (line 651) | State<RatingWidget> createState()
class _RatingWidgetState (line 654) | class _RatingWidgetState extends State<RatingWidget> {
method build (line 658) | Widget build(BuildContext context)
method fullStars (line 713) | int fullStars()
method star (line 717) | double star()
method buildRow (line 725) | List<Widget> buildRow()
method buildNormalRow (line 750) | List<Widget> buildNormalRow()
method buildRowRating (line 767) | Widget buildRowRating()
method initState (line 781) | void initState()
class SMClipper (line 787) | class SMClipper extends CustomClipper<Rect> {
method getClip (line 793) | Rect getClip(Size size)
method shouldReclip (line 798) | bool shouldReclip(SMClipper oldClipper)
FILE: lib/pages/ehentai/eh_login_page.dart
class EhLoginPage (line 13) | class EhLoginPage extends StatefulWidget {
method createState (line 17) | State<EhLoginPage> createState()
class _EhLoginPageState (line 20) | class _EhLoginPageState extends State<EhLoginPage> {
method initState (line 29) | void initState()
method dispose (line 35) | void dispose()
method build (line 45) | Widget build(BuildContext context)
method _buildCookieParserButtonGroup (line 194) | Row _buildCookieParserButtonGroup(
method loginWithWebview (line 224) | void loginWithWebview()
method login (line 277) | void login(String id, String hash, String igneous, String star)
method loginWithCookies (line 286) | void loginWithCookies(Map<String, String> cookiesMap)
FILE: lib/pages/ehentai/eh_user_cookie_parser.dart
class EhUserCookieParser (line 10) | class EhUserCookieParser extends StatefulWidget {
method createState (line 16) | State<EhUserCookieParser> createState()
class _EhUserCookieParserState (line 19) | class _EhUserCookieParserState extends State<EhUserCookieParser>
method initState (line 28) | void initState()
method dispose (line 45) | void dispose()
method build (line 51) | Widget build(BuildContext context)
method show (line 78) | void show()
method hide (line 82) | void hide()
method parse (line 86) | Map<String, String> parse()
class EhUserCookieParserController (line 108) | class EhUserCookieParserController {
method setFunctions (line 116) | void setFunctions(
method show (line 123) | void show()
method hide (line 129) | void hide()
method parse (line 135) | Map<String, String> parse()
FILE: lib/pages/ehentai/subscription.dart
class SubscriptionPage (line 9) | class SubscriptionPage extends StatefulWidget {
method createState (line 13) | State<SubscriptionPage> createState()
class _SubscriptionPageState (line 16) | class _SubscriptionPageState extends State<SubscriptionPage> {
method build (line 18) | Widget build(BuildContext context)
class PageData (line 45) | class PageData{
class EhSubscriptionComics (line 51) | class EhSubscriptionComics extends ComicsPage<EhGalleryBrief>{
method getComics (line 57) | Future<Res<List<EhGalleryBrief>>> getComics(int i)
FILE: lib/pages/explore_page.dart
class ExplorePage (line 13) | class ExplorePage extends StatefulWidget {
method createState (line 17) | State<ExplorePage> createState()
class _ExplorePageState (line 20) | class _ExplorePageState extends State<ExplorePage>
method initState (line 31) | void initState()
method refresh (line 50) | void refresh()
method buildFAB (line 56) | Widget buildFAB()
method buildTab (line 65) | Tab buildTab(String i)
method buildBody (line 69) | Widget buildBody(String i)
method build (line 72) | Widget build(BuildContext context)
class _SingleExplorePage (line 149) | class _SingleExplorePage extends StatefulWidget {
method createState (line 155) | State<_SingleExplorePage> createState()
class _SingleExplorePageState (line 158) | class _SingleExplorePageState extends StateWithController<_SingleExplore...
method initState (line 172) | void initState()
method build (line 187) | Widget build(BuildContext context)
method buildComicList (line 212) | Widget buildComicList()
method load (line 215) | void load()
method buildMultiPart (line 229) | Widget buildMultiPart()
method buildPage (line 246) | Widget buildPage()
method _buildPage (line 252) | Iterable<Widget> _buildPage()
method refresh (line 262) | void refresh()
class _ComicList (line 279) | class _ComicList extends ComicsPage<BaseComic> {
method getComics (line 291) | Future<Res<List<BaseComic>>> getComics(int i)
class _MixedExplorePage (line 299) | class _MixedExplorePage extends StatefulWidget {
method createState (line 307) | State<_MixedExplorePage> createState()
class _MixedExplorePageState (line 310) | class _MixedExplorePageState
method buildSlivers (line 312) | Iterable<Widget> buildSlivers(BuildContext context, List<Object> data)
method buildContent (line 339) | Widget buildContent(BuildContext context, List<Object> data)
method loadData (line 349) | Future<Res<List<Object>>> loadData(int page)
function _buildExplorePagePart (line 363) | Iterable<Widget> _buildExplorePagePart(
function buildTitle (line 365) | Widget buildTitle(ExplorePagePart part)
function buildComics (line 416) | Widget buildComics(ExplorePagePart part)
FILE: lib/pages/favorites/local_favorites.dart
function addDownload (line 28) | void addDownload()
function updateInfo (line 40) | Future<bool> updateInfo(String folder)
class UpdateFavoritesInfoDialog (line 90) | class UpdateFavoritesInfoDialog extends StatefulWidget {
method show (line 98) | show(List<FavoriteItem> comics, String folder)
method createState (line 107) | State<UpdateFavoritesInfoDialog> createState()
class _UpdateFavoritesInfoDialogState (line 111) | class _UpdateFavoritesInfoDialogState extends State<UpdateFavoritesInfoD...
method load (line 118) | void load()
method initState (line 137) | void initState()
method dispose (line 143) | void dispose()
method build (line 149) | Widget build(BuildContext context)
class CreateFolderDialog (line 176) | class CreateFolderDialog extends StatelessWidget {
method build (line 180) | Widget build(BuildContext context)
class RenameFolderDialog (line 263) | class RenameFolderDialog extends StatelessWidget {
method build (line 269) | Widget build(BuildContext context)
class LocalFavoriteTile (line 315) | class LocalFavoriteTile extends ComicTile {
method showInfo (line 404) | void showInfo()
method _generateTags (line 419) | List<String> _generateTags(List<String> tags)
method onSecondaryTap_ (line 453) | void onSecondaryTap_(TapDownDetails details)
method onLongTap_ (line 516) | void onLongTap_()
method showMenu (line 524) | void showMenu()
method readComic (line 609) | void readComic()
method copyTo (line 776) | void copyTo()
method onTap_ (line 820) | void onTap_()
method editTags (line 839) | void editTags()
function copyAllTo (line 947) | void copyAllTo(String source, List<FavoriteItem> comics)
class LocalFavoritesFolder (line 995) | class LocalFavoritesFolder extends StatefulWidget {
method createState (line 1001) | State<LocalFavoritesFolder> createState()
class _LocalFavoritesFolderState (line 1004) | class _LocalFavoritesFolderState extends State<LocalFavoritesFolder> {
method lightenColor (line 1012) | Color lightenColor(Color color, double lightenValue)
method initState (line 1021) | void initState()
method dispose (line 1027) | void dispose()
method build (line 1036) | Widget build(BuildContext context)
function checkFolder (line 1090) | Future<void> checkFolder(String name)
function check (line 1096) | Stream<(int current, int total)> check()
FILE: lib/pages/favorites/local_search_page.dart
class LocalSearchPage (line 10) | class LocalSearchPage extends StatefulWidget {
method createState (line 15) | State<LocalSearchPage> createState()
class _LocalSearchPageState (line 18) | class _LocalSearchPageState extends StateWithController<LocalSearchPage> {
method search (line 27) | void search()
method initState (line 36) | void initState()
method build (line 42) | Widget build(BuildContext context)
FILE: lib/pages/favorites/main_favorites_page.dart
class FavoritesPageController (line 21) | class FavoritesPageController extends StateController {
method update (line 66) | void update([List<Object>? ids])
class FavoritesPage (line 76) | class FavoritesPage extends StatelessWidget with _LocalFavoritesManager {
method build (line 83) | Widget build(BuildContext context)
method buildPage (line 89) | Widget buildPage(BuildContext context)
method multiSelectedMenu (line 121) | void multiSelectedMenu()
method buildTopBar (line 176) | Widget buildTopBar(BuildContext context)
method buildFoldersList (line 294) | Widget buildFoldersList(BuildContext context, double height)
method buildTitle (line 315) | Widget buildTitle(String title)
method buildNetwork (line 324) | Widget buildNetwork()
method buildLocal (line 362) | Widget buildLocal()
method buildUtils (line 422) | Widget buildUtils(BuildContext context)
method buildItem (line 423) | Widget buildItem(String title, IconData icon, VoidCallback onTap)
method buildContent (line 472) | Widget buildContent(BuildContext context)
method _showMenu (line 510) | void _showMenu(String folder, Offset location)
method _showDesktopMenu (line 572) | void _showDesktopMenu(String folder, Offset location)
class _LocalFavoritesManager (line 617) | mixin class _LocalFavoritesManager {
method deleteFolder (line 618) | void deleteFolder(String folder)
method rename (line 631) | void rename(String folder)
method export (line 638) | void export(String folder)
method addDownload (line 655) | void addDownload(String folder)
class ComicsPageView (line 663) | class ComicsPageView extends StatefulWidget {
method createState (line 681) | State<ComicsPageView> createState()
class _ComicsPageViewState (line 684) | class _ComicsPageViewState extends StateWithController<ComicsPageView> {
method folderSync (line 691) | FolderSync? folderSync()
method initState (line 703) | void initState()
method dispose (line 725) | void dispose()
method build (line 731) | Widget build(BuildContext context)
method rebuild (line 735) | void rebuild()
method onRefresh (line 741) | Future<void> onRefresh(context)
method buildFolderComics (line 745) | Widget buildFolderComics(String folder)
method buildFAB (line 842) | Widget buildFAB()
method buildEmptyView (line 851) | Widget buildEmptyView()
class _FoldersReorderPage (line 892) | class _FoldersReorderPage extends StatefulWidget {
method createState (line 896) | State<_FoldersReorderPage> createState()
class _FoldersReorderPageState (line 899) | class _FoldersReorderPageState extends State<_FoldersReorderPage> {
method lightenColor (line 907) | Color lightenColor(Color color, double lightenValue)
method dispose (line 916) | void dispose()
method build (line 928) | Widget build(BuildContext context)
FILE: lib/pages/favorites/network_favorite_page.dart
class NetworkFavoritePage (line 9) | class NetworkFavoritePage extends StatelessWidget {
method build (line 15) | Widget build(BuildContext context)
class _NormalFavoritePage (line 22) | class _NormalFavoritePage extends ComicsPage<BaseComic> {
method getComics (line 28) | Future<Res<List<BaseComic>>> getComics(int i)
class _MultiFolderFavoritesPage (line 65) | class _MultiFolderFavoritesPage extends StatefulWidget {
method createState (line 71) | State<_MultiFolderFavoritesPage> createState()
class _MultiFolderFavoritesPageState (line 75) | class _MultiFolderFavoritesPageState extends State<_MultiFolderFavorites...
method loadPage (line 82) | void loadPage()
method openFolder (line 96) | void openFolder(String key, String title)
method build (line 101) | Widget build(BuildContext context)
class _FolderTile (line 192) | class _FolderTile extends StatelessWidget {
method build (line 208) | Widget build(BuildContext context)
method onDeleteFolder (line 256) | void onDeleteFolder(BuildContext context)
class _CreateFolderDialog (line 287) | class _CreateFolderDialog extends StatefulWidget {
method createState (line 295) | State<_CreateFolderDialog> createState()
class _CreateFolderDialogState (line 298) | class _CreateFolderDialogState extends State<_CreateFolderDialog> {
method build (line 303) | Widget build(BuildContext context)
class _FavoriteFolder (line 356) | class _FavoriteFolder extends ComicsPage<BaseComic> {
method getComics (line 367) | Future<Res<List<BaseComic>>> getComics(int i)
FILE: lib/pages/favorites/network_to_local.dart
class _ChooseNetworkFolderWidget (line 16) | class _ChooseNetworkFolderWidget extends StatefulWidget {
method createState (line 20) | State<_ChooseNetworkFolderWidget> createState()
class LoadComicClass (line 24) | class LoadComicClass {
method loadComic (line 27) | Future<Res<List<BaseComic>>> loadComic(
class _ChooseNetworkFolderWidgetState (line 62) | class _ChooseNetworkFolderWidgetState
method initState (line 77) | void initState()
method build (line 88) | Widget build(BuildContext context)
method buildItem (line 145) | ExpansionPanel buildItem(FavoriteData data)
method buildTile (line 157) | Widget buildTile(String key, String title)
method buildBody (line 169) | Widget buildBody(FavoriteData data)
method onConfirm (line 206) | void onConfirm()
function networkToLocal (line 233) | void networkToLocal()
class NetToLocalEhPageData (line 237) | class NetToLocalEhPageData {
FILE: lib/pages/history_page.dart
class HistoryPage (line 13) | class HistoryPage extends StatefulWidget {
method createState (line 17) | State<HistoryPage> createState()
class _HistoryPageState (line 20) | class _HistoryPageState extends State<HistoryPage> {
method dispose (line 28) | void dispose()
method buildTitle (line 35) | Widget buildTitle()
method find (line 60) | void find()
method build (line 75) | Widget build(BuildContext context)
method buildComics (line 136) | Widget buildComics(List<History> comics_)
function toComicPageWithHistory (line 203) | void toComicPageWithHistory(BuildContext context, History history)
FILE: lib/pages/hitomi/hitomi_comic_page.dart
class HitomiComicPage (line 21) | class HitomiComicPage extends BaseComicPage<HitomiComic> {
method openFavoritePanel (line 37) | void openFavoritePanel()
method download (line 62) | void download()
method loadData (line 71) | Future<Res<HitomiComic>> loadData()
method read (line 79) | void read(History? history)
method recommendationBuilder (line 91) | Widget? recommendationBuilder(HitomiComic data)
method tapOnTag (line 117) | void tapOnTag(String tag, String key)
method onThumbnailTapped (line 145) | void onThumbnailTapped(int index)
method loadFavorite (line 161) | Future<bool> loadFavorite(HitomiComic data)
method toLocalFavoriteItem (line 173) | FavoriteItem toLocalFavoriteItem()
function _downloadComic (line 183) | void _downloadComic(
FILE: lib/pages/hitomi/hitomi_home_page.dart
class HitomiHomePageLogic (line 9) | class HitomiHomePageLogic extends StateController {
method get (line 16) | void get(String url)
method loadNextPage (line 30) | void loadNextPage(String url)
method parseIds (line 44) | Future<bool> parseIds(ComicList comics)
method wait (line 46) | Future<bool> wait()
method refresh_ (line 71) | void refresh_()
class HitomiHomePageComics (line 80) | class HitomiHomePageComics extends StatelessWidget {
method build (line 87) | Widget build(BuildContext context)
class HitomiHomePage (line 125) | class HitomiHomePage extends StatefulWidget {
method createState (line 129) | State<HitomiHomePage> createState()
class _HitomiHomePageState (line 132) | class _HitomiHomePageState extends State<HitomiHomePage> {
method build (line 137) | Widget build(BuildContext context)
FILE: lib/pages/hitomi/hitomi_search.dart
class SearchPageComicList (line 12) | class SearchPageComicList extends StatefulWidget {
method createState (line 21) | State<SearchPageComicList> createState()
class _SearchPageComicListState (line 24) | class _SearchPageComicListState
method buildContent (line 27) | Widget buildContent(BuildContext context, List<int> data)
method loadData (line 43) | Future<Res<List<int>>> loadData()
class HitomiSearchPage (line 48) | class HitomiSearchPage extends StatefulWidget {
method createState (line 53) | State<HitomiSearchPage> createState()
class _HitomiSearchPageState (line 56) | class _HitomiSearchPageState extends State<HitomiSearchPage> {
method initState (line 61) | void initState()
method build (line 67) | Widget build(BuildContext context)
class _SliverAppBarDelegate (line 93) | class _SliverAppBarDelegate extends SliverPersistentHeaderDelegate {
method build (line 102) | Widget build(
method shouldRebuild (line 116) | bool shouldRebuild(SliverPersistentHeaderDelegate oldDelegate)
class HitomiComicTileDynamicLoading (line 122) | class HitomiComicTileDynamicLoading extends StatefulWidget {
method createState (line 131) | State<HitomiComicTileDynamicLoading> createState()
class _HitomiComicTileDynamicLoadingState (line 135) | class _HitomiComicTileDynamicLoadingState
method dispose (line 143) | void dispose()
method build (line 149) | Widget build(BuildContext context)
method buildPlaceHolder (line 176) | Widget buildPlaceHolder()
method buildLoadingWidget (line 180) | Widget buildLoadingWidget()
FILE: lib/pages/htmanga/ht_comic_page.dart
class HtComicPage (line 17) | class HtComicPage extends BaseComicPage<HtComicInfo> {
method openFavoritePanel (line 26) | void openFavoritePanel()
method download (line 49) | void download()
method onThumbnailTapped (line 66) | void onThumbnailTapped(int index)
method loadData (line 84) | Future<Res<HtComicInfo>> loadData()
method read (line 90) | void read(History? history)
method recommendationBuilder (line 102) | SliverGrid? recommendationBuilder(HtComicInfo data)
method tapOnTag (line 112) | void tapOnTag(String tag, String key)
method loadFavorite (line 166) | Future<bool> loadFavorite(HtComicInfo data)
method toLocalFavoriteItem (line 172) | FavoriteItem toLocalFavoriteItem()
class HtComicPageLogic (line 182) | class HtComicPageLogic extends StateController {
method get (line 190) | void get(String id)
method refresh_ (line 201) | void refresh_()
method getImages (line 208) | void getImages()
FILE: lib/pages/image_favorites.dart
class ImageFavoritesPage (line 20) | class ImageFavoritesPage extends StatefulWidget {
method createState (line 24) | State<ImageFavoritesPage> createState()
class _ImageFavoritesPageState (line 27) | class _ImageFavoritesPageState extends State<ImageFavoritesPage> {
method build (line 29) | Widget build(BuildContext context)
method buildPage (line 59) | Widget buildPage()
class FavoriteImageTile (line 72) | class FavoriteImageTile extends StatelessWidget {
method build (line 78) | Widget build(BuildContext context)
method onTap (line 146) | void onTap()
method _readWithKey (line 152) | void _readWithKey(String key, String target, int ep, int page, String ...
method onLongTap (line 223) | void onLongTap()
method delete (line 227) | void delete()
method onSecondaryTap (line 233) | void onSecondaryTap(TapDownDetails details)
class _ImageProvider (line 241) | class _ImageProvider extends BaseImageProvider<_ImageProvider> {
method load (line 250) | Future<Uint8List> load(StreamController<ImageChunkEvent> chunkEvents)
method obtainKey (line 294) | Future<_ImageProvider> obtainKey(ImageConfiguration configuration)
FILE: lib/pages/jm/jm_comic_page.dart
class JmComicPage (line 24) | class JmComicPage extends BaseComicPage<JmComicInfo> {
method openFavoritePanel (line 46) | void openFavoritePanel()
method download (line 102) | void download()
method _getEpName (line 104) | String _getEpName(int index)
method loadData (line 129) | Future<Res<JmComicInfo>> loadData()
method loadFavorite (line 135) | Future<bool> loadFavorite(JmComicInfo data)
method read (line 141) | void read(History? history)
method recommendationBuilder (line 153) | Widget recommendationBuilder(JmComicInfo data)
method tapOnTag (line 167) | void tapOnTag(String tag, String key)
method toLocalFavoriteItem (line 185) | FavoriteItem toLocalFavoriteItem()
function downloadComic (line 199) | void downloadComic(JmComicInfo comic, BuildContext context)
FILE: lib/pages/jm/jm_comments_page.dart
class JmCommentsPageLogic (line 9) | class JmCommentsPageLogic extends StateController {
method change (line 19) | void change()
method get (line 24) | void get(String id, [String? mode])
method retry (line 35) | void retry()
method loadMore (line 43) | void loadMore(String id)
method refresh_ (line 58) | void refresh_()
class JmCommentsPage (line 68) | class JmCommentsPage extends StatelessWidget {
method build (line 78) | Widget build(BuildContext context)
function showReply (line 197) | void showReply(BuildContext context, List<Comment> comments, Comment rep...
function showComments (line 225) | void showComments(BuildContext context, String id, int totalComments,
FILE: lib/pages/jm/week_recommendation_page.dart
class JWRPLogic (line 8) | class JWRPLogic extends StateController {
method change (line 15) | void change()
method get (line 20) | void get()
class JmWeekRecommendationPage (line 36) | class JmWeekRecommendationPage extends StatelessWidget {
method build (line 41) | Widget build(BuildContext context)
class WRLLogic (line 146) | class WRLLogic extends StateController {
method get (line 151) | void get(int index, String id)
method retry (line 163) | void retry(int index, String id)
class WeekRecommendationList (line 171) | class WeekRecommendationList extends StatelessWidget {
method build (line 176) | Widget build(BuildContext context)
method buildPage (line 206) | Widget buildPage(int index, WRLLogic logic, BuildContext context)
FILE: lib/pages/logs_page.dart
class LogsPage (line 7) | class LogsPage extends StatefulWidget {
method createState (line 11) | State<LogsPage> createState()
class _LogsPageState (line 14) | class _LogsPageState extends State<LogsPage> {
method build (line 16) | Widget build(BuildContext context)
FILE: lib/pages/main_page.dart
function checkClipboard (line 24) | void checkClipboard()
class MainPage (line 55) | class MainPage extends StatefulWidget {
method of (line 58) | MainPageState of(BuildContext context)
method createState (line 63) | State<MainPage> createState()
class MainPageState (line 66) | class MainPageState extends State<MainPage> {
method to (line 71) | void to(Widget Function() widget, {bool preventDuplicate = false})
method back (line 79) | void back()
method _login (line 92) | void _login()
method _checkUpdates (line 115) | void _checkUpdates()
method _checkDownload (line 162) | void _checkDownload()
method initState (line 190) | void initState()
method build (line 211) | Widget build(BuildContext context)
FILE: lib/pages/me_page.dart
class MePage (line 15) | class MePage extends StatelessWidget {
method build (line 19) | Widget build(BuildContext context)
method buildHistory (line 96) | Widget buildHistory(BuildContext context)
method buildAccount (line 161) | Widget buildAccount(double width)
method buildItem (line 164) | Widget buildItem(String name)
method buildDownload (line 192) | Widget buildDownload(BuildContext context, double width)
method buildImageFavorite (line 202) | Widget buildImageFavorite(BuildContext context, double width)
method buildTools (line 212) | Widget buildTools(double width)
method buildItem (line 213) | Widget buildItem(String name)
method findAccounts (line 245) | List<String> findAccounts()
class _MePageCard (line 256) | class _MePageCard extends StatelessWidget {
method build (line 272) | Widget build(BuildContext context)
FILE: lib/pages/nhentai/comic_page.dart
class NhentaiComicPage (line 19) | class NhentaiComicPage extends BaseComicPage<NhentaiComic> {
method openFavoritePanel (line 51) | void openFavoritePanel()
method download (line 107) | void download()
method loadData (line 133) | Future<Res<NhentaiComic>> loadData()
method read (line 142) | void read(History? history)
method onThumbnailTapped (line 148) | void onThumbnailTapped(int index)
method loadFavorite (line 160) | Future<bool> loadFavorite(NhentaiComic data)
method recommendationBuilder (line 166) | Widget? recommendationBuilder(NhentaiComic data)
method generateTags (line 172) | Map<String, List<String>> generateTags()
method tapOnTag (line 183) | void tapOnTag(String tag, String key)
method toLocalFavoriteItem (line 233) | FavoriteItem toLocalFavoriteItem()
FILE: lib/pages/nhentai/comments.dart
class NhentaiCommentsPage (line 7) | class NhentaiCommentsPage extends StatefulWidget {
method createState (line 13) | State<NhentaiCommentsPage> createState()
class _NhentaiCommentsPageState (line 16) | class _NhentaiCommentsPageState extends State<NhentaiCommentsPage> {
method build (line 23) | Widget build(BuildContext context)
method get (line 111) | void get()
function showComments (line 124) | void showComments(BuildContext context, String id)
FILE: lib/pages/picacg/collections_page.dart
class CollectionPageLogic (line 7) | class CollectionPageLogic extends StateController {
method change (line 14) | void change()
method get (line 19) | void get()
class CollectionsPage (line 33) | class CollectionsPage extends StatelessWidget {
method build (line 37) | Widget build(BuildContext context)
FILE: lib/pages/picacg/comic_page.dart
class PicacgComicPage (line 22) | class PicacgComicPage extends BaseComicPage<ComicItem> {
method openFavoritePanel (line 45) | void openFavoritePanel()
method download (line 92) | void download()
method loadData (line 112) | Future<Res<ComicItem>> loadData()
method read (line 118) | void read(History? history)
method recommendationBuilder (line 132) | Widget recommendationBuilder(data)
method tapOnTag (line 147) | void tapOnTag(String tag, String key)
method loadFavorite (line 180) | Future<bool> loadFavorite(ComicItem data)
method toLocalFavoriteItem (line 232) | FavoriteItem toLocalFavoriteItem()
class ComicPageLogic (line 248) | class ComicPageLogic extends StateController {
method change (line 265) | void change()
function _downloadComic (line 271) | void _downloadComic(
FILE: lib/pages/picacg/comments_page.dart
class CommentsPageLogic (line 8) | class CommentsPageLogic extends StateController {
method change (line 14) | void change()
class CommentsPage (line 20) | class CommentsPage extends StatelessWidget {
method build (line 30) | Widget build(BuildContext context)
function showComments (line 195) | void showComments(BuildContext context, String id)
class ReplyPageLogic (line 205) | class ReplyPageLogic extends StateController {
method change (line 211) | void change()
class ReplyPage (line 217) | class ReplyPage extends StatelessWidget {
method build (line 226) | Widget build(BuildContext context)
function showReply (line 418) | void showReply(BuildContext context, String id, Comment replyTo)
FILE: lib/pages/pre_search_page.dart
type FilterChip (line 16) | typedef FilterChip = FilterChipFixedWidth;
class _FloatingSearchBar (line 18) | class _FloatingSearchBar extends StatefulWidget {
method createState (line 35) | State<_FloatingSearchBar> createState()
class _FloatingSearchBarState (line 38) | class _FloatingSearchBarState extends State<_FloatingSearchBar> {
method build (line 40) | Widget build(BuildContext context)
class PreSearchController (line 113) | class PreSearchController extends StateController {
method updateOptions (line 127) | void updateOptions()
method updateTarget (line 139) | void updateTarget(String i)
class PreSearchPage (line 159) | class PreSearchPage extends StatelessWidget {
method search (line 172) | void search([String? s, String? type])
method findSuggestions (line 188) | void findSuggestions()
method check (line 209) | bool check(String text, String key, String value)
method find (line 224) | void find(Map<String, String> map, TranslationType type)
method build (line 248) | Widget build(BuildContext context)
method buildBody (line 284) | Widget buildBody(BuildContext context)
method buildMainView (line 302) | Widget buildMainView(BuildContext context, PreSearchController logic)
method buildSuggestions (line 352) | Widget buildSuggestions(BuildContext context)
method check (line 353) | bool check(String text, String key, String value)
method onSelected (line 370) | void onSelected(String text, TranslationType? type)
method buildItem (line 410) | Widget buildItem(Pair<String, TranslationType> value)
method buildTargetSelector (line 530) | Widget buildTargetSelector(BuildContext context)
method buildItem (line 531) | buildItem(PreSearchController logic, String id, String text)
method buildSearchOptions (line 562) | Widget buildSearchOptions(BuildContext context)
method buildLangSelector (line 563) | Widget buildLangSelector()
method buildHistoryItem (line 632) | Widget buildHistoryItem(String history, PreSearchController logic)
method buildFavoriteItem (line 677) | Widget buildFavoriteItem(String tag, PreSearchController logic)
method buildClearHistoryButton (line 723) | Widget buildClearHistoryButton(PreSearchController logic)
method buildClearFavoriteButton (line 751) | Widget buildClearFavoriteButton(PreSearchController logic)
method buildHistorySideBar (line 779) | Widget buildHistorySideBar()
method buildFavoriteSideBar (line 804) | Widget buildFavoriteSideBar()
method buildHistoryAndFavoritesForMobile (line 825) | Iterable<Widget> buildHistoryAndFavoritesForMobile(
FILE: lib/pages/ranking_page.dart
class RankingPage (line 9) | class RankingPage extends StatefulWidget {
method createState (line 15) | State<RankingPage> createState()
class _RankingPageState (line 18) | class _RankingPageState extends State<RankingPage> {
method findData (line 23) | void findData()
method initState (line 36) | void initState()
method build (line 42) | Widget build(BuildContext context)
method buildOptionItem (line 62) | Widget buildOptionItem(String text, String value, BuildContext context)
method buildOptions (line 75) | Widget buildOptions()
class _CustomCategoryComicsList (line 95) | class _CustomCategoryComicsList extends ComicsPage<BaseComic> {
method getComics (line 115) | Future<Res<List<BaseComic>>> getComics(int i)
FILE: lib/pages/reader/comic_reading_page.dart
class ComicReadingPage (line 66) | class ComicReadingPage extends StatelessWidget {
method build (line 200) | Widget build(BuildContext context)
method buildErrorView (line 368) | Widget buildErrorView(ComicReadingPageLogic logic, BuildContext context)
method loadInfo (line 464) | void loadInfo(ComicReadingPageLogic logic)
method buildEpsView (line 476) | Widget buildEpsView()
method openEpsDrawer (line 480) | void openEpsDrawer()
method selectImage (line 505) | Future<int?> selectImage()
method getImageKey (line 542) | String getImageKey(int index)
method _getFileFromStream (line 552) | Future<File> _getFileFromStream(Stream<DownloadProgress> stream)
method share (line 561) | void share()
method _persistentCurrentImage (line 577) | Future<String?> _persistentCurrentImage()
method saveCurrentImage (line 593) | void saveCurrentImage()
method buildEpChangeButton (line 609) | Widget? buildEpChangeButton(ComicReadingPageLogic logic)
FILE: lib/pages/reader/eps_view.dart
class EpsView (line 3) | class EpsView extends StatefulWidget {
method createState (line 8) | State<EpsView> createState()
class _EpsViewState (line 11) | class _EpsViewState extends State<EpsView> {
method build (line 17) | Widget build(BuildContext context)
FILE: lib/pages/reader/image.dart
class ComicImage (line 3) | class ComicImage extends StatefulWidget {
method clear (line 64) | void clear()
method createState (line 67) | State<ComicImage> createState()
class _ComicImageState (line 70) | class _ComicImageState extends State<ComicImage> with WidgetsBindingObse...
method clear (line 84) | clear()
method initState (line 87) | void initState()
method dispose (line 94) | void dispose()
method didChangeDependencies (line 105) | void didChangeDependencies()
method didUpdateWidget (line 119) | void didUpdateWidget(ComicImage oldWidget)
method didChangeAccessibilityFeatures (line 127) | void didChangeAccessibilityFeatures()
method reassemble (line 135) | void reassemble()
method _updateInvertColors (line 140) | void _updateInvertColors()
method _resolveImage (line 145) | void _resolveImage()
method _getListener (line 159) | ImageStreamListener _getListener({bool recreateListener = false})
method _handleImageFrame (line 175) | void _handleImageFrame(ImageInfo imageInfo, bool synchronousCall)
method _handleImageChunk (line 185) | void _handleImageChunk(ImageChunkEvent event)
method _replaceImage (line 192) | void _replaceImage({required ImageInfo? info})
method _updateSourceStream (line 201) | void _updateSourceStream(ImageStream newStream)
method _listenToStream (line 226) | void _listenToStream()
method _stopListeningToStream (line 245) | void _stopListeningToStream({bool keepStreamAlive = false})
method build (line 259) | Widget build(BuildContext context)
method debugFillProperties (line 386) | void debugFillProperties(DiagnosticPropertiesBuilder description)
FILE: lib/pages/reader/image_view.dart
function smoothTo (line 6) | void smoothTo(double value)
function buildComicView (line 27) | Widget buildComicView(
function buildType4 (line 30) | Widget buildType4()
function buildType123 (line 70) | Widget buildType123()
function getFit (line 90) | BoxFit getFit()
function buildComicImageOrEmpty (line 192) | Widget buildComicImageOrEmpty({
function buildType56 (line 210) | Widget buildType56()
function calcItemCount (line 211) | int calcItemCount()
function onPointerSignal (line 328) | void onPointerSignal(PointerSignalEvent pointerSignal)
function createImageProvider (line 394) | ImageProvider createImageProvider(
function updateLocation (line 401) | bool updateLocation(BuildContext context, PhotoViewController controller)
function precacheComicImage (line 438) | void precacheComicImage(ComicReadingPageLogic logic, BuildContext context,
FILE: lib/pages/reader/reading_data.dart
class ReadingData (line 3) | abstract class ReadingData {
method checkEpDownloaded (line 28) | bool checkEpDownloaded(int ep)
method loadEp (line 32) | Future<Res<List<String>>> loadEp(int ep)
method loadImage (line 52) | Stream<DownloadProgress> loadImage(int ep, int page, String url)
method createImageProvider (line 61) | ImageProvider createImageProvider(int ep, int page, String url)
method buildImageKey (line 69) | String buildImageKey(int ep, int page, String url)
method loadEpNetwork (line 71) | Future<Res<List<String>>> loadEpNetwork(int ep)
method loadImageNetwork (line 73) | Stream<DownloadProgress> loadImageNetwork(int ep, int page, String url)
class PicacgReadingData (line 76) | class PicacgReadingData extends ReadingData {
method loadEpNetwork (line 102) | Future<Res<List<String>>> loadEpNetwork(int ep)
method loadImageNetwork (line 107) | Stream<DownloadProgress> loadImageNetwork(int ep, int page, String url)
class EhReadingData (line 115) | class EhReadingData extends ReadingData {
method loadEpNetwork (line 133) | Future<Res<List<String>>> loadEpNetwork(int ep)
method loadImageNetwork (line 138) | Stream<DownloadProgress> loadImageNetwork(int ep, int page, String url)
method buildImageKey (line 152) | String buildImageKey(int ep, int page, String url)
class JmReadingData (line 158) | class JmReadingData extends ReadingData {
method generateMap (line 167) | Map<String, String> generateMap(List<String> epIds, List<String> epNames)
method loadEpNetwork (line 191) | Future<Res<List<String>>> loadEpNetwork(int ep)
method loadImageNetwork (line 198) | Stream<DownloadProgress> loadImageNetwork(int ep, int page, String url)
method buildImageKey (line 216) | String buildImageKey(int ep, int page, String url)
class HitomiReadingData (line 222) | class HitomiReadingData extends ReadingData {
method loadEpNetwork (line 254) | Future<Res<List<String>>> loadEpNetwork(int ep)
method loadImageNetwork (line 259) | Stream<DownloadProgress> loadImageNetwork(int ep, int page, String url)
method buildImageKey (line 264) | String buildImageKey(int ep, int page, String url)
class HtReadingData (line 270) | class HtReadingData extends ReadingData {
method loadEpNetwork (line 295) | Future<Res<List<String>>> loadEpNetwork(int ep)
method loadImageNetwork (line 300) | Stream<DownloadProgress> loadImageNetwork(int ep, int page, String url)
class NhentaiReadingData (line 308) | class NhentaiReadingData extends ReadingData {
method loadEpNetwork (line 333) | Future<Res<List<String>>> loadEpNetwork(int ep)
method loadImageNetwork (line 338) | Stream<DownloadProgress> loadImageNetwork(int ep, int page, String url)
class CustomReadingData (line 346) | class CustomReadingData extends ReadingData{
method loadEpNetwork (line 367) | Future<Res<List<String>>> loadEpNetwork(int ep)
method loadImageNetwork (line 379) | Stream<DownloadProgress> loadImageNetwork(int ep, int page, String url)
method buildImageKey (line 395) | String buildImageKey(int ep, int page, String url)
FILE: lib/pages/reader/reading_logic.dart
function animatedJumpToPage (line 4) | void animatedJumpToPage(int page)
function jumpByDeviceType (line 12) | void jumpByDeviceType(int page)
class ComicReadingPageLogic (line 21) | class ComicReadingPageLogic extends StateController {
method clearPhotoViewControllers (line 46) | void clearPhotoViewControllers()
method _getIndex (line 68) | int _getIndex(int initPage)
method _getPage (line 76) | int _getPage(int initPage)
method showFloatingButton (line 116) | void showFloatingButton(int value)
method addIndexChangeCallback (line 150) | void addIndexChangeCallback(void Function(int) callback)
method removeIndexChangeCallback (line 154) | void removeIndexChangeCallback(void Function(int) callback)
method reload (line 170) | void reload()
method change (line 177) | void change()
method jumpToNextPage (line 185) | void jumpToNextPage()
method jumpToLastPage (line 195) | void jumpToLastPage()
method jumpToPage (line 205) | void jumpToPage(int i, [bool updateWidget = false])
method jumpByDeviceType (line 223) | void jumpByDeviceType(int page)
method jumpToNextChapter (line 233) | void jumpToNextChapter()
method jumpToChapter (line 260) | void jumpToChapter(int index)
method jumpToLastChapter (line 271) | void jumpToLastChapter()
method autoPageTurning (line 301) | void autoPageTurning()
method refresh_ (line 318) | void refresh_()
method fullscreen (line 337) | void fullscreen()
method handleKeyboard (line 350) | void handleKeyboard(KeyEvent event)
FILE: lib/pages/reader/reading_settings.dart
function showSettings (line 3) | void showSettings(BuildContext context)
class ReadingSettings (line 22) | class ReadingSettings extends StatefulWidget {
method createState (line 26) | State<ReadingSettings> createState()
class _ReadingSettingsState (line 29) | class _ReadingSettingsState extends State<ReadingSettings> {
method build (line 39) | Widget build(BuildContext context)
method setValue (line 385) | void setValue(int i)
method buildReadingMethodSetting (line 399) | Widget buildReadingMethodSetting()
FILE: lib/pages/reader/reading_type.dart
type ReadingType (line 3) | typedef ReadingType = ComicType;
type ReadingMethod (line 5) | enum ReadingMethod {
FILE: lib/pages/reader/tool_bar.dart
function buildBottomToolBar (line 5) | Widget buildBottomToolBar(
function buildSlider (line 238) | Widget buildSlider(ComicReadingPageLogic logic)
function buildButtons (line 267) | Iterable<Widget> buildButtons(
function buildTopToolBar (line 330) | Widget buildTopToolBar(
function buildPageInfoText (line 411) | Widget buildPageInfoText(
FILE: lib/pages/reader/touch_control.dart
class ScrollManager (line 7) | class ScrollManager {
method tapDown (line 20) | void tapDown(PointerDownEvent details)
method tapUp (line 31) | void tapUp(PointerUpEvent details)
method addOffset (line 63) | void addOffset(Offset value)
class _TapDownPointer (line 90) | class _TapDownPointer{
method getDistance (line 94) | double getDistance()
class TapController (line 101) | class TapController {
method onTapCancel (line 116) | void onTapCancel(PointerCancelEvent event)
method onTapDown (line 120) | void onTapDown(PointerDownEvent event)
method handleSecondaryTapUp (line 180) | void handleSecondaryTapUp(PointerDownEvent detail)
method onTapUp (line 209) | void onTapUp(PointerUpEvent detail)
method onPointerMove (line 259) | void onPointerMove(PointerMoveEvent event)
method _handleClick (line 273) | void _handleClick(PointerUpEvent detail, ComicReadingPageLogic logic,
method updatePageWithSetting (line 279) | void updatePageWithSetting(bool next)
method _handleDoubleClick (line 339) | void _handleDoubleClick(Offset position)
method _handleLongPressStart (line 359) | void _handleLongPressStart(Offset position)
method _handleLongPressEnd (line 372) | void _handleLongPressEnd(PointerUpEvent event)
FILE: lib/pages/search_result_page.dart
class _SearchPageComicList (line 16) | class _SearchPageComicList extends ComicsPage<BaseComic> {
method getComics (line 36) | Future<Res<List<BaseComic>>> getComics(int i)
class SearchResultPage (line 48) | class SearchResultPage extends StatelessWidget {
method build (line 63) | Widget build(BuildContext context)
class _SearchResultPage (line 87) | class _SearchResultPage extends StatefulWidget {
method createState (line 101) | State<_SearchResultPage> createState()
class _SearchResultPageState (line 104) | class _SearchResultPageState extends State<_SearchResultPage> {
method initState (line 115) | void initState()
method dispose (line 128) | void dispose()
method onChanged (line 135) | void onChanged(String s)
method update (line 163) | void update()
method build (line 172) | Widget build(BuildContext context)
method more (line 257) | void more()
method changeSource (line 287) | void changeSource()
method showSearchOptions (line 346) | void showSearchOptions()
class _SliverAppBarDelegate (line 363) | class _SliverAppBarDelegate extends SliverPersistentHeaderDelegate {
method build (line 372) | Widget build(
method shouldRebuild (line 386) | bool shouldRebuild(SliverPersistentHeaderDelegate oldDelegate)
class _SuggestionsController (line 392) | class _SuggestionsController {
method updateWidget (line 399) | void updateWidget()
method remove (line 403) | void remove()
method findSuggestions (line 410) | void findSuggestions()
method check (line 416) | bool check(String text, String key, String value)
method find (line 431) | void find(Map<String, String> map, TranslationType type)
class _Suggestions (line 457) | class _Suggestions extends StatefulWidget {
method createState (line 463) | State<_Suggestions> createState()
class _SuggestionsState (line 466) | class _SuggestionsState extends State<_Suggestions> {
method update (line 467) | void update()
method initState (line 472) | void initState()
method didUpdateWidget (line 478) | void didUpdateWidget(covariant _Suggestions oldWidget)
method build (line 487) | Widget build(BuildContext context)
method buildSuggestions (line 491) | Widget buildSuggestions(BuildContext context)
method buildItem (line 495) | Widget buildItem(Pair<String, TranslationType> value)
method check (line 572) | bool check(String text, String key, String value)
method onSelected (line 587) | void onSelected(String text, TranslationType? type)
class _SearchOptions (line 609) | class _SearchOptions extends StatefulWidget {
method createState (line 623) | State<_SearchOptions> createState()
class _SearchOptionsState (line 626) | class _SearchOptionsState extends State<_SearchOptions> {
method initState (line 632) | void initState()
method build (line 643) | Widget build(BuildContext context)
method buildSearchOptions (line 659) | Widget buildSearchOptions(BuildContext context)
FILE: lib/pages/settings/app_settings.dart
function findUpdate (line 3) | void findUpdate(BuildContext context)
class ProxyController (line 44) | class ProxyController extends StateController {
function setProxy (line 50) | void setProxy(BuildContext context)
function setDownloadFolder (line 124) | void setDownloadFolder()
class SetDownloadFolderDialog (line 149) | class SetDownloadFolderDialog extends StatefulWidget {
method createState (line 157) | State<SetDownloadFolderDialog> createState()
class _SetDownloadFolderDialogState (line 161) | class _SetDownloadFolderDialogState extends State<SetDownloadFolderDialo...
method build (line 167) | Widget build(BuildContext context)
function setExplorePages (line 362) | void setExplorePages(BuildContext context)
class SetExplorePages (line 366) | class SetExplorePages extends StatefulWidget {
method createState (line 370) | State<SetExplorePages> createState()
class _SetExplorePagesState (line 373) | class _SetExplorePagesState extends State<SetExplorePages> {
method dispose (line 375) | void dispose()
method buildItem (line 383) | Widget buildItem(String i)
method buildNotShowPageSelector (line 410) | Widget buildNotShowPageSelector(String i, BuildContext context)
method build (line 429) | Widget build(BuildContext context)
function clearUserData (line 507) | void clearUserData(BuildContext context)
function exportDataSetting (line 527) | void exportDataSetting(BuildContext context)
function export (line 528) | void export(bool includeDownloads)
function importDataSetting (line 566) | void importDataSetting(BuildContext context)
function syncDataSettings (line 594) | void syncDataSettings(BuildContext context)
function setCacheLimit (line 724) | void setCacheLimit()
FILE: lib/pages/settings/blocking_keyword_page.dart
class BlockingKeywordPageLogic (line 3) | class BlockingKeywordPageLogic extends StateController {
class BlockingKeywordPage (line 9) | class BlockingKeywordPage extends StatelessWidget {
method build (line 17) | Widget build(BuildContext context)
FILE: lib/pages/settings/comic_source_settings.dart
class ComicSourceSettings (line 3) | class ComicSourceSettings extends StatefulWidget {
method createState (line 7) | State<ComicSourceSettings> createState()
method checkCustomComicSourceUpdate (line 9) | void checkCustomComicSourceUpdate([bool showLoading = false])
function withDivider (line 52) | Widget withDivider()
class _ComicSourceSettingsState (line 62) | class _ComicSourceSettingsState extends State<ComicSourceSettings> {
method build (line 66) | Widget build(BuildContext context)
method buildCustomSettings (line 89) | Widget buildCustomSettings()
method buildCustom (line 110) | Widget buildCustom(BuildContext context, ComicSource source)
method delete (line 149) | void delete(ComicSource source)
method edit (line 159) | void edit(ComicSource source)
method update (line 183) | void update(ComicSource source)
method buildCard (line 206) | Widget buildCard(BuildContext context)
method chooseFile (line 256) | void chooseFile()
method help (line 274) | void help()
method handleAddSource (line 279) | Future<void> handleAddSource(String url)
method addSource (line 301) | Future<void> addSource(String js, String fileName)
class _ComicSourceList (line 310) | class _ComicSourceList extends StatefulWidget {
method createState (line 316) | State<_ComicSourceList> createState()
class _ComicSourceListState (line 319) | class _ComicSourceListState extends State<_ComicSourceList> {
method load (line 323) | void load()
method build (line 338) | Widget build(BuildContext context)
method buildBody (line 350) | Widget buildBody()
class _BuiltInSources (line 385) | class _BuiltInSources extends StatefulWidget {
method createState (line 389) | State<_BuiltInSources> createState()
class _BuiltInSourcesState (line 392) | class _BuiltInSourcesState extends State<_BuiltInSources> {
method build (line 394) | Widget build(BuildContext context)
method buildTile (line 410) | Widget buildTile(int index)
function _validatePages (line 443) | void _validatePages()
function _addAllPagesWithComicSource (line 486) | void _addAllPagesWithComicSource(ComicSource source)
FILE: lib/pages/settings/components.dart
class SwitchSetting (line 3) | class SwitchSetting extends StatefulWidget {
method createState (line 20) | State<SwitchSetting> createState()
class _SwitchSettingState (line 23) | class _SwitchSettingState extends State<SwitchSetting> {
method build (line 25) | Widget build(BuildContext context)
class SettingsTitle (line 43) | class SettingsTitle extends StatelessWidget {
method build (line 49) | Widget build(BuildContext context)
class NewPageSetting (line 56) | class NewPageSetting extends StatelessWidget {
method build (line 70) | Widget build(BuildContext context)
class SelectSettingWithAppdata (line 80) | class SelectSettingWithAppdata extends StatelessWidget {
method build (line 101) | Widget build(BuildContext context)
class SelectSetting (line 116) | class SelectSetting extends StatelessWidget {
method build (line 137) | Widget build(BuildContext context)
class _SelectTile (line 165) | class _SelectTile extends StatefulWidget {
method createState (line 185) | State<_SelectTile> createState()
class _SelectTileState (line 188) | class _SelectTileState extends State<_SelectTile> {
method initState (line 192) | void initState()
method build (line 198) | Widget build(BuildContext context)
method showOptions (line 208) | void showOptions()
FILE: lib/pages/settings/eh_settings.dart
class EhSettings (line 3) | class EhSettings extends StatefulWidget {
method createState (line 8) | State<EhSettings> createState()
class _EhSettingsState (line 11) | class _EhSettingsState extends State<EhSettings> {
method build (line 13) | Widget build(BuildContext context)
class EhProfileSelectPage (line 88) | class EhProfileSelectPage extends StatefulWidget {
method createState (line 92) | State<EhProfileSelectPage> createState()
class _EhProfileSelectPageState (line 95) | class _EhProfileSelectPageState extends State<EhProfileSelectPage> {
method loadData (line 102) | void loadData()
method build (line 117) | Widget build(BuildContext context)
method buildBody (line 137) | Widget buildBody()
FILE: lib/pages/settings/explore_settings.dart
function buildExploreSettings (line 3) | Widget buildExploreSettings(BuildContext context, bool popUp)
function categoryPages (line 227) | Map<String, String> categoryPages()
function networkFavorites (line 235) | Map<String, String> networkFavorites()
FILE: lib/pages/settings/ht_settings.dart
class HtSettings (line 3) | class HtSettings extends StatefulWidget {
method createState (line 9) | State<HtSettings> createState()
class _HtSettingsState (line 12) | class _HtSettingsState extends State<HtSettings> {
method build (line 14) | Widget build(BuildContext context)
method changeDomain (line 29) | void changeDomain(BuildContext context)
method onFinished (line 32) | void onFinished()
FILE: lib/pages/settings/jm_settings.dart
class SetJmComicsOrderController (line 3) | class SetJmComicsOrderController extends StateController{
method set (line 8) | void set(String v)
class JmSettings (line 17) | class JmSettings extends StatefulWidget {
method createState (line 22) | State<JmSettings> createState()
class _JmSettingsState (line 25) | class _JmSettingsState extends State<JmSettings> {
method build (line 27) | Widget build(BuildContext context)
method changeDomain (line 72) | void changeDomain(BuildContext context)
method onFinished (line 75) | void onFinished()
FILE: lib/pages/settings/local_favorite_settings.dart
class LocalFavoritesSettings (line 3) | class LocalFavoritesSettings extends StatefulWidget {
method createState (line 7) | State<LocalFavoritesSettings> createState()
class _LocalFavoritesSettingsState (line 10) | class _LocalFavoritesSettingsState extends State<LocalFavoritesSettings> {
method build (line 12) | Widget build(BuildContext context)
FILE: lib/pages/settings/multi_pages_filter.dart
class MultiPagesFilter (line 3) | class MultiPagesFilter extends StatefulWidget {
method createState (line 15) | State<MultiPagesFilter> createState()
class _MultiPagesFilterState (line 18) | class _MultiPagesFilterState extends State<MultiPagesFilter> {
method initState (line 22) | void initState()
method build (line 33) | Widget build(BuildContext context)
method buildItem (line 82) | Widget buildItem(String key)
method showAddDialog (line 108) | void showAddDialog()
method updateSetting (line 136) | void updateSetting()
FILE: lib/pages/settings/network_setting.dart
class NetworkSettings (line 3) | class NetworkSettings extends StatefulWidget {
method createState (line 7) | State<NetworkSettings> createState()
class _NetworkSettingsState (line 10) | class _NetworkSettingsState extends State<NetworkSettings> {
method build (line 12) | Widget build(BuildContext context)
class EditRuleView (line 70) | class EditRuleView extends StatefulWidget {
method createState (line 74) | State<EditRuleView> createState()
class _EditRuleViewState (line 77) | class _EditRuleViewState extends State<EditRuleView> {
method initState (line 83) | void initState()
method dispose (line 90) | void dispose()
method build (line 96) | Widget build(BuildContext context)
FILE: lib/pages/settings/picacg_settings.dart
class PicacgSettings (line 3) | class PicacgSettings extends StatefulWidget {
method createState (line 8) | State<PicacgSettings> createState()
class _PicacgSettingsState (line 11) | class _PicacgSettingsState extends State<PicacgSettings> {
method build (line 19) | Widget build(BuildContext context)
FILE: lib/pages/settings/reading_settings.dart
class ReadingSettings (line 3) | class ReadingSettings extends StatefulWidget {
method createState (line 9) | State<ReadingSettings> createState()
class _ReadingSettingsState (line 12) | class _ReadingSettingsState extends State<ReadingSettings> {
method build (line 20) | Widget build(BuildContext context)
FILE: lib/pages/settings/settings_page.dart
class SettingsPage (line 55) | class SettingsPage extends StatefulWidget {
method open (line 56) | void open([int initialPage = -1])
method createState (line 65) | State<SettingsPage> createState()
class _SettingsPageState (line 68) | class _SettingsPageState extends State<SettingsPage> implements PopEntry{
method didChangeDependencies (line 95) | void didChangeDependencies()
method initState (line 106) | void initState()
method build (line 161) | Widget build(BuildContext context)
method buildBody (line 174) | Widget buildBody()
method handlePointerDown (line 234) | void handlePointerDown(PointerDownEvent event)
method buildLeft (line 240) | Widget buildLeft()
method buildCategories (line 280) | Widget buildCategories()
method buildItem (line 281) | Widget buildItem(String name, int id)
method buildReadingSettings (line 327) | Widget buildReadingSettings()
method buildAppearanceSettings (line 331) | Widget buildAppearanceSettings()
method buildAppSettings (line 426) | Widget buildAppSettings()
method buildAbout (line 582) | Widget buildAbout()
method buildRight (line 644) | Widget buildRight()
method onPopInvokedWithResult (line 690) | void onPopInvokedWithResult(bool didPop, result)
method onPopInvoked (line 699) | void onPopInvoked(bool didPop)
FILE: lib/pages/show_image_page.dart
class ShowImagePage (line 8) | class ShowImagePage extends StatelessWidget {
method build (line 14) | Widget build(BuildContext context)
class ShowImagePageWithHero (line 35) | class ShowImagePageWithHero extends StatelessWidget {
method build (line 43) | Widget build(BuildContext context)
FILE: lib/pages/tools.dart
function openTool (line 13) | void openTool()
function validateText (line 97) | validateText()
function onFinish (line 125) | onFinish()
FILE: lib/pages/webview.dart
function getCookies (line 19) | Future<Map<String, String>?> getCookies(String url)
function getUA (line 35) | Future<String?> getUA()
class AppWebview (line 46) | class AppWebview extends StatefulWidget {
method createState (line 61) | State<AppWebview> createState()
class _AppWebviewState (line 64) | class _AppWebviewState extends State<AppWebview> {
method build (line 72) | Widget build(BuildContext context)
class DesktopWebview (line 167) | class DesktopWebview {
method isAvailable (line 168) | Future<bool> isAvailable()
method onMessage (line 194) | void onMessage(String message)
method _runTimer (line 209) | void _runTimer()
method open (line 234) | void open()
method evaluateJavascript (line 256) | Future<String?> evaluateJavascript(String source)
method getCookies (line 260) | Future<Map<String, String>> getCookies(String url)
method _removeCode0 (line 271) | String _removeCode0(String s)
method _cookieMatch (line 277) | bool _cookieMatch(String url, String domain)
method _getAcceptedDomains (line 284) | List<String> _getAcceptedDomains(String host)
method close (line 293) | void close()
FILE: lib/pages/welcome_page.dart
class WelcomePage (line 13) | class WelcomePage extends StatefulWidget {
method createState (line 17) | State<WelcomePage> createState()
class _WelcomePageState (line 20) | class _WelcomePageState extends State<WelcomePage> {
method build (line 26) | Widget build(BuildContext context)
method next (line 64) | void next()
method back (line 69) | void back()
class _WelcomePageComponents (line 75) | mixin class _WelcomePageComponents {
method buildTitle (line 76) | Widget buildTitle(String title)
method buildBottom (line 80) | Widget buildBottom(BuildContext context, int page, [bool canNext = true])
method buildView (line 135) | Widget buildView({required List<Widget> children})
class _AppIcon (line 143) | class _AppIcon extends StatelessWidget with _WelcomePageComponents {
method build (line 147) | Widget build(BuildContext context)
class _AppInfo (line 170) | class _AppInfo extends StatefulWidget {
method createState (line 174) | State<_AppInfo> createState()
class _AppInfoState (line 177) | class _AppInfoState extends State<_AppInfo> with _WelcomePageComponents {
method build (line 181) | Widget build(BuildContext context)
method buildInfo (line 217) | String buildInfo()
class _AppAppearance (line 230) | class _AppAppearance extends StatefulWidget {
method createState (line 234) | State<_AppAppearance> createState()
class _AppAppearanceState (line 237) | class _AppAppearanceState extends State<_AppAppearance>
method build (line 240) | Widget build(BuildContext context)
class _ComicsDisplaySettings (line 294) | class _ComicsDisplaySettings extends StatefulWidget {
method createState (line 298) | State<_ComicsDisplaySettings> createState()
class _ComicsDisplaySettingsState (line 301) | class _ComicsDisplaySettingsState extends State<_ComicsDisplaySettings>
method build (line 304) | Widget build(BuildContext context)
class _ReadingSettings (line 340) | class _ReadingSettings extends StatelessWidget with _WelcomePageComponen...
method build (line 344) | Widget build(BuildContext context)
class _ComicSource (line 359) | class _ComicSource extends StatefulWidget {
method createState (line 363) | State<_ComicSource> createState()
class _ComicSourceState (line 366) | class _ComicSourceState extends State<_ComicSource>
method build (line 369) | Widget build(BuildContext context)
class _More (line 399) | class _More extends StatelessWidget with _WelcomePageComponents {
method build (line 403) | Widget build(BuildContext context)
FILE: lib/tools/app_links.dart
function canHandle (line 9) | bool canHandle(String text)
function handleAppLinks (line 20) | bool handleAppLinks(Uri uri, {bool showMessageWhenError = true})
FILE: lib/tools/background_service.dart
function onStart (line 11) | void onStart()
function runBackgroundService (line 39) | void runBackgroundService()
function cancelBackgroundService (line 49) | void cancelBackgroundService()
FILE: lib/tools/block_screenshot.dart
function blockScreenshot (line 3) | void blockScreenshot()
FILE: lib/tools/cache_auto_clear.dart
function _autoClearCache (line 6) | Future<void> _autoClearCache(String cachePath)
function startClearCache (line 31) | Future<void> startClearCache()
FILE: lib/tools/debug.dart
function debug (line 2) | void debug()
FILE: lib/tools/extensions.dart
function getNoBlankList (line 3) | List<T> getNoBlankList()
function firstWhereOrNull (line 13) | T? firstWhereOrNull(bool Function(T element) test)
function addIfNotNull (line 22) | void addIfNotNull(T? value)
function toList (line 34) | List<String> toList()
function _nums (line 36) | String _nums()
function setValueAt (line 46) | String setValueAt(String value, int index)
function subStringOrNull (line 50) | String? subStringOrNull(int start, [int? end])
function replaceLast (line 57) | String replaceLast(String from, String to)
function hasMatch (line 72) | bool hasMatch(String? value, String pattern)
function _isURL (line 76) | bool _isURL()
function _getTotalLength (line 89) | int _getTotalLength()
class ListOrNull (line 100) | class ListOrNull{
method from (line 101) | List<T>? from<T>(Iterable<dynamic>? i)
FILE: lib/tools/file_type.dart
class FileType (line 5) | class FileType {
function detectFileType (line 12) | FileType detectFileType(List<int> data)
FILE: lib/tools/io_extensions.dart
function deleteIgnoreError (line 22) | Future<void> deleteIgnoreError({bool recursive = false})
function getMBSizeSync (line 33) | double getMBSizeSync()
function getMBSizeSync (line 45) | double getMBSizeSync()
function renameX (line 67) | Directory renameX(String newName)
function sanitizeFileName (line 73) | String sanitizeFileName(String fileName)
function findValidDirectoryName (line 92) | String findValidDirectoryName(String path, String directory)
FILE: lib/tools/io_tools.dart
function getFolderSize (line 24) | Future<double> getFolderSize(Directory path)
function exportComic (line 34) | Future<bool> exportComic(String id, String name,
function exportComics (line 74) | Future<bool> exportComics(List<DownloadedItem> comics)
function exportPdf (line 116) | Future<bool> exportPdf(String pdfPath)
class ExportComicData (line 142) | class ExportComicData {
function runningExportComic (line 152) | Future<bool> runningExportComic(ExportComicData data)
function walk (line 159) | void walk(String path)
function runningExportComics (line 186) | Future<bool> runningExportComics(List<ExportComicData> datas)
function walk (line 198) | void walk(String path)
function eraseCache (line 226) | Future<void> eraseCache()
function copyDirectory (line 230) | Future<void> copyDirectory(Directory source, Directory destination)
function moveDirectory (line 253) | Future<void> moveDirectory(Directory source, Directory destination)
function checkDownloadPath (line 277) | Future<void> checkDownloadPath()
function _exportData (line 288) | Future<String?> _exportData(String path, String appdataString,
function walk (line 321) | void walk(String path)
function exportDataToFile (line 346) | Future<String> exportDataToFile(bool includeDownload, String outPath)
function runExportData (line 366) | Future<bool> runExportData(bool includeDownload)
function importData (line 403) | Future<bool> importData([String? filePath])
function saveLog (line 513) | void saveLog(String log)
function exportStringDataAsFile (line 529) | Future<void> exportStringDataAsFile(String data, String fileName)
function getDataFromUserSelectedFile (line 555) | Future<String?> getDataFromUserSelectedFile(List<String> extensions)
function bytesLengthToReadableSize (line 579) | String bytesLengthToReadableSize(int size)
FILE: lib/tools/js.dart
function getVariablesFromJsCode (line 2) | Map<String, String> getVariablesFromJsCode(String html)
FILE: lib/tools/keep_screen_on.dart
function setKeepScreenOn (line 5) | void setKeepScreenOn()
function cancelKeepScreenOn (line 11) | void cancelKeepScreenOn()
FILE: lib/tools/key_down_event.dart
class ListenVolumeController (line 5) | class ListenVolumeController{
method listenVolumeChange (line 13) | void listenVolumeChange()
method stop (line 24) | void stop()
FILE: lib/tools/mouse_listener.dart
function mouseSideButtonCallback (line 4) | void mouseSideButtonCallback()
function listenMouseSideButtonToBack (line 13) | void listenMouseSideButtonToBack()
FILE: lib/tools/notification.dart
class Notifications (line 6) | class Notifications {
method requestPermission (line 10) | Future<bool?> requestPermission()
method init (line 33) | Future<void> init()
method onDidReceiveNotificationResponse (line 49) | void onDidReceiveNotificationResponse(
method onDidReceiveLocalNotification (line 58) | void onDidReceiveLocalNotification(
method sendProgressNotification (line 65) | void sendProgressNotification(
method endProgress (line 89) | void endProgress()
method cancelAll (line 94) | void cancelAll()
method sendNotification (line 103) | void sendNotification(String title, String content)
method sendUnimportantNotification (line 120) | void sendUnimportantNotification(String title, String content)
FILE: lib/tools/pdf.dart
function createPdfFromComic (line 8) | Future<void> createPdfFromComic({
function reorderFiles (line 51) | void reorderFiles(List<FileSystemEntity> files)
function createPdfFromComicWithIsolate (line 111) | Future<void> createPdfFromComicWithIsolate({
function _loadFont (line 130) | Future<ByteData> _loadFont()
FILE: lib/tools/save_image.dart
function saveImage (line 14) | void saveImage(File file)
function persistentCurrentImage (line 44) | Future<String> persistentCurrentImage(File file)
function shareImage (line 53) | void shareImage(File file)
FILE: lib/tools/tags_translation.dart
function readData (line 21) | Future<void> readData()
function _haveNamespace (line 35) | bool _haveNamespace(String key)
function _translateTags (line 40) | String _translateTags(String tag)
function translationTagWithNamespace (line 59) | String translationTagWithNamespace(String text, String namespace)
function _categoryTextDynamic (line 80) | String _categoryTextDynamic(String c)
type TranslationType (line 179) | enum TranslationType{
class MultipleMap (line 184) | class MultipleMap<S, T>{
FILE: lib/tools/time.dart
function timeToString (line 4) | String timeToString(DateTime time)
function parseEhTime (line 28) | DateTime parseEhTime(String dateString)
FILE: lib/tools/translations.dart
function _translate (line 7) | String _translate()
function tlParams (line 20) | String tlParams(Map<String, String> values)
function init (line 30) | Future<void> init()
function _translate (line 38) | List<String> _translate()
FILE: linux/flutter/generated_plugin_registrant.cc
function fl_register_plugins (line 18) | void fl_register_plugins(FlPluginRegistry* registry) {
FILE: linux/main.cc
function main (line 3) | int main(int argc, char** argv) {
FILE: linux/my_application.cc
type _MyApplication (line 10) | struct _MyApplication {
function my_application_activate (line 18) | static void my_application_activate(GApplication* application) {
function gboolean (line 66) | static gboolean my_application_local_command_line(GApplication* applicat...
function my_application_startup (line 85) | static void my_application_startup(GApplication* application) {
function my_application_shutdown (line 94) | static void my_application_shutdown(GApplication* application) {
function my_application_dispose (line 103) | static void my_application_dispose(GObject* object) {
function my_application_class_init (line 109) | static void my_application_class_init(MyApplicationClass* klass) {
function my_application_init (line 117) | static void my_application_init(MyApplication* self) {}
function MyApplication (line 119) | MyApplication* my_application_new() {
FILE: test/widget_test.dart
function main (line 8) | void main()
FILE: utils/check_tr
Condensed preview — 308 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5,083K chars).
[
{
"path": ".github/ISSUE_TEMPLATE/bug.yaml",
"chars": 1280,
"preview": "name: 报告Bug/Report a bug\ndescription: 报告APP出现的问题/Reporting problems with the APP\ntitle: \"[Bug]: \"\nlabels: [\"bug🐞\"]\nbody:"
},
{
"path": ".github/ISSUE_TEMPLATE/enhancement.yaml",
"chars": 1042,
"preview": "name: 功能建议/Feature Request\ndescription: 提出改进APP的建议/Suggest improvements to the APP\ntitle: \"[Enhancement]: \"\nlabels: [\"en"
},
{
"path": ".github/ISSUE_TEMPLATE/other.yaml",
"chars": 785,
"preview": "name: 其它/other\ndescription: 其它内容/Other contents\nbody:\n - type: markdown\n attributes:\n value: |\n 如果你想报告Ap"
},
{
"path": ".github/workflows/delete_old_workflows.yml",
"chars": 2348,
"preview": "name: Delete old workflow runs\non:\n workflow_dispatch:\n inputs:\n days:\n description: 'Days-worth of runs"
},
{
"path": ".github/workflows/ios_simulator.yml",
"chars": 588,
"preview": "name: Build IOS SIMULATOR\nrun-name: Build IOS SIMULATOR\non:\n workflow_dispatch: {}\njobs:\n Build_IOS_SIMULATOR:\n run"
},
{
"path": ".github/workflows/linux.yml",
"chars": 964,
"preview": "name: Build Linux\nrun-name: Build Linux\non:\n workflow_dispatch: {}\njobs:\n Build_Linux:\n runs-on: ubuntu-latest\n "
},
{
"path": ".github/workflows/main.yml",
"chars": 1374,
"preview": "name: Build IOS\nrun-name: Build IOS\non:\n workflow_dispatch: {}\njobs:\n Build_IOS:\n runs-on: macos-13\n steps:\n "
},
{
"path": ".gitignore",
"chars": 709,
"preview": "# Miscellaneous\n*.class\n*.log\n*.pyc\n*.swp\n.DS_Store\n.atom/\n.buildlog/\n.history\n.svn/\nmigrate_working_dir/\n\n# IntelliJ re"
},
{
"path": ".metadata",
"chars": 1668,
"preview": "# This file tracks properties of this Flutter project.\n# Used by Flutter tool to assess capabilities and perform upgrade"
},
{
"path": "LICENSE",
"chars": 1061,
"preview": "MIT License\n\nCopyright (c) 2023 Nyne\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof th"
},
{
"path": "README.md",
"chars": 1937,
"preview": "Deprecated, use new project: [venera](https://github.com/venera-app/venera).\n\n# Pica Comic\n\n[."
},
{
"path": "android/gradle/wrapper/gradle-wrapper.properties",
"chars": 200,
"preview": "distributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_HOME\nzipStorePath=wrapper/dist"
},
{
"path": "android/gradle.properties",
"chars": 193,
"preview": "org.gradle.jvmargs=-Xmx1536M\nandroid.useAndroidX=true\nandroid.enableJetifier=true\nandroid.defaults.buildfeatures.buildco"
},
{
"path": "android/settings.gradle",
"chars": 789,
"preview": "pluginManagement {\n def flutterSdkPath = {\n def properties = new Properties()\n file(\"local.properties\")"
},
{
"path": "assets/init.js",
"chars": 13569,
"preview": "/// encode, decode, hash, decrypt\nlet Convert = {\n /**\n * @param {ArrayBuffer} value\n * @returns {string}\n "
},
{
"path": "assets/tags.json",
"chars": 1086562,
"preview": "{\n \"rows\": {\n \"female\": \"女性\",\n \"male\": \"男性\",\n \"mixed\": \"混合\",\n \"language\": \"语言\",\n \""
},
{
"path": "assets/tags_tw.json",
"chars": 1086558,
"preview": "{\n \"rows\": {\n \"female\": \"女性\",\n \"male\": \"男性\",\n \"mixed\": \"混合\",\n \"language\": \"語言\",\n \""
},
{
"path": "assets/translation.json",
"chars": 32328,
"preview": "{\n \"zh_CN\": {\n \"新到书\": \"新到旧\"\n },\n \"zh_TW\": {\n \"有可用更新\": \"有可用更新\",\n \"下载管理器\": \"下載管理器\",\n \"有未完成的下载, 是否继续?\": \"有未完"
},
{
"path": "debian/build.py",
"chars": 823,
"preview": "import subprocess\n\ndebianContent = ''\ndesktopContent = ''\nversion = ''\n\nwith open('debian/debian.yaml', 'r') as f:\n d"
},
{
"path": "debian/debian.yaml",
"chars": 347,
"preview": "flutter_app: \n command: pica_comic\n arch: x64\n parent: /usr/local/lib\n nonInteractive: true\n execFieldCodes: u\n\ncon"
},
{
"path": "debian/gui/pica-comic.desktop",
"chars": 173,
"preview": "[Desktop Entry]\nVersion={{Version}}\nName=PicaComic\nGenericName=PicaComic\nComment=pica comic\nTerminal=false\nType=Applicat"
},
{
"path": "doc/comic_source.md",
"chars": 7515,
"preview": "# 自定义漫画源\n\n## 简介\n\n自v3.0.0版本, app允许添加自定义漫画源, 自定义漫画源通过JS语言向APP提供配置, 使用QuickJS引擎\n\nv3.1.0版本对自定义漫画源功能进行了大幅改造\n\n## 编写自定义漫画源\n\n在[这"
},
{
"path": "doc/hosts.md",
"chars": 915,
"preview": "# 关于hosts的使用\n\n## 工作原理及存在的问题\n\n启用后, app会在本地启动一个代理服务器用于转发流量, 如果指定了域名对应的ip地址, 代理服务器将直接通过ip与目标服务器建立连接.\n\n使用这种方式可以解决Dart中无法手动校验"
},
{
"path": "ios/.gitignore",
"chars": 569,
"preview": "**/dgph\n*.mode1v3\n*.mode2v3\n*.moved-aside\n*.pbxuser\n*.perspectivev3\n**/*sync/\n.sconsign.dblite\n.tags*\n**/.vagrant/\n**/De"
},
{
"path": "ios/Flutter/AppFrameworkInfo.plist",
"chars": 774,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "ios/Flutter/Debug.xcconfig",
"chars": 30,
"preview": "#include \"Generated.xcconfig\"\n"
},
{
"path": "ios/Flutter/Release.xcconfig",
"chars": 30,
"preview": "#include \"Generated.xcconfig\"\n"
},
{
"path": "ios/Podfile",
"chars": 1415,
"preview": "# Uncomment this line to define a global platform for your project\nplatform :ios, '12.0'\n\n# CocoaPods analytics sends ne"
},
{
"path": "ios/Runner/AppDelegate.swift",
"chars": 2718,
"preview": "import UIKit\nimport Flutter\nimport flutter_local_notifications\n\n@UIApplicationMain\n@objc class AppDelegate: FlutterAppDe"
},
{
"path": "ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json",
"chars": 2630,
"preview": "{\n \"images\": [\n {\n \"filename\": \"AppIcon@2x.png\",\n \"idiom\": \"iphone\",\n \"scale\": \"2x\",\n \"size\": \"6"
},
{
"path": "ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json",
"chars": 391,
"preview": "{\n \"images\" : [\n {\n \"idiom\" : \"universal\",\n \"filename\" : \"LaunchImage.png\",\n \"scale\" : \"1x\"\n },\n "
},
{
"path": "ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md",
"chars": 336,
"preview": "# Launch Screen Assets\n\nYou can customize the launch screen with your own desired assets by replacing the image files in"
},
{
"path": "ios/Runner/Base.lproj/LaunchScreen.storyboard",
"chars": 2377,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard"
},
{
"path": "ios/Runner/Base.lproj/Main.storyboard",
"chars": 1605,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard"
},
{
"path": "ios/Runner/Info.plist",
"chars": 1990,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "ios/Runner/Runner-Bridging-Header.h",
"chars": 38,
"preview": "#import \"GeneratedPluginRegistrant.h\"\n"
},
{
"path": "ios/Runner.xcodeproj/project.pbxproj",
"chars": 18595,
"preview": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 54;\n\tobjects = {\n\n/* Begin PBXBuildFile section *"
},
{
"path": "ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
"chars": 135,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n version = \"1.0\">\n <FileRef\n location = \"self:\">\n </FileRef"
},
{
"path": "ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
"chars": 238,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
"chars": 226,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme",
"chars": 3185,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n LastUpgradeVersion = \"1300\"\n version = \"1.3\">\n <BuildAction\n "
},
{
"path": "ios/Runner.xcworkspace/contents.xcworkspacedata",
"chars": 152,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n version = \"1.0\">\n <FileRef\n location = \"group:Runner.xcodepr"
},
{
"path": "ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
"chars": 238,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings",
"chars": 226,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/P"
},
{
"path": "lib/base.dart",
"chars": 11845,
"preview": "import 'dart:convert';\nimport 'dart:io';\n\nimport 'package:pica_comic/foundation/app.dart';\nimport 'package:pica_comic/fo"
},
{
"path": "lib/comic_source/app_build_in_category.dart",
"chars": 6773,
"preview": "import 'package:pica_comic/network/nhentai_network/tags.dart';\nimport 'package:pica_comic/tools/tags_translation.dart';\n"
},
{
"path": "lib/comic_source/app_build_in_favorites.dart",
"chars": 2647,
"preview": "import 'package:pica_comic/base.dart';\nimport 'package:pica_comic/network/htmanga_network/htmanga_main_network.dart';\nim"
},
{
"path": "lib/comic_source/built_in/ehentai.dart",
"chars": 18264,
"preview": "import 'dart:collection';\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\nimport 'packa"
},
{
"path": "lib/comic_source/built_in/hitomi.dart",
"chars": 4175,
"preview": "import 'package:flutter/widgets.dart';\nimport 'package:pica_comic/comic_source/comic_source.dart';\nimport 'package:pica_"
},
{
"path": "lib/comic_source/built_in/ht_manga.dart",
"chars": 7068,
"preview": "import 'package:flutter/widgets.dart';\nimport 'package:pica_comic/components/components.dart';\nimport 'package:pica_comi"
},
{
"path": "lib/comic_source/built_in/jm.dart",
"chars": 8155,
"preview": "import 'dart:collection';\n\nimport 'package:flutter/widgets.dart';\nimport 'package:pica_comic/comic_source/comic_source.d"
},
{
"path": "lib/comic_source/built_in/nhentai.dart",
"chars": 6879,
"preview": "import 'dart:async';\nimport 'dart:collection';\n\nimport 'package:pica_comic/comic_source/comic_source.dart';\nimport 'pack"
},
{
"path": "lib/comic_source/built_in/picacg.dart",
"chars": 7939,
"preview": "import 'dart:collection';\n\nimport 'package:flutter/widgets.dart';\nimport 'package:pica_comic/base.dart';\nimport 'package"
},
{
"path": "lib/comic_source/category.dart",
"chars": 3270,
"preview": "part of comic_source;\n\nclass CategoryData {\n /// The title is displayed in the tab bar.\n final String title;\n\n /// 当使"
},
{
"path": "lib/comic_source/comic_source.dart",
"chars": 15531,
"preview": "library comic_source;\n\nimport 'dart:async';\nimport 'dart:collection';\nimport 'dart:convert';\nimport 'dart:io';\nimport 'd"
},
{
"path": "lib/comic_source/favorites.dart",
"chars": 1353,
"preview": "part of comic_source;\n\ntypedef AddOrDelFavFunc = Future<Res<bool>> Function(String comicId, String folderId, bool isAddi"
},
{
"path": "lib/comic_source/parser.dart",
"chars": 20136,
"preview": "part of comic_source;\n\nclass ComicSourceParseException implements Exception {\n final String message;\n\n ComicSourcePars"
},
{
"path": "lib/components/animated_image.dart",
"chars": 8946,
"preview": "part of 'components.dart';\n\nclass AnimatedImage extends StatefulWidget {\n /// show animation when loading is complete.\n"
},
{
"path": "lib/components/appbar.dart",
"chars": 16774,
"preview": "part of 'components.dart';\n\nclass Appbar extends StatefulWidget implements PreferredSizeWidget {\n const Appbar(\n {"
},
{
"path": "lib/components/avatar.dart",
"chars": 3324,
"preview": "part of 'components.dart';\n\nclass Avatar extends StatelessWidget {\n const Avatar(\n {Key? key,\n required this."
},
{
"path": "lib/components/button.dart",
"chars": 9679,
"preview": "part of 'components.dart';\n\nclass HoverBox extends StatefulWidget {\n const HoverBox(\n {super.key, required this.ch"
},
{
"path": "lib/components/comic_tile.dart",
"chars": 30689,
"preview": "part of 'components.dart';\n\nclass ComicTileMenuOption {\n final String title;\n final IconData icon;\n final void Functi"
},
{
"path": "lib/components/comics_list.dart",
"chars": 17745,
"preview": "part of 'components.dart';\n\nclass ComicsPageLogic<T> extends StateController {\n bool loading = true;\n\n ///用于正常模式下的漫画数据"
},
{
"path": "lib/components/comment.dart",
"chars": 5347,
"preview": "import 'package:flutter/material.dart';\n\nimport 'components.dart';\n\nclass CommentTile extends StatelessWidget {\n const "
},
{
"path": "lib/components/components.dart",
"chars": 1787,
"preview": "library components;\n\nimport 'dart:async';\nimport 'dart:collection';\nimport 'dart:math' as math;\nimport 'dart:ui';\n\nimpor"
},
{
"path": "lib/components/consts.dart",
"chars": 87,
"preview": "part of 'components.dart';\n\nconst _fastAnimationDuration = Duration(milliseconds: 160);"
},
{
"path": "lib/components/custom_slider.dart",
"chars": 7729,
"preview": "import 'package:flutter/material.dart';\n\n/// copied from flutter source\nclass _SliderDefaultsM3 extends SliderThemeData "
},
{
"path": "lib/components/flyout.dart",
"chars": 8480,
"preview": "part of \"components.dart\";\n\nconst minFlyoutWidth = 256.0;\nconst minFlyoutHeight = 128.0;\n\nclass FlyoutController {\n Fun"
},
{
"path": "lib/components/layout.dart",
"chars": 4627,
"preview": "part of 'components.dart';\n\nclass SliverGridViewWithFixedItemHeight extends StatelessWidget {\n const SliverGridViewWith"
},
{
"path": "lib/components/loading.dart",
"chars": 8845,
"preview": "part of 'components.dart';\n\nclass NetworkError extends StatelessWidget {\n const NetworkError({\n super.key,\n requi"
},
{
"path": "lib/components/menu.dart",
"chars": 3113,
"preview": "part of \"components.dart\";\n\nvoid showDesktopMenu(\n BuildContext context, Offset location, List<DesktopMenuEntry> entr"
},
{
"path": "lib/components/message.dart",
"chars": 6953,
"preview": "part of \"components.dart\";\n\nvoid hideAllMessages() {\n _OverlayWidgetState.removeAll();\n}\n\nvoid showToast({required Stri"
},
{
"path": "lib/components/navigation_bar.dart",
"chars": 18721,
"preview": "part of 'components.dart';\n\nclass PaneItemEntry {\n String label;\n\n IconData icon;\n\n IconData activeIcon;\n\n PaneItemE"
},
{
"path": "lib/components/pop_up_widget.dart",
"chars": 5487,
"preview": "part of 'components.dart';\n\nclass PopUpWidget<T> extends PopupRoute<T> {\n PopUpWidget(this.widget);\n\n final Widget wid"
},
{
"path": "lib/components/scroll.dart",
"chars": 2812,
"preview": "part of 'components.dart';\n\nclass SmoothCustomScrollView extends StatelessWidget {\n const SmoothCustomScrollView({super"
},
{
"path": "lib/components/scrollable_list/scrollable_positioned_list.dart",
"chars": 254,
"preview": "// Copyright 2019 The Fuchsia Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "lib/components/scrollable_list/src/element_registry.dart",
"chars": 3126,
"preview": "// Copyright 2019 The Fuchsia Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "lib/components/scrollable_list/src/item_positions_listener.dart",
"chars": 2148,
"preview": "// Copyright 2019 The Fuchsia Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "lib/components/scrollable_list/src/item_positions_notifier.dart",
"chars": 462,
"preview": "// Copyright 2019 The Fuchsia Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "lib/components/scrollable_list/src/positioned_list.dart",
"chars": 13829,
"preview": "// Copyright 2019 The Fuchsia Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "lib/components/scrollable_list/src/post_mount_callback.dart",
"chars": 1142,
"preview": "// Copyright 2019 The Fuchsia Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "lib/components/scrollable_list/src/scroll_view.dart",
"chars": 2392,
"preview": "// Copyright 2019 The Fuchsia Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "lib/components/scrollable_list/src/scrollable_positioned_list.dart",
"chars": 21603,
"preview": "// Copyright 2019 The Fuchsia Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "lib/components/scrollable_list/src/viewport.dart",
"chars": 10929,
"preview": "// Copyright 2019 The Fuchsia Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style licens"
},
{
"path": "lib/components/scrollable_list/src/wrapping.dart",
"chars": 38051,
"preview": "import 'dart:math' as math;\n\nimport 'package:flutter/rendering.dart';\nimport 'package:flutter/widgets.dart';\n\n/// A widg"
},
{
"path": "lib/components/select.dart",
"chars": 9007,
"preview": "part of 'components.dart';\n\nclass Select extends StatefulWidget {\n const Select({\n required this.initialValue,\n t"
},
{
"path": "lib/components/select_download_eps.dart",
"chars": 4820,
"preview": "import 'package:flutter/material.dart';\nimport 'package:pica_comic/tools/translations.dart';\n\nclass SelectDownloadChapte"
},
{
"path": "lib/components/side_bar.dart",
"chars": 6205,
"preview": "part of 'components.dart';\n\n///显示侧边栏的变换\n///\n/// 此组件会自动适应窗口大小:\n/// 大于600显示为右侧的侧边栏\n/// 小于600显示为从侧边划入的页面\nclass SideBarRoute"
},
{
"path": "lib/components/window_frame.dart",
"chars": 23251,
"preview": "import 'dart:async';\nimport 'dart:convert';\nimport 'dart:io';\n\nimport 'package:flutter/material.dart';\nimport 'package:p"
},
{
"path": "lib/foundation/app.dart",
"chars": 4438,
"preview": "import 'dart:io';\nimport 'dart:ui';\nimport 'package:flutter/material.dart';\nimport 'package:path_provider/path_provider."
},
{
"path": "lib/foundation/app_page_route.dart",
"chars": 9747,
"preview": "import 'dart:math';\nimport 'dart:ui';\nimport 'package:flutter/gestures.dart';\nimport 'package:flutter/material.dart';\nim"
},
{
"path": "lib/foundation/cache_manager.dart",
"chars": 7580,
"preview": "import 'dart:io';\n\nimport 'package:crypto/crypto.dart';\nimport 'package:flutter/foundation.dart';\nimport 'package:pica_c"
},
{
"path": "lib/foundation/def.dart",
"chars": 865,
"preview": "import 'package:flutter/material.dart';\n\ntypedef ActionFunc = void Function();\n\nenum ComicType {\n picacg,\n ehentai,\n "
},
{
"path": "lib/foundation/history.dart",
"chars": 10726,
"preview": "import 'dart:async';\nimport 'dart:collection';\nimport 'dart:convert';\nimport 'dart:io';\nimport 'package:pica_comic/comic"
},
{
"path": "lib/foundation/image_favorites.dart",
"chars": 1802,
"preview": "part of \"history.dart\";\n\n// 直接用history.db了, 没必要再加一个favorites.db\n\nclass ImageFavorite{\n /// unique id for the comic\n fi"
},
{
"path": "lib/foundation/image_loader/base_image_provider.dart",
"chars": 4127,
"preview": "import 'dart:async' show Future, StreamController, scheduleMicrotask;\nimport 'dart:collection';\nimport 'dart:convert';\ni"
},
{
"path": "lib/foundation/image_loader/cached_image.dart",
"chars": 1694,
"preview": "import 'dart:async' show Future, StreamController;\nimport 'package:flutter/foundation.dart';\nimport 'package:flutter/mat"
},
{
"path": "lib/foundation/image_loader/file_image_loader.dart",
"chars": 1735,
"preview": "import 'dart:async' show Future;\nimport 'dart:ui';\nimport 'package:flutter/foundation.dart';\nimport 'package:flutter/mat"
},
{
"path": "lib/foundation/image_loader/image_recombine.dart",
"chars": 6177,
"preview": "import 'dart:async';\nimport 'dart:convert';\nimport 'dart:io';\nimport 'dart:isolate';\nimport 'package:flutter/foundation."
},
{
"path": "lib/foundation/image_loader/stream_image_provider.dart",
"chars": 1450,
"preview": "import 'dart:async' show Future, StreamController;\nimport 'package:flutter/foundation.dart';\nimport 'package:flutter/mat"
},
{
"path": "lib/foundation/image_manager.dart",
"chars": 28460,
"preview": "import 'dart:convert';\nimport 'dart:io';\nimport 'dart:math';\n\nimport 'package:dio/dio.dart';\nimport 'package:flutter/fou"
},
{
"path": "lib/foundation/js_engine.dart",
"chars": 13383,
"preview": "import 'dart:convert';\nimport 'dart:math' as math;\n\nimport 'package:cookie_jar/cookie_jar.dart';\nimport 'package:crypto/"
},
{
"path": "lib/foundation/local_favorites.dart",
"chars": 29062,
"preview": "import 'dart:convert';\nimport 'package:collection/collection.dart';\nimport 'package:crypto/crypto.dart';\nimport 'package"
},
{
"path": "lib/foundation/log.dart",
"chars": 2831,
"preview": "import 'dart:io';\n\nimport 'package:flutter/foundation.dart';\nimport 'package:pica_comic/tools/extensions.dart';\n\nvoid lo"
},
{
"path": "lib/foundation/pair.dart",
"chars": 186,
"preview": "class Pair<M, V>{\n M left;\n V right;\n\n Pair(this.left, this.right);\n\n Pair.fromMap(Map<M, V> map, M key): left = key"
},
{
"path": "lib/foundation/stack.dart",
"chars": 356,
"preview": "import 'dart:collection';\n\nclass Stack<T>{\n final Queue<T> _values;\n\n Stack():_values = Queue();\n\n int get length => "
},
{
"path": "lib/foundation/state_controller.dart",
"chars": 5254,
"preview": "import 'package:flutter/material.dart';\nimport 'package:pica_comic/foundation/pair.dart';\n\nclass SimpleController extend"
},
{
"path": "lib/foundation/ui_mode.dart",
"chars": 379,
"preview": "import 'package:flutter/cupertino.dart';\nimport 'app.dart' as app;\n\nclass UiMode{\n static bool m1(BuildContext context)"
},
{
"path": "lib/foundation/widget_utils.dart",
"chars": 4473,
"preview": "import 'package:flutter/material.dart';\nimport 'package:pica_comic/components/components.dart';\nimport 'package:pica_com"
},
{
"path": "lib/init.dart",
"chars": 8076,
"preview": "import 'dart:io' as io;\n\nimport 'package:app_links/app_links.dart';\nimport 'package:cookie_jar/cookie_jar.dart';\nimport "
},
{
"path": "lib/main.dart",
"chars": 9088,
"preview": "import 'dart:async';\n\nimport 'package:desktop_webview_window/desktop_webview_window.dart';\nimport 'package:dynamic_color"
},
{
"path": "lib/network/app_dio.dart",
"chars": 8107,
"preview": "import 'dart:convert';\nimport 'dart:io';\nimport 'package:dio/dio.dart';\nimport 'package:dio/io.dart';\nimport 'package:fl"
},
{
"path": "lib/network/base_comic.dart",
"chars": 950,
"preview": "abstract class BaseComic {\n String get title;\n\n String get subTitle;\n\n String get cover;\n\n String get id;\n\n List<St"
},
{
"path": "lib/network/cache_network.dart",
"chars": 2111,
"preview": "import 'dart:convert';\nimport 'dart:io';\nimport 'dart:typed_data';\nimport 'package:crypto/crypto.dart';\nimport 'package:"
},
{
"path": "lib/network/cloudflare.dart",
"chars": 5036,
"preview": "import 'dart:io' as io;\n\nimport 'package:dio/dio.dart';\nimport 'package:pica_comic/base.dart';\nimport 'package:pica_comi"
},
{
"path": "lib/network/cookie_jar.dart",
"chars": 6072,
"preview": "import 'dart:io';\n\nimport 'package:dio/dio.dart';\nimport 'package:pica_comic/tools/extensions.dart';\nimport 'package:sql"
},
{
"path": "lib/network/custom_download_model.dart",
"chars": 5585,
"preview": "import 'dart:convert';\nimport 'dart:io';\nimport 'dart:typed_data';\n\nimport 'package:pica_comic/base.dart';\nimport 'packa"
},
{
"path": "lib/network/download.dart",
"chars": 19592,
"preview": "import 'dart:collection';\nimport 'dart:convert';\nimport 'dart:io';\n\nimport 'package:flutter/foundation.dart';\nimport 'pa"
},
{
"path": "lib/network/download_model.dart",
"chars": 12757,
"preview": "import 'dart:async';\nimport 'dart:io';\n\nimport 'package:dio/dio.dart';\nimport 'package:flutter/foundation.dart';\nimport "
},
{
"path": "lib/network/eh_network/eh_download_model.dart",
"chars": 9307,
"preview": "import 'dart:async';\nimport 'dart:isolate';\nimport 'package:pica_comic/base.dart';\nimport 'package:pica_comic/foundation"
},
{
"path": "lib/network/eh_network/eh_main_network.dart",
"chars": 38697,
"preview": "import 'dart:collection';\nimport 'dart:convert';\n\nimport 'package:cookie_jar/cookie_jar.dart';\nimport 'package:dio/dio.d"
},
{
"path": "lib/network/eh_network/eh_models.dart",
"chars": 4581,
"preview": "import 'package:pica_comic/base.dart';\nimport 'package:pica_comic/foundation/history.dart';\nimport 'package:pica_comic/n"
},
{
"path": "lib/network/eh_network/get_gallery_id.dart",
"chars": 222,
"preview": "///从画廊链接中获取画廊id\nString getGalleryId(String url){\n var i = url.indexOf(\"/g/\");\n i += 3;\n String res = \"\";\n while(i < "
},
{
"path": "lib/network/favorite_download.dart",
"chars": 4746,
"preview": "import 'dart:async';\nimport 'dart:typed_data';\n\nimport 'package:pica_comic/foundation/image_manager.dart';\nimport 'packa"
},
{
"path": "lib/network/file_downloader.dart",
"chars": 7408,
"preview": "import 'dart:async';\nimport 'dart:io';\n\nimport 'package:dio/dio.dart';\nimport 'package:pica_comic/network/http_client.da"
},
{
"path": "lib/network/hitomi_network/fetch_data.dart",
"chars": 1946,
"preview": "import 'dart:typed_data';\nimport 'package:pica_comic/foundation/def.dart';\nimport 'package:pica_comic/foundation/log.dar"
},
{
"path": "lib/network/hitomi_network/hitomi_download_model.dart",
"chars": 3275,
"preview": "import 'dart:async';\nimport 'dart:convert';\nimport 'dart:typed_data';\nimport 'package:pica_comic/network/download_model."
},
{
"path": "lib/network/hitomi_network/hitomi_main_network.dart",
"chars": 6960,
"preview": "import 'dart:convert';\nimport 'package:dio/dio.dart';\nimport 'package:html/parser.dart';\nimport 'package:pica_comic/netw"
},
{
"path": "lib/network/hitomi_network/hitomi_models.dart",
"chars": 3492,
"preview": "import 'package:pica_comic/foundation/history.dart';\nimport 'package:pica_comic/network/base_comic.dart';\n\nclass Tag {\n "
},
{
"path": "lib/network/hitomi_network/image.dart",
"chars": 3244,
"preview": "import 'package:pica_comic/foundation/def.dart';\n\nimport 'hitomi_models.dart';\nimport 'package:dio/dio.dart';\n\n///获取图像ur"
},
{
"path": "lib/network/hitomi_network/search.dart",
"chars": 9308,
"preview": "import 'dart:convert';\nimport 'dart:io';\nimport 'dart:math';\nimport 'dart:typed_data';\nimport 'package:crypto/crypto.dar"
},
{
"path": "lib/network/htmanga_network/ht_download_model.dart",
"chars": 2627,
"preview": "import 'dart:async';\nimport 'dart:convert';\nimport 'dart:io';\nimport 'dart:typed_data';\nimport 'package:pica_comic/netwo"
},
{
"path": "lib/network/htmanga_network/htmanga_main_network.dart",
"chars": 16036,
"preview": "import 'dart:convert';\nimport 'dart:math';\nimport 'package:dio/dio.dart';\nimport 'package:pica_comic/comic_source/built_"
},
{
"path": "lib/network/htmanga_network/models.dart",
"chars": 2374,
"preview": "import 'package:flutter/cupertino.dart';\nimport 'package:pica_comic/foundation/history.dart';\nimport 'package:pica_comic"
},
{
"path": "lib/network/http_client.dart",
"chars": 3150,
"preview": "import 'dart:convert';\nimport 'dart:io';\nimport 'package:flutter/services.dart';\nimport 'package:pica_comic/foundation/l"
},
{
"path": "lib/network/http_proxy.dart",
"chars": 4277,
"preview": "import 'dart:async';\nimport 'dart:convert';\nimport 'dart:io';\nimport 'dart:isolate';\nimport '../foundation/app.dart';\n\nc"
},
{
"path": "lib/network/jm_network/headers.dart",
"chars": 1332,
"preview": "import 'dart:convert';\nimport 'package:crypto/crypto.dart';\nimport 'package:dio/dio.dart';\nimport 'dart:math' as math;\ni"
},
{
"path": "lib/network/jm_network/jm_download.dart",
"chars": 4837,
"preview": "import 'dart:async';\nimport 'dart:convert';\nimport 'package:flutter/foundation.dart';\nimport 'package:pica_comic/base.da"
},
{
"path": "lib/network/jm_network/jm_image.dart",
"chars": 660,
"preview": "import 'package:pica_comic/base.dart';\n\nconst imageUrls = [\n \"https://cdn-msp.jmapiproxy3.cc\",\n \"https://cdn-msp3.jmap"
},
{
"path": "lib/network/jm_network/jm_models.dart",
"chars": 4041,
"preview": "import 'package:pica_comic/foundation/history.dart';\nimport 'package:pica_comic/network/base_comic.dart';\nimport 'packag"
},
{
"path": "lib/network/jm_network/jm_network.dart",
"chars": 29617,
"preview": "import 'dart:convert';\nimport 'dart:io';\nimport 'dart:typed_data';\n\nimport 'package:cookie_jar/cookie_jar.dart';\nimport "
},
{
"path": "lib/network/net_fav_to_local.dart",
"chars": 5854,
"preview": "import 'dart:convert';\nimport 'dart:math';\n\nimport 'package:flutter/foundation.dart';\nimport 'package:flutter/material.d"
},
{
"path": "lib/network/nhentai_network/download.dart",
"chars": 2642,
"preview": "import 'dart:async';\nimport 'dart:convert';\nimport 'dart:io';\nimport 'dart:typed_data';\nimport 'package:pica_comic/netwo"
},
{
"path": "lib/network/nhentai_network/login.dart",
"chars": 2840,
"preview": "import 'dart:io' as io;\n\nimport 'package:pica_comic/base.dart';\nimport 'package:pica_comic/components/components.dart';\n"
},
{
"path": "lib/network/nhentai_network/models.dart",
"chars": 1852,
"preview": "import 'package:flutter/cupertino.dart';\nimport 'package:pica_comic/foundation/history.dart';\nimport 'package:pica_comic"
},
{
"path": "lib/network/nhentai_network/nhentai_main_network.dart",
"chars": 15988,
"preview": "import 'dart:convert';\nimport 'package:dio/dio.dart';\nimport 'package:html/dom.dart';\nimport 'package:pica_comic/base.da"
},
{
"path": "lib/network/nhentai_network/tags.dart",
"chars": 17848,
"preview": "const Map<String, String> nhentaiTags = {\n \"2937\":\"big breasts\",\n \"35762\":\"sole female\",\n \"35763\":\"sole male\",\n \"801"
},
{
"path": "lib/network/picacg_network/headers.dart",
"chars": 1739,
"preview": "import 'package:dio/dio.dart';\nimport 'package:crypto/crypto.dart';\nimport 'package:pica_comic/comic_source/built_in/pic"
},
{
"path": "lib/network/picacg_network/methods.dart",
"chars": 35805,
"preview": "import 'package:dio/dio.dart';\nimport 'package:pica_comic/comic_source/built_in/picacg.dart';\nimport 'package:pica_comic"
},
{
"path": "lib/network/picacg_network/models.dart",
"chars": 5605,
"preview": "import \"package:pica_comic/base.dart\";\nimport \"package:pica_comic/foundation/history.dart\";\nimport \"package:pica_comic/n"
},
{
"path": "lib/network/picacg_network/picacg_download_model.dart",
"chars": 3864,
"preview": "import 'dart:async';\nimport 'dart:convert';\nimport 'package:flutter/foundation.dart';\nimport 'package:pica_comic/foundat"
},
{
"path": "lib/network/res.dart",
"chars": 931,
"preview": "import 'package:flutter/cupertino.dart';\n\n@immutable\nclass Res<T> {\n /// error info\n final String? errorMessage;\n\n St"
},
{
"path": "lib/network/update.dart",
"chars": 1760,
"preview": "import 'package:dio/dio.dart';\nimport 'package:pica_comic/base.dart';\nimport 'package:pica_comic/network/app_dio.dart';\n"
},
{
"path": "lib/network/webdav.dart",
"chars": 5553,
"preview": "import 'dart:math';\n\nimport 'package:flutter/material.dart';\nimport 'package:path_provider/path_provider.dart';\nimport '"
},
{
"path": "lib/pages/accounts_page.dart",
"chars": 7033,
"preview": "import 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\nimport 'package:pica_comic/comic_source/"
},
{
"path": "lib/pages/auth_page.dart",
"chars": 2330,
"preview": "import 'package:flutter/scheduler.dart';\nimport 'package:pica_comic/foundation/app.dart';\nimport 'package:flutter/materi"
},
{
"path": "lib/pages/category_comics_page.dart",
"chars": 4167,
"preview": "import \"package:flutter/material.dart\";\nimport \"package:pica_comic/comic_source/comic_source.dart\";\nimport 'package:pica"
},
{
"path": "lib/pages/category_page.dart",
"chars": 7737,
"preview": "import 'package:pica_comic/comic_source/comic_source.dart';\nimport 'package:pica_comic/components/components.dart';\nimpo"
},
{
"path": "lib/pages/comic_page.dart",
"chars": 61226,
"preview": "import 'dart:async';\n\nimport 'package:flutter/foundation.dart';\nimport 'package:flutter/material.dart';\nimport 'package:"
},
{
"path": "lib/pages/download_page.dart",
"chars": 38561,
"preview": "import 'package:dio/dio.dart';\nimport 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\nimport 'p"
},
{
"path": "lib/pages/downloading_page.dart",
"chars": 9598,
"preview": "import 'package:flutter/material.dart';\nimport 'package:pica_comic/base.dart';\nimport 'package:pica_comic/foundation/app"
},
{
"path": "lib/pages/ehentai/accounts.dart",
"chars": 2943,
"preview": "import 'dart:io';\n\nimport 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\nimport 'package:pica_"
},
{
"path": "lib/pages/ehentai/eh_comments_page.dart",
"chars": 16200,
"preview": "import 'package:flutter/gestures.dart';\nimport 'package:flutter/material.dart';\nimport 'package:html/dom.dart' as dom;\ni"
},
{
"path": "lib/pages/ehentai/eh_gallery_page.dart",
"chars": 23707,
"preview": "import 'package:pica_comic/comic_source/built_in/ehentai.dart';\nimport 'package:pica_comic/foundation/app.dart';\nimport "
},
{
"path": "lib/pages/ehentai/eh_login_page.dart",
"chars": 11161,
"preview": "import 'dart:io';\n\nimport 'package:flutter/material.dart';\nimport 'package:pica_comic/components/components.dart';\nimpor"
},
{
"path": "lib/pages/ehentai/eh_user_cookie_parser.dart",
"chars": 3539,
"preview": "import 'package:flutter/material.dart';\nimport 'package:pica_comic/components/components.dart';\nimport 'package:pica_com"
},
{
"path": "lib/pages/ehentai/subscription.dart",
"chars": 2695,
"preview": "import 'package:pica_comic/components/components.dart';\nimport 'package:pica_comic/foundation/app.dart';\nimport 'package"
},
{
"path": "lib/pages/explore_page.dart",
"chars": 11403,
"preview": "import 'package:flutter/material.dart';\nimport 'package:pica_comic/base.dart';\nimport 'package:pica_comic/comic_source/c"
},
{
"path": "lib/pages/favorites/local_favorites.dart",
"chars": 39118,
"preview": "import 'package:flutter_reorderable_grid_view/widgets/reorderable_builder.dart';\nimport 'package:pica_comic/base.dart';\n"
},
{
"path": "lib/pages/favorites/local_search_page.dart",
"chars": 4659,
"preview": "import 'package:flutter/material.dart';\nimport 'package:pica_comic/foundation/ui_mode.dart';\nimport 'package:pica_comic/"
},
{
"path": "lib/pages/favorites/main_favorites_page.dart",
"chars": 30159,
"preview": "import \"dart:async\";\n\nimport \"package:collection/collection.dart\";\nimport \"package:flutter/material.dart\";\nimport \"packa"
},
{
"path": "lib/pages/favorites/network_favorite_page.dart",
"chars": 10743,
"preview": "import 'package:flutter/material.dart';\nimport 'package:pica_comic/comic_source/comic_source.dart';\nimport 'package:pica"
},
{
"path": "lib/pages/favorites/network_to_local.dart",
"chars": 7074,
"preview": "import 'package:flutter/material.dart';\nimport 'package:pica_comic/comic_source/comic_source.dart';\nimport 'package:pica"
},
{
"path": "lib/pages/history_page.dart",
"chars": 6852,
"preview": "import 'package:flutter/material.dart';\nimport 'package:pica_comic/network/eh_network/eh_main_network.dart';\nimport 'pac"
},
{
"path": "lib/pages/hitomi/hitomi_comic_page.dart",
"chars": 5612,
"preview": "import 'package:flutter/material.dart';\nimport 'package:pica_comic/base.dart';\nimport 'package:pica_comic/components/com"
},
{
"path": "lib/pages/hitomi/hitomi_home_page.dart",
"chars": 5736,
"preview": "import 'package:flutter/material.dart';\nimport 'package:pica_comic/network/hitomi_network/hitomi_main_network.dart';\nimp"
},
{
"path": "lib/pages/hitomi/hitomi_search.dart",
"chars": 4668,
"preview": "import 'dart:math';\n\nimport 'package:flutter/material.dart';\nimport 'package:pica_comic/components/components.dart';\nimp"
},
{
"path": "lib/pages/htmanga/ht_comic_page.dart",
"chars": 5825,
"preview": "import 'package:pica_comic/comic_source/built_in/ht_manga.dart';\nimport 'package:pica_comic/foundation/app.dart';\nimport"
},
{
"path": "lib/pages/image_favorites.dart",
"chars": 9317,
"preview": "import 'dart:async';\nimport 'dart:io';\nimport 'dart:typed_data';\n\nimport 'package:flutter/material.dart';\nimport 'packag"
},
{
"path": "lib/pages/jm/jm_comic_page.dart",
"chars": 6586,
"preview": "import 'package:flutter/material.dart';\nimport 'package:pica_comic/base.dart';\nimport 'package:pica_comic/comic_source/b"
},
{
"path": "lib/pages/jm/jm_comments_page.dart",
"chars": 7687,
"preview": "import 'package:pica_comic/components/comment.dart';\nimport 'package:pica_comic/foundation/app.dart';\nimport 'package:fl"
},
{
"path": "lib/pages/jm/week_recommendation_page.dart",
"chars": 7079,
"preview": "import 'package:flutter/material.dart';\nimport 'package:pica_comic/network/jm_network/jm_network.dart';\nimport 'package:"
},
{
"path": "lib/pages/logs_page.dart",
"chars": 4054,
"preview": "import 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\nimport 'package:pica_comic/foundation/lo"
},
{
"path": "lib/pages/main_page.dart",
"chars": 7982,
"preview": "import 'package:flutter/material.dart';\nimport 'package:flutter/services.dart';\nimport 'package:pica_comic/base.dart';\ni"
},
{
"path": "lib/pages/me_page.dart",
"chars": 9452,
"preview": "import 'package:flutter/material.dart';\nimport 'package:pica_comic/comic_source/comic_source.dart';\nimport 'package:pica"
},
{
"path": "lib/pages/nhentai/comic_page.dart",
"chars": 6464,
"preview": "import 'package:flutter/material.dart';\nimport 'package:pica_comic/comic_source/comic_source.dart';\nimport 'package:pica"
},
{
"path": "lib/pages/nhentai/comments.dart",
"chars": 4012,
"preview": "import 'package:flutter/material.dart';\nimport 'package:pica_comic/components/comment.dart';\nimport 'package:pica_comic/"
}
]
// ... and 108 more files (download for full content)
About this extraction
This page contains the full source code of the wgh136/PicaComic GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 308 files (3.9 MB), approximately 1.0M tokens, and a symbol index with 2594 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.