├── .github
├── FUNDING.yml
├── ISSUE_TEMPLATE
│ ├── config.yml
│ ├── question.yml
│ ├── report_issue.yml
│ └── request_feature.yml
├── pull_request_template.md
└── workflows
│ ├── batch_close_issues.yml
│ ├── bug_greetings.yml
│ ├── dart.yml
│ ├── extension-issue-handling.yml
│ ├── feature_greetings.yml
│ ├── pr_greetings.yml
│ └── release.yml
├── .gitignore
├── .idx
└── dev.nix
├── .metadata
├── CHANGELOG.md
├── LICENSE.md
├── README.md
├── TOS.md
├── analysis_options.yaml
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── aayush262
│ │ │ │ └── dantotsu
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-v21
│ │ │ └── launch_background.xml
│ │ │ ├── drawable
│ │ │ ├── anim_splash.xml
│ │ │ ├── ic_launcher_background.xml
│ │ │ ├── ic_launcher_foreground.xml
│ │ │ ├── launch_background.xml
│ │ │ └── mono.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_banner.xml
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_banner.png
│ │ │ ├── ic_banner_foreground.png
│ │ │ ├── ic_launcher.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.webp
│ │ │ └── ic_launcher_round.webp
│ │ │ ├── values-night
│ │ │ └── styles.xml
│ │ │ └── values
│ │ │ ├── ic_banner_background.xml
│ │ │ └── styles.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── assets
├── fonts
│ ├── poppins.ttf
│ ├── poppins_bold.ttf
│ ├── poppins_semi_bold.ttf
│ └── poppins_thin.ttf
├── images
│ ├── logo.png
│ └── lol.ico
├── svg
│ ├── anilist.svg
│ ├── bmc-button.svg
│ ├── discord.svg
│ ├── extensions.svg
│ ├── kitsu.svg
│ ├── mal.svg
│ └── simkl.svg
└── translations
│ ├── app_am.arb
│ ├── app_ar.arb
│ ├── app_as.arb
│ ├── app_bn.arb
│ ├── app_da.arb
│ ├── app_de.arb
│ ├── app_el.arb
│ ├── app_en.arb
│ ├── app_es.arb
│ ├── app_fa.arb
│ ├── app_fil.arb
│ ├── app_fr.arb
│ ├── app_ha.arb
│ ├── app_he.arb
│ ├── app_hi.arb
│ ├── app_hr.arb
│ ├── app_id.arb
│ ├── app_it.arb
│ ├── app_ja.arb
│ ├── app_kn.arb
│ ├── app_ko.arb
│ ├── app_ml.arb
│ ├── app_mr.arb
│ ├── app_ms.arb
│ ├── app_ne.arb
│ ├── app_nl.arb
│ ├── app_or.arb
│ ├── app_pl.arb
│ ├── app_ps.arb
│ ├── app_pt.arb
│ ├── app_ru.arb
│ ├── app_sa.arb
│ ├── app_si.arb
│ ├── app_so.arb
│ ├── app_sw.arb
│ ├── app_ta.arb
│ ├── app_te.arb
│ ├── app_th.arb
│ ├── app_tr.arb
│ ├── app_uk.arb
│ ├── app_vi.arb
│ └── app_zh.arb
├── devtools_options.yaml
├── epubx
├── .gitignore
├── .travis.yml
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── LICENSE
├── README.md
├── analysis_options.yaml
├── example
│ ├── README.md
│ ├── dart_ex
│ │ ├── README.md
│ │ ├── alicesAdventuresUnderGround.epub
│ │ ├── bin
│ │ │ └── main.dart
│ │ └── pubspec.yaml
│ ├── flutter_ex
│ │ ├── .gitignore
│ │ ├── .metadata
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── android
│ │ │ ├── .gitignore
│ │ │ ├── app
│ │ │ │ ├── build.gradle
│ │ │ │ └── src
│ │ │ │ │ ├── debug
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── main
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── kotlin
│ │ │ │ │ │ └── com
│ │ │ │ │ │ │ └── example
│ │ │ │ │ │ │ └── flutter_ex
│ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ └── res
│ │ │ │ │ │ ├── drawable-v21
│ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ ├── drawable
│ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ │ ├── values-night
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── values
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ └── profile
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle.properties
│ │ │ ├── gradle
│ │ │ │ └── wrapper
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ └── settings.gradle
│ │ ├── example.png
│ │ ├── examplewithcover.png
│ │ ├── ios
│ │ │ ├── .gitignore
│ │ │ ├── Flutter
│ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ ├── Debug.xcconfig
│ │ │ │ └── Release.xcconfig
│ │ │ ├── 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
│ │ │ └── Runner
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Assets.xcassets
│ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ │ │ ├── Icon-App-20x20@1x.png
│ │ │ │ │ ├── Icon-App-20x20@2x.png
│ │ │ │ │ ├── Icon-App-20x20@3x.png
│ │ │ │ │ ├── Icon-App-29x29@1x.png
│ │ │ │ │ ├── Icon-App-29x29@2x.png
│ │ │ │ │ ├── Icon-App-29x29@3x.png
│ │ │ │ │ ├── Icon-App-40x40@1x.png
│ │ │ │ │ ├── Icon-App-40x40@2x.png
│ │ │ │ │ ├── Icon-App-40x40@3x.png
│ │ │ │ │ ├── Icon-App-60x60@2x.png
│ │ │ │ │ ├── Icon-App-60x60@3x.png
│ │ │ │ │ ├── Icon-App-76x76@1x.png
│ │ │ │ │ ├── Icon-App-76x76@2x.png
│ │ │ │ │ └── Icon-App-83.5x83.5@2x.png
│ │ │ │ └── LaunchImage.imageset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── LaunchImage.png
│ │ │ │ │ ├── LaunchImage@2x.png
│ │ │ │ │ ├── LaunchImage@3x.png
│ │ │ │ │ └── README.md
│ │ │ │ ├── Base.lproj
│ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ └── Main.storyboard
│ │ │ │ ├── Info.plist
│ │ │ │ └── Runner-Bridging-Header.h
│ │ ├── lib
│ │ │ └── main.dart
│ │ ├── macos
│ │ │ ├── .gitignore
│ │ │ ├── Flutter
│ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ ├── Flutter-Release.xcconfig
│ │ │ │ └── GeneratedPluginRegistrant.swift
│ │ │ ├── Runner.xcodeproj
│ │ │ │ ├── project.pbxproj
│ │ │ │ ├── project.xcworkspace
│ │ │ │ │ └── xcshareddata
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ └── xcshareddata
│ │ │ │ │ └── xcschemes
│ │ │ │ │ └── Runner.xcscheme
│ │ │ ├── Runner.xcworkspace
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ └── Runner
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Assets.xcassets
│ │ │ │ └── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── app_icon_1024.png
│ │ │ │ │ ├── app_icon_128.png
│ │ │ │ │ ├── app_icon_16.png
│ │ │ │ │ ├── app_icon_256.png
│ │ │ │ │ ├── app_icon_32.png
│ │ │ │ │ ├── app_icon_512.png
│ │ │ │ │ └── app_icon_64.png
│ │ │ │ ├── Base.lproj
│ │ │ │ └── MainMenu.xib
│ │ │ │ ├── Configs
│ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ ├── Debug.xcconfig
│ │ │ │ ├── Release.xcconfig
│ │ │ │ └── Warnings.xcconfig
│ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ ├── Info.plist
│ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ └── Release.entitlements
│ │ ├── pubspec.yaml
│ │ └── web
│ │ │ ├── favicon.png
│ │ │ ├── icons
│ │ │ ├── Icon-192.png
│ │ │ ├── Icon-512.png
│ │ │ ├── Icon-maskable-192.png
│ │ │ └── Icon-maskable-512.png
│ │ │ ├── index.html
│ │ │ └── manifest.json
│ └── web_ex
│ │ ├── .gitignore
│ │ ├── README.md
│ │ ├── analysis_options.yaml
│ │ ├── pubspec.yaml
│ │ └── web
│ │ ├── alicesAdventuresUnderGround.epub
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.dart
│ │ └── styles.css
├── lib
│ ├── epubx.dart
│ └── src
│ │ ├── entities
│ │ ├── epub_book.dart
│ │ ├── epub_byte_content_file.dart
│ │ ├── epub_chapter.dart
│ │ ├── epub_content.dart
│ │ ├── epub_content_file.dart
│ │ ├── epub_content_type.dart
│ │ ├── epub_schema.dart
│ │ └── epub_text_content_file.dart
│ │ ├── epub_reader.dart
│ │ ├── epub_writer.dart
│ │ ├── readers
│ │ ├── book_cover_reader.dart
│ │ ├── chapter_reader.dart
│ │ ├── content_reader.dart
│ │ ├── navigation_reader.dart
│ │ ├── package_reader.dart
│ │ ├── root_file_path_reader.dart
│ │ └── schema_reader.dart
│ │ ├── ref_entities
│ │ ├── epub_book_ref.dart
│ │ ├── epub_byte_content_file_ref.dart
│ │ ├── epub_chapter_ref.dart
│ │ ├── epub_content_file_ref.dart
│ │ ├── epub_content_ref.dart
│ │ └── epub_text_content_file_ref.dart
│ │ ├── schema
│ │ ├── navigation
│ │ │ ├── epub_metadata.dart
│ │ │ ├── epub_navigation.dart
│ │ │ ├── epub_navigation_doc_author.dart
│ │ │ ├── epub_navigation_doc_title.dart
│ │ │ ├── epub_navigation_head.dart
│ │ │ ├── epub_navigation_head_meta.dart
│ │ │ ├── epub_navigation_label.dart
│ │ │ ├── epub_navigation_list.dart
│ │ │ ├── epub_navigation_map.dart
│ │ │ ├── epub_navigation_page_list.dart
│ │ │ ├── epub_navigation_page_target.dart
│ │ │ ├── epub_navigation_page_target_type.dart
│ │ │ ├── epub_navigation_point.dart
│ │ │ └── epub_navigation_target.dart
│ │ └── opf
│ │ │ ├── epub_guide.dart
│ │ │ ├── epub_guide_reference.dart
│ │ │ ├── epub_manifest.dart
│ │ │ ├── epub_manifest_item.dart
│ │ │ ├── epub_metadata.dart
│ │ │ ├── epub_metadata_contributor.dart
│ │ │ ├── epub_metadata_creator.dart
│ │ │ ├── epub_metadata_date.dart
│ │ │ ├── epub_metadata_identifier.dart
│ │ │ ├── epub_metadata_meta.dart
│ │ │ ├── epub_package.dart
│ │ │ ├── epub_spine.dart
│ │ │ ├── epub_spine_item_ref.dart
│ │ │ └── epub_version.dart
│ │ ├── utils
│ │ ├── enum_from_string.dart
│ │ └── zip_path_utils.dart
│ │ └── writers
│ │ ├── epub_guide_writer.dart
│ │ ├── epub_manifest_writer.dart
│ │ ├── epub_metadata_writer.dart
│ │ ├── epub_navigation_writer.dart
│ │ ├── epub_package_writer.dart
│ │ └── epub_spine_writer.dart
├── pubspec.yaml
├── test
│ ├── entities
│ │ ├── epub_book_test.dart
│ │ ├── epub_byte_content_file_test.dart
│ │ ├── epub_chapter_test.dart
│ │ ├── epub_content_test.dart
│ │ ├── epub_schema_test.dart
│ │ └── epub_text_content_file_test.dart
│ ├── enum_string_test.dart
│ ├── epub_image_tests.dart
│ ├── epub_reader_tests.dart
│ ├── epub_writer_tests.dart
│ ├── random_data_generator.dart
│ ├── ref_entities
│ │ ├── epub_book_ref_test.dart
│ │ ├── epub_byte_content_file_ref_test.dart
│ │ ├── epub_chapter_ref_test.dart
│ │ ├── epub_content_ref_test.dart
│ │ └── epub_text_content_file_ref_test.dart
│ ├── res
│ │ ├── alicesAdventuresUnderGround.epub
│ │ ├── hittelOnGoldMines.epub
│ │ └── std
│ │ │ ├── WCAG.epub
│ │ │ ├── accessible_epub_3.epub
│ │ │ ├── childrens-literature.epub
│ │ │ ├── childrens-media-query.epub
│ │ │ ├── cole-voyage-of-life-tol.epub
│ │ │ ├── cole-voyage-of-life.epub
│ │ │ ├── epub30-spec.epub
│ │ │ ├── figure-gallery-bindings.epub
│ │ │ ├── georgia-cfi.epub
│ │ │ ├── georgia-pls-ssml.epub
│ │ │ ├── hefty-water.epub
│ │ │ ├── igp-year5-school-maths.epub
│ │ │ ├── indexing-for-eds-and-auths-3f.epub
│ │ │ ├── indexing-for-eds-and-auths-3md.epub
│ │ │ ├── internallinks.epub
│ │ │ ├── israelsailing.epub
│ │ │ ├── linear-algebra.epub
│ │ │ ├── moby-dick.epub
│ │ │ ├── mymedia_lite.epub
│ │ │ ├── quiz-bindings.epub
│ │ │ ├── svg-in-spine.epub
│ │ │ ├── trees.epub
│ │ │ ├── wasteland-otf-obf.epub
│ │ │ ├── wasteland-otf.epub
│ │ │ ├── wasteland-woff-obf.epub
│ │ │ ├── wasteland-woff.epub
│ │ │ └── wasteland.epub
│ └── schema
│ │ ├── navigation
│ │ ├── epub_navigation_doc_author_test.dart
│ │ ├── epub_navigation_doc_title_test.dart
│ │ ├── epub_navigation_head_meta_test.dart
│ │ ├── epub_navigation_head_test.dart
│ │ ├── epub_navigation_label_test.dart
│ │ ├── epub_navigation_point_test.dart
│ │ └── epub_navigation_target_test.dart
│ │ └── opf
│ │ ├── epub_guide_reference_test.dart
│ │ ├── epub_guide_test.dart
│ │ ├── epub_manifest_item_test.dart
│ │ ├── epub_manifest_test.dart
│ │ ├── epub_metadata_contributor_test.dart
│ │ ├── epub_metadata_creator_test.dart
│ │ ├── epub_metadata_date_test.dart
│ │ ├── epub_metadata_identifier_test.dart
│ │ ├── epub_metadata_meta_test.dart
│ │ ├── epub_metadata_test.dart
│ │ ├── epub_package_test.dart
│ │ ├── epub_spine_item_ref_test.dart
│ │ └── epub_spine_test.dart
└── tool
│ ├── publish.sh
│ └── travis.sh
├── ios
├── .gitignore
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ └── Release.xcconfig
├── Podfile
├── Podfile.lock
├── 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
├── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ ├── Icon-App-20x20@1x.png
│ │ │ ├── Icon-App-20x20@2x.png
│ │ │ ├── Icon-App-20x20@3x.png
│ │ │ ├── Icon-App-29x29@1x.png
│ │ │ ├── Icon-App-29x29@2x.png
│ │ │ ├── Icon-App-29x29@3x.png
│ │ │ ├── Icon-App-40x40@1x.png
│ │ │ ├── Icon-App-40x40@2x.png
│ │ │ ├── Icon-App-40x40@3x.png
│ │ │ ├── Icon-App-50x50@1x.png
│ │ │ ├── Icon-App-50x50@2x.png
│ │ │ ├── Icon-App-57x57@1x.png
│ │ │ ├── Icon-App-57x57@2x.png
│ │ │ ├── Icon-App-60x60@2x.png
│ │ │ ├── Icon-App-60x60@3x.png
│ │ │ ├── Icon-App-72x72@1x.png
│ │ │ ├── Icon-App-72x72@2x.png
│ │ │ ├── Icon-App-76x76@1x.png
│ │ │ ├── Icon-App-76x76@2x.png
│ │ │ └── Icon-App-83.5x83.5@2x.png
│ │ └── LaunchImage.imageset
│ │ │ ├── Contents.json
│ │ │ ├── LaunchImage.png
│ │ │ ├── LaunchImage@2x.png
│ │ │ ├── LaunchImage@3x.png
│ │ │ └── README.md
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── Info.plist
│ └── Runner-Bridging-Header.h
└── RunnerTests
│ └── RunnerTests.swift
├── l10n.yaml
├── lib
├── Adaptor
│ ├── Chapter
│ │ ├── ChapterAdaptor.dart
│ │ ├── ChapterCompactViewHolder.dart
│ │ └── ChapterListViewHolder.dart
│ ├── Charactes
│ │ ├── CharacterViewHolder.dart
│ │ ├── EntityAdaptor.dart
│ │ ├── StaffViewHolder.dart
│ │ └── Widgets
│ │ │ └── EntitySection.dart
│ ├── Episode
│ │ ├── EpisodeAdaptor.dart
│ │ ├── EpisodeCompactViewHolder.dart
│ │ ├── EpisodeGridViewHolder.dart
│ │ ├── EpisodeListViewHolder.dart
│ │ └── Widget
│ │ │ └── HandleProgress.dart
│ ├── Media
│ │ ├── MediaAdaptor.dart
│ │ ├── MediaExpandedViewHolder.dart
│ │ ├── MediaLargeViewHolder.dart
│ │ ├── MediaPageSmallViewHolder.dart
│ │ ├── MediaViewHolder.dart
│ │ └── Widgets
│ │ │ ├── Chips.dart
│ │ │ ├── MediaCard.dart
│ │ │ ├── MediaReleaseingIndicator.dart
│ │ │ ├── MediaScoreBadge.dart
│ │ │ └── MediaSection.dart
│ ├── Settings
│ │ ├── SettingsAdaptor.dart
│ │ └── SettingsItem.dart
│ └── User
│ │ ├── UserAdaptor.dart
│ │ ├── UserLargeViewHolder.dart
│ │ ├── UserViewHolder.dart
│ │ └── Widgets
│ │ └── UserSection.dart
├── Animation
│ ├── ScaleAnimation.dart
│ ├── SlideInAnimation.dart
│ └── SlideUpAnimation.dart
├── Api
│ ├── Anilist
│ │ ├── Anilist.dart
│ │ ├── AnilistMutations.dart
│ │ ├── AnilistMutations
│ │ │ ├── DeleteFromList.dart
│ │ │ ├── SetProgress.dart
│ │ │ └── SetUserList.dart
│ │ ├── AnilistQueries.dart
│ │ ├── AnilistQueries
│ │ │ ├── GetAnimeMangaListData.dart
│ │ │ ├── GetBannerImages.dart
│ │ │ ├── GetCalendarData.dart
│ │ │ ├── GetGenresAndTags.dart
│ │ │ ├── GetHomePageData.dart
│ │ │ ├── GetMediaData.dart
│ │ │ ├── GetMediaDetails.dart
│ │ │ ├── GetUserData.dart
│ │ │ ├── GetUserMediaList.dart
│ │ │ └── Search.dart
│ │ ├── AnilistService.dart
│ │ ├── Data
│ │ │ ├── Generated
│ │ │ │ ├── character.g.dart
│ │ │ │ ├── data.g.dart
│ │ │ │ ├── fuzzyData.g.dart
│ │ │ │ ├── media.g.dart
│ │ │ │ ├── others.g.dart
│ │ │ │ ├── page.g.dart
│ │ │ │ ├── recommendations.g.dart
│ │ │ │ ├── staff.g.dart
│ │ │ │ └── user.g.dart
│ │ │ ├── character.dart
│ │ │ ├── data.dart
│ │ │ ├── fuzzyData.dart
│ │ │ ├── media.dart
│ │ │ ├── others.dart
│ │ │ ├── page.dart
│ │ │ ├── recommendations.dart
│ │ │ ├── staff.dart
│ │ │ └── user.dart
│ │ ├── ListEditor.dart
│ │ ├── Login.dart
│ │ └── Screen
│ │ │ ├── AnilistAnimeScreen.dart
│ │ │ ├── AnilistHomeScreen.dart
│ │ │ ├── AnilistMangaScreen.dart
│ │ │ ├── AnilistSearchScreen.dart
│ │ │ └── Widgets
│ │ │ └── SearchFilter.dart
│ ├── Discord
│ │ ├── Discord.dart
│ │ ├── DiscordService.dart
│ │ ├── DiscordWebSocket.dart
│ │ ├── Login.dart
│ │ └── RpcExternalAsset.dart
│ ├── EpisodeDetails
│ │ ├── Anify
│ │ │ ├── Anify.dart
│ │ │ └── Anify.g.dart
│ │ ├── Aniskip
│ │ │ └── Aniskip.dart
│ │ ├── GetMediaIDs
│ │ │ ├── GetMediaIDs.dart
│ │ │ └── GetMediaIDs.g.dart
│ │ ├── Jikan
│ │ │ ├── Jikan.dart
│ │ │ └── Jikan.g.dart
│ │ └── Kitsu
│ │ │ ├── Kitsu.dart
│ │ │ └── Kitsu.g.dart
│ ├── Extensions
│ │ ├── ExtensionsData.dart
│ │ ├── ExtensionsQueries.dart
│ │ ├── ExtensionsQueries
│ │ │ ├── GetHomePageData.dart
│ │ │ ├── GetMediaDetails.dart
│ │ │ └── GetUserData.dart
│ │ ├── ExtensionsService.dart
│ │ └── Screens
│ │ │ ├── ExtensionsAnimeScreen.dart
│ │ │ ├── ExtensionsHomeScreen.dart
│ │ │ ├── ExtensionsMangaScreen.dart
│ │ │ └── ExtensionsSearchScreen.dart
│ ├── Kitsu
│ │ ├── KitsuData.dart
│ │ └── KitsuService.dart
│ ├── MyAnimeList
│ │ ├── Data
│ │ │ ├── Generated
│ │ │ │ ├── data.g.dart
│ │ │ │ ├── media.g.dart
│ │ │ │ ├── user.g.dart
│ │ │ │ └── userData.g.dart
│ │ │ ├── data.dart
│ │ │ ├── media.dart
│ │ │ ├── user.dart
│ │ │ └── userData.dart
│ │ ├── Login.dart
│ │ ├── Mal.dart
│ │ ├── MalQueries.dart
│ │ ├── MalQueries
│ │ │ ├── GetAnimeMangaListData.dart
│ │ │ ├── GetHomePageData.dart
│ │ │ ├── GetUserData.dart
│ │ │ └── MalStrings.dart
│ │ ├── MalService.dart
│ │ └── Screen
│ │ │ ├── MalAnimeScreen.dart
│ │ │ ├── MalHomeScreen.dart
│ │ │ └── MalMangaScreen.dart
│ ├── Simkl
│ │ ├── Data
│ │ │ ├── Activity.dart
│ │ │ ├── Generated
│ │ │ │ ├── Media.g.dart
│ │ │ │ └── User.g.dart
│ │ │ ├── Media.dart
│ │ │ └── User.dart
│ │ ├── Login.dart
│ │ ├── Screen
│ │ │ ├── SimklAnimeScreen.dart
│ │ │ ├── SimklHomeScreen.dart
│ │ │ └── SimklMovieScreen.dart
│ │ ├── Simkl.dart
│ │ ├── SimklQueries.dart
│ │ ├── SimklQueries
│ │ │ ├── GetAnimeMangaListData.dart
│ │ │ ├── GetHomePageData.dart
│ │ │ └── GetUserData.dart
│ │ └── SimklService.dart
│ ├── Sources
│ │ ├── Eval
│ │ │ ├── dart
│ │ │ │ ├── bridge
│ │ │ │ │ ├── document.dart
│ │ │ │ │ ├── element.dart
│ │ │ │ │ ├── filter.dart
│ │ │ │ │ ├── http.dart
│ │ │ │ │ ├── m_chapter.dart
│ │ │ │ │ ├── m_manga.dart
│ │ │ │ │ ├── m_pages.dart
│ │ │ │ │ ├── m_provider.dart
│ │ │ │ │ ├── m_source.dart
│ │ │ │ │ ├── m_status.dart
│ │ │ │ │ ├── m_track.dart
│ │ │ │ │ ├── m_video.dart
│ │ │ │ │ ├── registrer.dart
│ │ │ │ │ └── source_preference.dart
│ │ │ │ ├── model
│ │ │ │ │ ├── document.dart
│ │ │ │ │ ├── element.dart
│ │ │ │ │ ├── filter.dart
│ │ │ │ │ ├── m_bridge.dart
│ │ │ │ │ ├── m_chapter.dart
│ │ │ │ │ ├── m_manga.dart
│ │ │ │ │ ├── m_pages.dart
│ │ │ │ │ ├── m_provider.dart
│ │ │ │ │ ├── m_source.dart
│ │ │ │ │ ├── m_video.dart
│ │ │ │ │ ├── page.dart
│ │ │ │ │ ├── source_preference.dart
│ │ │ │ │ ├── source_preference.g.dart
│ │ │ │ │ └── video.dart
│ │ │ │ └── service.dart
│ │ │ └── javascript
│ │ │ │ ├── dom_selector.dart
│ │ │ │ ├── extractors.dart
│ │ │ │ ├── http.dart
│ │ │ │ ├── preferences.dart
│ │ │ │ ├── service.dart
│ │ │ │ └── utils.dart
│ │ ├── Extensions
│ │ │ ├── GetSourceList.dart
│ │ │ ├── extensions_provider.dart
│ │ │ ├── extensions_provider.g.dart
│ │ │ ├── fetch_anime_sources.dart
│ │ │ ├── fetch_anime_sources.g.dart
│ │ │ ├── fetch_manga_sources.dart
│ │ │ ├── fetch_manga_sources.g.dart
│ │ │ ├── fetch_novel_sources.dart
│ │ │ └── fetch_novel_sources.g.dart
│ │ ├── Model
│ │ │ ├── Manga.dart
│ │ │ ├── Manga.g.dart
│ │ │ ├── Source.dart
│ │ │ ├── Source.g.dart
│ │ │ ├── chapter.dart
│ │ │ ├── chapter.g.dart
│ │ │ ├── settings.dart
│ │ │ └── settings.g.dart
│ │ ├── Search
│ │ │ ├── getVideo.dart
│ │ │ ├── get_detail.dart
│ │ │ ├── get_pages.dart
│ │ │ ├── get_popular.dart
│ │ │ └── search.dart
│ │ ├── anime_extractors
│ │ │ ├── dood_extractor.dart
│ │ │ ├── filemoon.dart
│ │ │ ├── gogocdn_extractor.dart
│ │ │ ├── mp4upload_extractor.dart
│ │ │ ├── mystream_extractor.dart
│ │ │ ├── mytv_extractor.dart
│ │ │ ├── okru_extractor.dart
│ │ │ ├── quarkuc_extractor.dart
│ │ │ ├── sendvid_extractor.dart
│ │ │ ├── sibnet_extractor.dart
│ │ │ ├── streamlare_extractor.dart
│ │ │ ├── streamtape_extractor.dart
│ │ │ ├── streamwish_extractor.dart
│ │ │ ├── vidbom_extractor.dart
│ │ │ ├── voe_extractor.dart
│ │ │ └── your_upload_extractor.dart
│ │ ├── cryptoaes
│ │ │ ├── crypto_aes.dart
│ │ │ ├── deobfuscator.dart
│ │ │ └── js_unpacker.dart
│ │ ├── dom_extensions.dart
│ │ ├── extension_preferences_providers.dart
│ │ ├── get_source_preference.dart
│ │ ├── http
│ │ │ └── m_client.dart
│ │ ├── interface.dart
│ │ ├── lib.dart
│ │ ├── reg_exp_matcher.dart
│ │ └── xpath_selector.dart
│ └── TypeFactory.dart
├── DataClass
│ ├── Anime.dart
│ ├── Author.dart
│ ├── Chapter.dart
│ ├── Character.dart
│ ├── Data
│ │ ├── Anime.g.dart
│ │ ├── Author.g.dart
│ │ ├── Chapter.g.dart
│ │ ├── Character.g.dart
│ │ ├── Episode.g.dart
│ │ ├── Manga.g.dart
│ │ ├── Media.g.dart
│ │ ├── SearchResults.g.dart
│ │ └── User.g.dart
│ ├── Episode.dart
│ ├── Manga.dart
│ ├── MangaChapter.dart
│ ├── Media.dart
│ ├── Media
│ │ ├── AnilistMedia.dart
│ │ ├── MalMedia.dart
│ │ └── SimklMedia.dart
│ ├── MediaSection.dart
│ ├── SearchResults.dart
│ ├── Setting.dart
│ ├── Studio.dart
│ └── User.dart
├── Functions
│ ├── Extensions.dart
│ ├── Function.dart
│ ├── GetExtensions.dart
│ ├── RegisterProtocol
│ │ ├── Api.dart
│ │ └── WindowProtocol.dart
│ └── string_extensions.dart
├── Preferences
│ ├── IsarDataClasses
│ │ ├── DefaultPlayerSettings
│ │ │ ├── DefaultPlayerSettings.dart
│ │ │ └── DefaultPlayerSettings.g.dart
│ │ ├── DefaultReaderSettings
│ │ │ ├── DafaultReaderSettings.dart
│ │ │ └── DafaultReaderSettings.g.dart
│ │ ├── KeyValue
│ │ │ ├── KeyValues.dart
│ │ │ └── KeyValues.g.dart
│ │ ├── MalToken
│ │ │ ├── MalToken.dart
│ │ │ └── MalToken.g.dart
│ │ ├── MediaSettings
│ │ │ ├── MediaSettings.dart
│ │ │ └── MediaSettings.g.dart
│ │ └── ShowResponse
│ │ │ ├── ShowResponse.dart
│ │ │ └── ShowResponse.g.dart
│ ├── PrefManager.dart
│ └── Preferences.dart
├── Screens
│ ├── Anime
│ │ ├── AnimeScreen.dart
│ │ └── Player
│ │ │ ├── Platform
│ │ │ ├── BasePlayer.dart
│ │ │ └── WindowsPlayer.dart
│ │ │ ├── Player.dart
│ │ │ ├── PlayerController.dart
│ │ │ └── Widgets
│ │ │ └── Indicator.dart
│ ├── Calendar
│ │ ├── CalendarScreen.dart
│ │ └── CalendarViewModel.dart
│ ├── Character
│ │ └── CharacterScreen.dart
│ ├── Detail
│ │ ├── MediaScreen.dart
│ │ ├── MediaScreenViewModel.dart
│ │ ├── Tabs
│ │ │ ├── Info
│ │ │ │ ├── InfoPage.dart
│ │ │ │ └── Widgets
│ │ │ │ │ ├── FollowerWidget.dart
│ │ │ │ │ ├── GenreWidget.dart
│ │ │ │ │ └── ItemFollower.dart
│ │ │ └── Watch
│ │ │ │ ├── Anime
│ │ │ │ ├── AnimeParser.dart
│ │ │ │ ├── AnimeWatchScreen.dart
│ │ │ │ └── Widget
│ │ │ │ │ ├── AnimeCompactSettings.dart
│ │ │ │ │ ├── BuildChunkSelector.dart
│ │ │ │ │ └── ContinueCard.dart
│ │ │ │ ├── BaseParser.dart
│ │ │ │ ├── BaseWatchScreen.dart
│ │ │ │ ├── Functions
│ │ │ │ └── ParseChapterNumber.dart
│ │ │ │ ├── Manga
│ │ │ │ ├── MangaParser.dart
│ │ │ │ ├── MangaWatchScreen.dart
│ │ │ │ └── Widget
│ │ │ │ │ ├── BuildChunkSelector.dart
│ │ │ │ │ ├── ContinueCard.dart
│ │ │ │ │ ├── DateFormat.dart
│ │ │ │ │ └── MangaCompactSettings.dart
│ │ │ │ ├── Source
│ │ │ │ └── Source.dart
│ │ │ │ └── Widgets
│ │ │ │ ├── SourceSelector.dart
│ │ │ │ └── WrongTitle.dart
│ │ └── Widgets
│ │ │ ├── Countdown.dart
│ │ │ └── Releasing.dart
│ ├── Extensions
│ │ ├── ExtensionItem.dart
│ │ ├── ExtensionList.dart
│ │ ├── ExtensionScreen.dart
│ │ └── ExtensionSettings
│ │ │ ├── ExtensionSettings.dart
│ │ │ └── ListTileChapterFilter.dart
│ ├── Home
│ │ ├── HomeScreen.dart
│ │ └── Widgets
│ │ │ ├── AvtarWidget.dart
│ │ │ ├── LoadingWidget.dart
│ │ │ ├── NotificationBadge.dart
│ │ │ └── ServiceSwitcherBar.dart
│ ├── HomeNavbar.dart
│ ├── Login
│ │ └── LoginScreen.dart
│ ├── Manga
│ │ ├── MangaReader
│ │ │ ├── Reader.dart
│ │ │ └── ReaderController.dart
│ │ └── MangaScreen.dart
│ ├── MediaList
│ │ ├── MediaListScreen.dart
│ │ ├── MediaListTabs.dart
│ │ └── MediaListViewModel.dart
│ ├── Search
│ │ └── SearchScreen.dart
│ ├── Settings
│ │ ├── BaseSettingsScreen.dart
│ │ ├── SettingsAboutScreen.dart
│ │ ├── SettingsAccountScreen.dart
│ │ ├── SettingsAnimeScreen.dart
│ │ ├── SettingsBottomSheet.dart
│ │ ├── SettingsCommonScreen.dart
│ │ ├── SettingsExtensionsScreen.dart
│ │ ├── SettingsMangaScreen.dart
│ │ ├── SettingsPlayerScreen.dart
│ │ ├── SettingsReaderScreen.dart
│ │ ├── SettingsScreen.dart
│ │ ├── SettingsThemeScreen.dart
│ │ └── language.dart
│ ├── Staff
│ │ └── StaffScreen.dart
│ └── WebView
│ │ └── WebView.dart
├── Services
│ ├── Api
│ │ ├── Mutations.dart
│ │ └── Queries.dart
│ ├── BaseServiceData.dart
│ ├── MediaService.dart
│ ├── Screens
│ │ ├── BaseAnimeScreen.dart
│ │ ├── BaseHomeScreen.dart
│ │ ├── BaseLoginScreen.dart
│ │ ├── BaseMangaScreen.dart
│ │ ├── BaseMediaScreen.dart
│ │ └── BaseSearchScreen.dart
│ └── ServiceSwitcher.dart
├── StorageProvider.dart
├── Theme
│ ├── Colors.dart
│ ├── CustomColorPicker.dart
│ ├── LanguageSwitcher.dart
│ ├── ThemeManager.dart
│ ├── ThemeProvider.dart
│ └── Themes
│ │ ├── blue.dart
│ │ ├── fromCode.dart
│ │ ├── green.dart
│ │ ├── lavender.dart
│ │ ├── material.dart
│ │ ├── ocean.dart
│ │ ├── oriax.dart
│ │ ├── pink.dart
│ │ ├── purple.dart
│ │ ├── red.dart
│ │ └── saikou.dart
├── Widgets
│ ├── AlertDialogBuilder.dart
│ ├── CachedNetworkImage.dart
│ ├── CustomBottomDialog.dart
│ ├── CustomElevatedButton.dart
│ ├── DropdownMenu.dart
│ ├── GenreItem.dart
│ ├── LoadSvg.dart
│ └── ScrollConfig.dart
├── l10n
│ ├── app_localizations.dart
│ ├── app_localizations_am.dart
│ ├── app_localizations_ar.dart
│ ├── app_localizations_as.dart
│ ├── app_localizations_bn.dart
│ ├── app_localizations_da.dart
│ ├── app_localizations_de.dart
│ ├── app_localizations_el.dart
│ ├── app_localizations_en.dart
│ ├── app_localizations_es.dart
│ ├── app_localizations_fa.dart
│ ├── app_localizations_fil.dart
│ ├── app_localizations_fr.dart
│ ├── app_localizations_ha.dart
│ ├── app_localizations_he.dart
│ ├── app_localizations_hi.dart
│ ├── app_localizations_hr.dart
│ ├── app_localizations_id.dart
│ ├── app_localizations_it.dart
│ ├── app_localizations_ja.dart
│ ├── app_localizations_kn.dart
│ ├── app_localizations_ko.dart
│ ├── app_localizations_ml.dart
│ ├── app_localizations_mr.dart
│ ├── app_localizations_ms.dart
│ ├── app_localizations_ne.dart
│ ├── app_localizations_nl.dart
│ ├── app_localizations_or.dart
│ ├── app_localizations_pl.dart
│ ├── app_localizations_ps.dart
│ ├── app_localizations_pt.dart
│ ├── app_localizations_ru.dart
│ ├── app_localizations_sa.dart
│ ├── app_localizations_si.dart
│ ├── app_localizations_so.dart
│ ├── app_localizations_sw.dart
│ ├── app_localizations_ta.dart
│ ├── app_localizations_te.dart
│ ├── app_localizations_th.dart
│ ├── app_localizations_tr.dart
│ ├── app_localizations_uk.dart
│ ├── app_localizations_vi.dart
│ └── app_localizations_zh.dart
├── logger.dart
└── main.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
│ └── GeneratedPluginRegistrant.swift
├── Podfile
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── app_icon_1024.png
│ │ │ ├── app_icon_128.png
│ │ │ ├── app_icon_16.png
│ │ │ ├── app_icon_256.png
│ │ │ ├── app_icon_32.png
│ │ │ ├── app_icon_512.png
│ │ │ └── app_icon_64.png
│ ├── Base.lproj
│ │ └── MainMenu.xib
│ ├── Configs
│ │ ├── AppInfo.xcconfig
│ │ ├── Debug.xcconfig
│ │ ├── Release.xcconfig
│ │ └── Warnings.xcconfig
│ ├── DebugProfile.entitlements
│ ├── Info.plist
│ ├── MainFlutterWindow.swift
│ └── Release.entitlements
└── RunnerTests
│ └── RunnerTests.swift
├── pubspec.lock
├── pubspec.yaml
├── scripts
├── tel_commit_parser.sed
└── tel_parser.sed
├── shorebird.yaml
├── test
└── widget_test.dart
├── web
├── favicon.png
├── icons
│ ├── Icon-192.png
│ ├── Icon-512.png
│ ├── Icon-maskable-192.png
│ └── Icon-maskable-512.png
├── index.html
└── manifest.json
└── windows
├── .gitignore
├── CMakeLists.txt
├── flutter
├── CMakeLists.txt
├── generated_plugin_registrant.cc
├── generated_plugin_registrant.h
└── generated_plugins.cmake
└── runner
├── CMakeLists.txt
├── Runner.rc
├── flutter_window.cpp
├── flutter_window.h
├── main.cpp
├── resource.h
├── resources
└── app_icon.ico
├── runner.exe.manifest
├── utils.cpp
├── utils.h
├── win32_window.cpp
└── win32_window.h
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: [aayush2622]
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
13 | custom: ['https://www.buymeacoffee.com/aayush262']
14 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | blank_issues_enabled: false
2 | contact_links:
3 | - name: 🧑💻 Dartotsu Help on Discord
4 | url: https://discord.gg/eyQdCpdubF
5 | about: Get support, ask questions, and join the community discussions.
6 |
7 | - name: 📱 Dartotsu Help on Telegram
8 | url: https://t.me/Dartotsu
9 | about: Connect with the community, ask questions, and get help directly on Telegram.
10 |
--------------------------------------------------------------------------------
/.github/pull_request_template.md:
--------------------------------------------------------------------------------
1 | # 🚀 Pull Request
2 | **Description:**
3 | Submit changes or improvements to Dartotsu
4 |
5 | **Title:**
6 | Provide a concise and descriptive title for your pull request
7 |
8 | **Description:**
9 | Clearly describe the purpose and scope of your pull request
10 |
11 | **Summary of Changes:**
12 | Outline the key changes introduced in this pull request
13 |
14 | **Type of Changes:**
15 | - Bug Fix
16 | - Feature
17 | - Enhancement
18 | - Documentation
19 |
20 | **Testing Notes:**
21 | Provide details on how this change has been tested
22 |
23 | **Linked Issue(s):**
24 | Mention any related issues using their GitHub issue numbers
25 |
26 | **Additional Context:**
27 | Include any other relevant information or context for your pull request
28 |
29 | **Submission Checklist:**
30 | - [ ] I have read and followed the project's contributing guidelines
31 | - [ ] My code follows the code style of this project
32 | - [ ] I have tested the changes and ensured they do not break existing functionality
33 | - [ ] I have added or updated documentation as needed
34 | - [ ] I have linked related issues in the description above
35 | - [ ] I have tagged the appropriate reviewers for this pull request
36 |
--------------------------------------------------------------------------------
/.github/workflows/batch_close_issues.yml:
--------------------------------------------------------------------------------
1 | name: "Batch close stale bug and question issues"
2 | on:
3 | schedule:
4 | - cron: '0 0 1 * *'
5 | workflow_dispatch:
6 | inputs:
7 |
8 | jobs:
9 | stale:
10 | runs-on: ubuntu-latest
11 | steps:
12 | - uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9
13 | with:
14 | repo-token: ${{ secrets.GITHUB_TOKEN }}
15 | # Close issues after 3 months of inactivity
16 | days-before-issue-stale: 90
17 | days-before-issue-close: 0
18 | only-issue-labels: "bug,question"
19 | exempt-issue-labels: "do-not-autoclose,Meta request"
20 | close-issue-message: "To have a more manageable issue backlog, we're closing older bug reports and questions that weren't addressed within three months. If this issue is still relevant, please [open a new issue](https://github.com/aayush2622/Dartotsu/issues/new/choose)."
21 | close-issue-reason: not_planned
22 | ascending: true
23 | operations-per-run: 250
24 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 | migrate_working_dir/
12 | *.env
13 | .env
14 |
15 | # IntelliJ related
16 | *.iml
17 | *.ipr
18 | *.iws
19 | .idea/
20 |
21 | # The .vscode folder contains launch configuration and tasks you configure in
22 | # VS Code which you may wish to be included in version control, so this line
23 | # is commented out by default.
24 | .vscode/
25 |
26 | *.jks
27 | *.keystore
28 |
29 | # Flutter/Dart/Pub related
30 | **/doc/api/
31 | **/ios/Flutter/.last_build_id
32 | .dart_tool/
33 | .flutter-plugins
34 | .flutter-plugins-dependencies
35 | .pub-cache/
36 | .pub/
37 | /build/
38 |
39 | # Symbolication related
40 | app.*.symbols
41 |
42 | # Obfuscation related
43 | app.*.map.json
44 |
45 | # Android Studio will place build artifacts here
46 | /android/app/debug
47 | /android/app/profile
48 | /android/app/release
49 | /android/app/.cxx/
50 |
--------------------------------------------------------------------------------
/.idx/dev.nix:
--------------------------------------------------------------------------------
1 | {pkgs}: {
2 | channel = "stable-23.11";
3 | packages = [
4 | pkgs.nodePackages.firebase-tools
5 | pkgs.jdk17
6 | pkgs.unzip
7 | pkgs.apt
8 | pkgs.cmake
9 | ];
10 | idx.extensions = [
11 |
12 |
13 | "Dart-Code.dart-code"
14 | "Dart-Code.flutter"];
15 | idx.previews = {
16 | previews = {
17 | web = {
18 | command = [
19 | "flutter"
20 | "run"
21 | "--machine"
22 | "-d"
23 | "web-server"
24 | "--web-hostname"
25 | "0.0.0.0"
26 | "--web-port"
27 | "$PORT"
28 | ];
29 | manager = "flutter";
30 | };
31 | android = {
32 | command = [
33 | "flutter"
34 | "run"
35 | "--machine"
36 | "-d"
37 | "android"
38 | "-d"
39 | "emulator-5554"
40 | ];
41 | manager = "flutter";
42 | };
43 | };
44 | };
45 | }
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: "17025dd88227cd9532c33fa78f5250d548d87e9a"
8 | channel: "stable"
9 |
10 | project_type: app
11 |
12 | # Tracks metadata for the flutter migrate command
13 | migration:
14 | platforms:
15 | - platform: root
16 | create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a
17 | base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a
18 | - platform: macos
19 | create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a
20 | base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a
21 |
22 | # User provided section
23 |
24 | # List of Local paths (relative to this file) that should be
25 | # ignored by the migrate tool.
26 | #
27 | # Files that are not part of the templates will be ignored by default.
28 | unmanaged_files:
29 | - 'lib/main.dart'
30 | - 'ios/Runner.xcodeproj/project.pbxproj'
31 |
--------------------------------------------------------------------------------
/TOS.md:
--------------------------------------------------------------------------------
1 | ## Terms of Service
2 |
3 | By downloading, installing, or using this repository, you agree to:
4 | - Use the code in compliance with all applicable laws.
5 | - Not use the repository to infringe on copyrighted content.
6 | - Take full responsibility for any third-party extensions you install or use.
7 | - Understand that the developer(s) are not responsible for any third-party extensions or user actions.
8 |
9 | This repository is designed for anime tracking and legal streaming service integration. The developers do not provide, maintain, or endorse any extensions that enable access to unauthorized content.
10 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 | **/*.keystore
13 | **/*.jks
14 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/aayush262/dantotsu/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package ani.aayush262.dartotsu
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity()
6 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_banner.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_banner.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/android/app/src/main/res/mipmap-xhdpi/ic_banner.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_banner_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/android/app/src/main/res/mipmap-xhdpi/ic_banner_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
16 |
19 |
20 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/ic_banner_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
16 |
19 |
20 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | allprojects {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | }
6 | }
7 |
8 | rootProject.buildDir = "../build"
9 | subprojects {
10 | afterEvaluate { project ->
11 | if (project.plugins.hasPlugin("com.android.application") ||
12 | project.plugins.hasPlugin("com.android.library")) {
13 | project.android {
14 | compileSdkVersion 35
15 | buildToolsVersion "36.0.0"
16 | }
17 | }
18 | if (project.hasProperty("android")) {
19 | project.android {
20 | if (namespace == null) {
21 | namespace project.group
22 | }
23 | }
24 | }
25 | }
26 | project.buildDir = "${rootProject.buildDir}/${project.name}"
27 | }
28 | subprojects {
29 | project.evaluationDependsOn(":app")
30 | }
31 |
32 | tasks.register("clean", Delete) {
33 | delete rootProject.buildDir
34 | }
35 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx4G -XX:+HeapDumpOnOutOfMemoryError
2 | android.useAndroidX=true
3 | android.enableJetifier=true
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
4 | networkTimeout=10000
5 | validateDistributionUrl=true
6 | zipStoreBase=GRADLE_USER_HOME
7 | zipStorePath=wrapper/dists
8 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | def flutterSdkPath = {
3 | def properties = new Properties()
4 | file("local.properties").withInputStream { properties.load(it) }
5 | def flutterSdkPath = properties.getProperty("flutter.sdk")
6 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
7 | return flutterSdkPath
8 | }()
9 |
10 | includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
11 |
12 | repositories {
13 | google()
14 | mavenCentral()
15 | gradlePluginPortal()
16 | }
17 | }
18 |
19 | plugins {
20 | id "dev.flutter.flutter-plugin-loader" version "1.0.0"
21 | id "com.android.application" version "8.10.0" apply false
22 | id "org.jetbrains.kotlin.android" version "2.0.20" apply false
23 | }
24 |
25 | include ":app"
26 |
--------------------------------------------------------------------------------
/assets/fonts/poppins.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/assets/fonts/poppins.ttf
--------------------------------------------------------------------------------
/assets/fonts/poppins_bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/assets/fonts/poppins_bold.ttf
--------------------------------------------------------------------------------
/assets/fonts/poppins_semi_bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/assets/fonts/poppins_semi_bold.ttf
--------------------------------------------------------------------------------
/assets/fonts/poppins_thin.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/assets/fonts/poppins_thin.ttf
--------------------------------------------------------------------------------
/assets/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/assets/images/logo.png
--------------------------------------------------------------------------------
/assets/images/lol.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/assets/images/lol.ico
--------------------------------------------------------------------------------
/assets/svg/anilist.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/svg/extensions.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/svg/mal.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/devtools_options.yaml:
--------------------------------------------------------------------------------
1 | description: This file stores settings for Dart & Flutter DevTools.
2 | documentation: https://docs.flutter.dev/tools/devtools/extensions#configure-extension-enablement-states
3 | extensions:
4 | - provider: true
--------------------------------------------------------------------------------
/epubx/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://www.dartlang.org/tools/private-files.html
2 |
3 | # Files and directories created by pub
4 | .buildlog
5 | .packages
6 | .project
7 | .pub/
8 | build/
9 | **/packages/
10 | .dart_tool/
11 |
12 | # Files created by dart2js
13 | # (Most Dart developers will use pub build to compile Dart, use/modify these
14 | # rules if you intend to use dart2js directly
15 | # Convention is to use extension '.dart.js' for Dart compiled to Javascript to
16 | # differentiate from explicit Javascript files)
17 | *.dart.js
18 | *.part.js
19 | *.js.deps
20 | *.js.map
21 | *.info.json
22 |
23 | # Directory created by dartdoc
24 | doc/api/
25 |
26 | # Don't commit pubspec lock file
27 | # (Library packages only! Remove pattern if developing an application package)
28 | pubspec.lock
29 |
30 | #Ignore VSCode Directory
31 | .vscode/
32 |
--------------------------------------------------------------------------------
/epubx/.travis.yml:
--------------------------------------------------------------------------------
1 | language: dart
2 | dart:
3 | - stable
4 | sudo: false
5 | before_script:
6 | - chmod +x ./tool/travis.sh
7 | - chmod +x ./tool/publish.sh
8 | - pub get
9 | script: ./tool/travis.sh
10 | deploy:
11 | provider: script
12 | script: ./tool/publish.sh
13 | skip_cleanup: true
14 | on:
15 | branch: master
16 | dart: stable
--------------------------------------------------------------------------------
/epubx/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Colin Nelson
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/epubx/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | # Defines a default set of lint rules enforced for
2 | # projects at Google. For details and rationale,
3 | # see https://github.com/dart-lang/pedantic#enabled-lints.
4 | # include: package:pedantic/analysis_options.yaml
5 |
6 | # For lint rules and documentation, see http://dart-lang.github.io/linter/lints.
7 | # Uncomment to specify additional rules.
8 | # linter:
9 | # rules:
10 | # - camel_case_types
11 |
12 | analyzer:
13 | exclude:
14 | - example/**
15 | - test/**
16 |
--------------------------------------------------------------------------------
/epubx/example/README.md:
--------------------------------------------------------------------------------
1 | # Examples
2 |
3 | ## dart_ex
4 |
5 | This example reads an EPUB from disk and logs various information about it.
6 |
7 | ## flutter_ex
8 |
9 | This example fetches an EPUB from a user-inputted URL and displays the Title and Author.
--------------------------------------------------------------------------------
/epubx/example/dart_ex/README.md:
--------------------------------------------------------------------------------
1 | # dart_ex
2 |
3 | An example of using the `epub` library in a "standard" command line application.
4 |
5 | ## To Run
6 |
7 | ```shell
8 | dart bin/main.dart
9 | ```
--------------------------------------------------------------------------------
/epubx/example/dart_ex/alicesAdventuresUnderGround.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/dart_ex/alicesAdventuresUnderGround.epub
--------------------------------------------------------------------------------
/epubx/example/dart_ex/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: dart_ex
2 | description: Example dart project
3 | version: 1.0.0+1
4 |
5 | environment:
6 | sdk: '>=2.12.0 <3.0.0'
7 |
8 | dependencies:
9 | # Epub
10 | epubx:
11 | path: ../../
12 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: 7a4c33425ddd78c54aba07d86f3f9a4a0051769b
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/README.md:
--------------------------------------------------------------------------------
1 | # flutter_ex
2 |
3 | A sample application that fetches an epub from a given URL and displays the Title and Author
4 |
5 | Place a URL in the text box (e.g. https://www.gutenberg.org/ebooks/11.epub.images), hit the "Inspect Book" button and watch the application download the book and extract some relevant information.
6 |
7 | ## Examples
8 |
9 | ### With Cover Image
10 | 
11 |
12 | ### Without Cover Image
13 | 
14 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 | **/*.keystore
13 | **/*.jks
14 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/android/app/src/main/kotlin/com/example/flutter_ex/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.example.flutter_ex
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/android/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | ext.kotlin_version = '1.3.50'
3 | repositories {
4 | google()
5 | mavenCentral()
6 | }
7 |
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:4.1.0'
10 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11 | }
12 | }
13 |
14 | allprojects {
15 | repositories {
16 | google()
17 | mavenCentral()
18 | }
19 | }
20 |
21 | rootProject.buildDir = '../build'
22 | subprojects {
23 | project.buildDir = "${rootProject.buildDir}/${project.name}"
24 | project.evaluationDependsOn(':app')
25 | }
26 |
27 | task clean(type: Delete) {
28 | delete rootProject.buildDir
29 | }
30 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx1536M
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Jun 23 08:50:38 CEST 2017
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip
7 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/android/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
4 | def properties = new Properties()
5 |
6 | assert localPropertiesFile.exists()
7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
8 |
9 | def flutterSdkPath = properties.getProperty("flutter.sdk")
10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
12 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/example.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/examplewithcover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/examplewithcover.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/.gitignore:
--------------------------------------------------------------------------------
1 | **/dgph
2 | *.mode1v3
3 | *.mode2v3
4 | *.moved-aside
5 | *.pbxuser
6 | *.perspectivev3
7 | **/*sync/
8 | .sconsign.dblite
9 | .tags*
10 | **/.vagrant/
11 | **/DerivedData/
12 | Icon?
13 | **/Pods/
14 | **/.symlinks/
15 | profile
16 | xcuserdata
17 | **/.generated/
18 | Flutter/App.framework
19 | Flutter/Flutter.framework
20 | Flutter/Flutter.podspec
21 | Flutter/Generated.xcconfig
22 | Flutter/ephemeral/
23 | Flutter/app.flx
24 | Flutter/app.zip
25 | Flutter/flutter_assets/
26 | Flutter/flutter_export_environment.sh
27 | ServiceDefinitions.json
28 | Runner/GeneratedPluginRegistrant.*
29 |
30 | # Exceptions to above rules.
31 | !default.mode1v3
32 | !default.mode2v3
33 | !default.pbxuser
34 | !default.perspectivev3
35 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 11.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 |
4 | @UIApplicationMain
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | GeneratedPluginRegistrant.register(with: self)
11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/.gitignore:
--------------------------------------------------------------------------------
1 | # Flutter-related
2 | **/Flutter/ephemeral/
3 | **/Pods/
4 |
5 | # Xcode-related
6 | **/dgph
7 | **/xcuserdata/
8 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Flutter/Flutter-Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "ephemeral/Flutter-Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Flutter/Flutter-Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "ephemeral/Flutter-Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Flutter/GeneratedPluginRegistrant.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | import FlutterMacOS
6 | import Foundation
7 |
8 |
9 | func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
10 | }
11 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import Cocoa
2 | import FlutterMacOS
3 |
4 | @NSApplicationMain
5 | class AppDelegate: FlutterAppDelegate {
6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
7 | return true
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Runner/Configs/AppInfo.xcconfig:
--------------------------------------------------------------------------------
1 | // Application-level settings for the Runner target.
2 | //
3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the
4 | // future. If not, the values below would default to using the project name when this becomes a
5 | // 'flutter create' template.
6 |
7 | // The application's name. By default this is also the title of the Flutter window.
8 | PRODUCT_NAME = flutter_ex
9 |
10 | // The application's bundle identifier
11 | PRODUCT_BUNDLE_IDENTIFIER = com.example.flutterEx
12 |
13 | // The copyright displayed in application information
14 | PRODUCT_COPYRIGHT = Copyright © 2021 com.example. All rights reserved.
15 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Runner/Configs/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "../../Flutter/Flutter-Debug.xcconfig"
2 | #include "Warnings.xcconfig"
3 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Runner/Configs/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "../../Flutter/Flutter-Release.xcconfig"
2 | #include "Warnings.xcconfig"
3 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Runner/Configs/Warnings.xcconfig:
--------------------------------------------------------------------------------
1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings
2 | GCC_WARN_UNDECLARED_SELECTOR = YES
3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES
4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE
5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES
6 | CLANG_WARN_PRAGMA_PACK = YES
7 | CLANG_WARN_STRICT_PROTOTYPES = YES
8 | CLANG_WARN_COMMA = YES
9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES
10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES
11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES
12 | GCC_WARN_SHADOW = YES
13 | CLANG_WARN_UNREACHABLE_CODE = YES
14 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Runner/DebugProfile.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.cs.allow-jit
8 |
9 | com.apple.security.network.client
10 |
11 | com.apple.security.network.server
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | $(FLUTTER_BUILD_NAME)
21 | CFBundleVersion
22 | $(FLUTTER_BUILD_NUMBER)
23 | LSMinimumSystemVersion
24 | $(MACOSX_DEPLOYMENT_TARGET)
25 | NSHumanReadableCopyright
26 | $(PRODUCT_COPYRIGHT)
27 | NSMainNibFile
28 | MainMenu
29 | NSPrincipalClass
30 | NSApplication
31 |
32 |
33 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Runner/MainFlutterWindow.swift:
--------------------------------------------------------------------------------
1 | import Cocoa
2 | import FlutterMacOS
3 |
4 | class MainFlutterWindow: NSWindow {
5 | override func awakeFromNib() {
6 | let flutterViewController = FlutterViewController.init()
7 | let windowFrame = self.frame
8 | self.contentViewController = flutterViewController
9 | self.setFrame(windowFrame, display: true)
10 |
11 | RegisterGeneratedPlugins(registry: flutterViewController)
12 |
13 | super.awakeFromNib()
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/macos/Runner/Release.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.network.client
8 |
9 | com.apple.security.network.server
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: flutter_ex
2 | description: A new Flutter project.
3 | publish_to: none
4 | version: 1.0.0+1
5 |
6 | environment:
7 | sdk: ">=2.12.0 <3.0.0"
8 |
9 | dependencies:
10 | flutter:
11 | sdk: flutter
12 | # Epub
13 | epubx:
14 | path: ../../
15 | # To get the epub from the internet
16 | http: ^0.13.4
17 | image: ^3.0.8
18 |
19 | dev_dependencies:
20 | flutter_test:
21 | sdk: flutter
22 |
23 | # The following section is specific to Flutter.
24 | flutter:
25 | # The following line ensures that the Material Icons font is
26 | # included with your application, so that you can use the icons in
27 | # the material Icons class.
28 | uses-material-design: true
29 |
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/web/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/web/favicon.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/web/icons/Icon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/web/icons/Icon-192.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/web/icons/Icon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/web/icons/Icon-512.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/web/icons/Icon-maskable-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/web/icons/Icon-maskable-192.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/web/icons/Icon-maskable-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/flutter_ex/web/icons/Icon-maskable-512.png
--------------------------------------------------------------------------------
/epubx/example/flutter_ex/web/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "flutter_ex",
3 | "short_name": "flutter_ex",
4 | "start_url": ".",
5 | "display": "standalone",
6 | "background_color": "#0175C2",
7 | "theme_color": "#0175C2",
8 | "description": "A new Flutter project.",
9 | "orientation": "portrait-primary",
10 | "prefer_related_applications": false,
11 | "icons": [
12 | {
13 | "src": "icons/Icon-192.png",
14 | "sizes": "192x192",
15 | "type": "image/png"
16 | },
17 | {
18 | "src": "icons/Icon-512.png",
19 | "sizes": "512x512",
20 | "type": "image/png"
21 | },
22 | {
23 | "src": "icons/Icon-maskable-192.png",
24 | "sizes": "192x192",
25 | "type": "image/png",
26 | "purpose": "maskable"
27 | },
28 | {
29 | "src": "icons/Icon-maskable-512.png",
30 | "sizes": "512x512",
31 | "type": "image/png",
32 | "purpose": "maskable"
33 | }
34 | ]
35 | }
36 |
--------------------------------------------------------------------------------
/epubx/example/web_ex/.gitignore:
--------------------------------------------------------------------------------
1 | # Files and directories created by pub
2 | .dart_tool/
3 | .packages
4 | # Remove the following pattern if you wish to check in your lock file
5 | pubspec.lock
6 |
7 | # Conventional directory for build outputs
8 | build/
9 |
10 | # Directory created by dartdoc
11 | doc/api/
12 |
--------------------------------------------------------------------------------
/epubx/example/web_ex/README.md:
--------------------------------------------------------------------------------
1 | # web_ex
2 |
3 | An absolute bare-bones web app which uses the epub package.
4 |
5 | ## To run
6 |
7 | Install webdev
8 | ```bash
9 | pub global activate webdev
10 | ```
11 |
12 | Get dependencies
13 | ```bash
14 | pub get
15 | ```
16 |
17 | Run the application
18 | ```bash
19 | webdev serve
20 | ```
21 |
22 | Browse to `localhost:8080`
23 |
24 |
25 | ## Notices
26 | Created from templates made available by Stagehand under a BSD-style
27 | [license](https://github.com/dart-lang/stagehand/blob/master/LICENSE).
28 |
--------------------------------------------------------------------------------
/epubx/example/web_ex/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | # Defines a default set of lint rules enforced for
2 | # projects at Google. For details and rationale,
3 | # see https://github.com/dart-lang/pedantic#enabled-lints.
4 | include: package:pedantic/analysis_options.yaml
5 |
6 | # For lint rules and documentation, see http://dart-lang.github.io/linter/lints.
7 | # Uncomment to specify additional rules.
8 | # linter:
9 | # rules:
10 | # - camel_case_types
11 |
12 | analyzer:
13 | # exclude:
14 | # - path/to/excluded/files/**
15 |
--------------------------------------------------------------------------------
/epubx/example/web_ex/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: web_ex
2 | description: An absolute bare-bones web app.
3 | # version: 1.0.0
4 | #homepage: https://www.example.com
5 | #author: Colin Nelson
6 |
7 | environment:
8 | sdk: '>=2.2.0 <3.0.0'
9 |
10 | dependencies:
11 | # path: ^1.4.1
12 | http: ^0.12.0+2
13 | epub: ^2.0.6
14 |
15 | dev_dependencies:
16 | build_runner: ^1.1.2
17 | build_web_compilers: ^1.0.0
18 | pedantic: ^1.0.0
19 |
--------------------------------------------------------------------------------
/epubx/example/web_ex/web/alicesAdventuresUnderGround.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/web_ex/web/alicesAdventuresUnderGround.epub
--------------------------------------------------------------------------------
/epubx/example/web_ex/web/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/example/web_ex/web/favicon.ico
--------------------------------------------------------------------------------
/epubx/example/web_ex/web/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | web_ex
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | Title
20 |
21 | Author
22 |
23 | Number of Chapters
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/epubx/example/web_ex/web/main.dart:
--------------------------------------------------------------------------------
1 | import 'dart:html';
2 | import 'package:http/http.dart' as http;
3 | import 'package:epubx/epub.dart' as epub;
4 |
5 | void main() async {
6 | querySelector('#output').text = 'Your Dart app is running.';
7 |
8 | var epubRes = await http.get('alicesAdventuresUnderGround.epub');
9 | if (epubRes.statusCode == 200) {
10 | var book = await epub.EpubReader.openBook(epubRes.bodyBytes);
11 | querySelector('#title').text = book.Title;
12 | querySelector('#author').text = book.Author;
13 | var chapters = await book.getChapters();
14 | querySelector('#nchapters').text = chapters.length.toString();
15 | querySelectorAll('h2').style.visibility = 'visible';
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/epubx/example/web_ex/web/styles.css:
--------------------------------------------------------------------------------
1 | @import url(https://fonts.googleapis.com/css?family=Roboto);
2 |
3 | html, body {
4 | width: 100%;
5 | height: 100%;
6 | margin: 0;
7 | padding: 0;
8 | font-family: 'Roboto', sans-serif;
9 | }
10 |
11 | div, h2 {
12 | padding: 20px;
13 | text-align: center;
14 | }
15 |
16 | h2{
17 | visibility: hidden
18 | }
19 |
--------------------------------------------------------------------------------
/epubx/lib/src/entities/epub_byte_content_file.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/collection.dart' as collections;
2 | import 'package:quiver/core.dart';
3 |
4 | import 'epub_content_file.dart';
5 |
6 | class EpubByteContentFile extends EpubContentFile {
7 | List? Content;
8 |
9 | @override
10 | int get hashCode {
11 | var objects = [
12 | ContentMimeType.hashCode,
13 | ContentType.hashCode,
14 | FileName.hashCode,
15 | ...Content?.map((content) => content.hashCode) ?? [0],
16 | ];
17 | return hashObjects(objects);
18 | }
19 |
20 | @override
21 | bool operator ==(other) {
22 | if (!(other is EpubByteContentFile)) {
23 | return false;
24 | }
25 | return collections.listsEqual(Content, other.Content) &&
26 | ContentMimeType == other.ContentMimeType &&
27 | ContentType == other.ContentType &&
28 | FileName == other.FileName;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/epubx/lib/src/entities/epub_chapter.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/collection.dart' as collections;
2 | import 'package:quiver/core.dart';
3 |
4 | class EpubChapter {
5 | String? Title;
6 | String? ContentFileName;
7 | String? Anchor;
8 | String? HtmlContent;
9 | List? SubChapters;
10 | List OtherContentFileNames = [];
11 |
12 | @override
13 | int get hashCode {
14 | var objects = [
15 | Title.hashCode,
16 | ContentFileName.hashCode,
17 | OtherContentFileNames.hashCode,
18 | Anchor.hashCode,
19 | HtmlContent.hashCode,
20 | ...SubChapters?.map((subChapter) => subChapter.hashCode) ?? [0],
21 | ];
22 | return hashObjects(objects);
23 | }
24 |
25 | @override
26 | bool operator ==(other) {
27 | if (!(other is EpubChapter)) {
28 | return false;
29 | }
30 | return Title == other.Title &&
31 | ContentFileName == other.ContentFileName &&
32 | OtherContentFileNames == other.OtherContentFileNames &&
33 | Anchor == other.Anchor &&
34 | HtmlContent == other.HtmlContent &&
35 | collections.listsEqual(SubChapters, other.SubChapters);
36 | }
37 |
38 | @override
39 | String toString() {
40 | return 'Title: $Title, Subchapter count: ${SubChapters!.length}';
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/epubx/lib/src/entities/epub_content_file.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/core.dart';
2 |
3 | import 'epub_content_type.dart';
4 |
5 | abstract class EpubContentFile {
6 | String? FileName;
7 | EpubContentType? ContentType;
8 | String? ContentMimeType;
9 |
10 | @override
11 | int get hashCode =>
12 | hash3(FileName.hashCode, ContentType.hashCode, ContentMimeType.hashCode);
13 |
14 | @override
15 | bool operator ==(other) {
16 | if (!(other is EpubContentFile)) {
17 | return false;
18 | }
19 | return FileName == other.FileName &&
20 | ContentType == other.ContentType &&
21 | ContentMimeType == other.ContentMimeType;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/epubx/lib/src/entities/epub_content_type.dart:
--------------------------------------------------------------------------------
1 | enum EpubContentType {
2 | XHTML_1_1,
3 | DTBOOK,
4 | DTBOOK_NCX,
5 | OEB1_DOCUMENT,
6 | XML,
7 | CSS,
8 | OEB1_CSS,
9 | IMAGE_GIF,
10 | IMAGE_JPEG,
11 | IMAGE_PNG,
12 | IMAGE_SVG,
13 | IMAGE_BMP,
14 | FONT_TRUETYPE,
15 | FONT_OPENTYPE,
16 | OTHER
17 | }
18 |
--------------------------------------------------------------------------------
/epubx/lib/src/entities/epub_schema.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/core.dart';
2 |
3 | import '../schema/navigation/epub_navigation.dart';
4 | import '../schema/opf/epub_package.dart';
5 |
6 | class EpubSchema {
7 | EpubPackage? Package;
8 | EpubNavigation? Navigation;
9 | String? ContentDirectoryPath;
10 |
11 | @override
12 | int get hashCode => hash3(
13 | Package.hashCode, Navigation.hashCode, ContentDirectoryPath.hashCode);
14 |
15 | @override
16 | bool operator ==(other) {
17 | if (!(other is EpubSchema)) {
18 | return false;
19 | }
20 |
21 | return Package == other.Package &&
22 | Navigation == other.Navigation &&
23 | ContentDirectoryPath == other.ContentDirectoryPath;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/epubx/lib/src/entities/epub_text_content_file.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/core.dart';
2 |
3 | import 'epub_content_file.dart';
4 |
5 | class EpubTextContentFile extends EpubContentFile {
6 | String? Content;
7 |
8 | @override
9 | int get hashCode => hash4(Content, ContentMimeType, ContentType, FileName);
10 |
11 | @override
12 | bool operator ==(other) {
13 | if (!(other is EpubTextContentFile)) {
14 | return false;
15 | }
16 |
17 | return Content == other.Content &&
18 | ContentMimeType == other.ContentMimeType &&
19 | ContentType == other.ContentType &&
20 | FileName == other.FileName;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/epubx/lib/src/readers/schema_reader.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | import 'package:archive/archive.dart';
4 |
5 | import '../entities/epub_schema.dart';
6 | import '../utils/zip_path_utils.dart';
7 | import 'navigation_reader.dart';
8 | import 'package_reader.dart';
9 | import 'root_file_path_reader.dart';
10 |
11 | class SchemaReader {
12 | static Future readSchema(Archive epubArchive) async {
13 | var result = EpubSchema();
14 |
15 | var rootFilePath = (await RootFilePathReader.getRootFilePath(epubArchive))!;
16 | var contentDirectoryPath = ZipPathUtils.getDirectoryPath(rootFilePath);
17 | result.ContentDirectoryPath = contentDirectoryPath;
18 |
19 | var package = await PackageReader.readPackage(epubArchive, rootFilePath);
20 | result.Package = package;
21 |
22 | var navigation = await NavigationReader.readNavigation(
23 | epubArchive, contentDirectoryPath, package);
24 | result.Navigation = navigation;
25 |
26 | return result;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/epubx/lib/src/ref_entities/epub_byte_content_file_ref.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | import 'epub_book_ref.dart';
4 | import 'epub_content_file_ref.dart';
5 |
6 | class EpubByteContentFileRef extends EpubContentFileRef {
7 | EpubByteContentFileRef(EpubBookRef epubBookRef) : super(epubBookRef);
8 |
9 | Future> readContent() {
10 | return readContentAsBytes();
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/epubx/lib/src/ref_entities/epub_text_content_file_ref.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 |
3 | import 'epub_book_ref.dart';
4 | import 'epub_content_file_ref.dart';
5 |
6 | class EpubTextContentFileRef extends EpubContentFileRef {
7 | EpubTextContentFileRef(EpubBookRef epubBookRef) : super(epubBookRef);
8 |
9 | Future ReadContentAsync() async {
10 | return readContentAsText();
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/navigation/epub_metadata.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/core.dart';
2 |
3 | class EpubNavigationContent {
4 | String? Id;
5 | String? Source;
6 |
7 | @override
8 | int get hashCode => hash2(Id.hashCode, Source.hashCode);
9 |
10 | @override
11 | bool operator ==(other) {
12 | if (!(other is EpubNavigationContent)) {
13 | return false;
14 | }
15 | return Id == other.Id && Source == other.Source;
16 | }
17 |
18 | @override
19 | String toString() {
20 | return 'Source: $Source';
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/navigation/epub_navigation_doc_author.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/collection.dart' as collections;
2 | import 'package:quiver/core.dart';
3 |
4 | class EpubNavigationDocAuthor {
5 | List? Authors;
6 |
7 | EpubNavigationDocAuthor() {
8 | Authors = [];
9 | }
10 |
11 | @override
12 | int get hashCode {
13 | var objects = [...Authors!.map((author) => author.hashCode)];
14 | return hashObjects(objects);
15 | }
16 |
17 | @override
18 | bool operator ==(other) {
19 | var otherAs = other as EpubNavigationDocAuthor?;
20 | if (otherAs == null) return false;
21 |
22 | return collections.listsEqual(Authors, otherAs.Authors);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/navigation/epub_navigation_doc_title.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/collection.dart' as collections;
2 | import 'package:quiver/core.dart';
3 |
4 | class EpubNavigationDocTitle {
5 | List? Titles;
6 |
7 | EpubNavigationDocTitle() {
8 | Titles = [];
9 | }
10 |
11 | @override
12 | int get hashCode {
13 | var objects = [...Titles!.map((title) => title.hashCode)];
14 | return hashObjects(objects);
15 | }
16 |
17 | @override
18 | bool operator ==(other) {
19 | var otherAs = other as EpubNavigationDocTitle?;
20 | if (otherAs == null) return false;
21 |
22 | return collections.listsEqual(Titles, otherAs.Titles);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/navigation/epub_navigation_head.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/collection.dart' as collections;
2 | import 'package:quiver/core.dart';
3 |
4 | import 'epub_navigation_head_meta.dart';
5 |
6 | class EpubNavigationHead {
7 | List? Metadata;
8 |
9 | EpubNavigationHead() {
10 | Metadata = [];
11 | }
12 |
13 | @override
14 | int get hashCode {
15 | var objects = [...Metadata!.map((meta) => meta.hashCode)];
16 | return hashObjects(objects);
17 | }
18 |
19 | @override
20 | bool operator ==(other) {
21 | var otherAs = other as EpubNavigationHead?;
22 | if (otherAs == null) {
23 | return false;
24 | }
25 |
26 | return collections.listsEqual(Metadata, otherAs.Metadata);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/navigation/epub_navigation_head_meta.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/core.dart';
2 |
3 | class EpubNavigationHeadMeta {
4 | String? Name;
5 | String? Content;
6 | String? Scheme;
7 |
8 | @override
9 | int get hashCode => hash3(Name.hashCode, Content.hashCode, Scheme.hashCode);
10 |
11 | @override
12 | bool operator ==(other) {
13 | var otherAs = other as EpubNavigationHeadMeta?;
14 | if (otherAs == null) {
15 | return false;
16 | }
17 |
18 | return Name == otherAs.Name &&
19 | Content == otherAs.Content &&
20 | Scheme == otherAs.Scheme;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/navigation/epub_navigation_label.dart:
--------------------------------------------------------------------------------
1 | class EpubNavigationLabel {
2 | String? Text;
3 |
4 | @override
5 | int get hashCode => Text.hashCode;
6 |
7 | @override
8 | bool operator ==(other) {
9 | var otherAs = other as EpubNavigationLabel?;
10 | if (otherAs == null) return false;
11 | return Text == otherAs.Text;
12 | }
13 |
14 | @override
15 | String toString() {
16 | return Text!;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/navigation/epub_navigation_list.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/collection.dart' as collections;
2 | import 'package:quiver/core.dart';
3 |
4 | import 'epub_navigation_label.dart';
5 | import 'epub_navigation_target.dart';
6 |
7 | class EpubNavigationList {
8 | String? Id;
9 | String? Class;
10 | List? NavigationLabels;
11 | List? NavigationTargets;
12 |
13 | @override
14 | int get hashCode {
15 | var objects = [
16 | Id.hashCode,
17 | Class.hashCode,
18 | ...NavigationLabels?.map((label) => label.hashCode) ?? [0],
19 | ...NavigationTargets?.map((target) => target.hashCode) ?? [0]
20 | ];
21 | return hashObjects(objects);
22 | }
23 |
24 | @override
25 | bool operator ==(other) {
26 | var otherAs = other as EpubNavigationList?;
27 | if (otherAs == null) return false;
28 |
29 | if (!(Id == otherAs.Id && Class == otherAs.Class)) {
30 | return false;
31 | }
32 |
33 | if (!collections.listsEqual(NavigationLabels, otherAs.NavigationLabels)) {
34 | return false;
35 | }
36 | if (!collections.listsEqual(NavigationTargets, otherAs.NavigationTargets)) {
37 | return false;
38 | }
39 | return true;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/navigation/epub_navigation_map.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/collection.dart' as collections;
2 | import 'package:quiver/core.dart';
3 |
4 | import 'epub_navigation_point.dart';
5 |
6 | class EpubNavigationMap {
7 | List? Points;
8 |
9 | @override
10 | int get hashCode {
11 | return hashObjects(Points?.map((point) => point.hashCode) ?? [0]);
12 | }
13 |
14 | @override
15 | bool operator ==(other) {
16 | var otherAs = other as EpubNavigationMap?;
17 | if (otherAs == null) return false;
18 |
19 | return collections.listsEqual(Points, otherAs.Points);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/navigation/epub_navigation_page_list.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/collection.dart' as collections;
2 | import 'package:quiver/core.dart';
3 |
4 | import 'epub_navigation_page_target.dart';
5 |
6 | class EpubNavigationPageList {
7 | List? Targets;
8 |
9 | @override
10 | int get hashCode {
11 | return hashObjects(Targets?.map((target) => target.hashCode) ?? [0]);
12 | }
13 |
14 | @override
15 | bool operator ==(other) {
16 | var otherAs = other as EpubNavigationPageList?;
17 | if (otherAs == null) return false;
18 |
19 | return collections.listsEqual(Targets, otherAs.Targets);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/navigation/epub_navigation_page_target_type.dart:
--------------------------------------------------------------------------------
1 | enum EpubNavigationPageTargetType { UNDEFINED, FRONT, NORMAL, SPECIAL }
2 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/navigation/epub_navigation_target.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/collection.dart' as collections;
2 | import 'package:quiver/core.dart';
3 |
4 | import 'epub_metadata.dart';
5 | import 'epub_navigation_label.dart';
6 |
7 | class EpubNavigationTarget {
8 | String? Id;
9 | String? Class;
10 | String? Value;
11 | String? PlayOrder;
12 | List? NavigationLabels;
13 | EpubNavigationContent? Content;
14 |
15 | @override
16 | int get hashCode {
17 | var objects = [
18 | Id.hashCode,
19 | Class.hashCode,
20 | Value.hashCode,
21 | PlayOrder.hashCode,
22 | Content.hashCode,
23 | ...NavigationLabels!.map((label) => label.hashCode)
24 | ];
25 | return hashObjects(objects);
26 | }
27 |
28 | @override
29 | bool operator ==(other) {
30 | var otherAs = other as EpubNavigationTarget?;
31 | if (otherAs == null) return false;
32 |
33 | if (!(Id == otherAs.Id &&
34 | Class == otherAs.Class &&
35 | Value == otherAs.Value &&
36 | PlayOrder == otherAs.PlayOrder &&
37 | Content == otherAs.Content)) {
38 | return false;
39 | }
40 |
41 | return collections.listsEqual(NavigationLabels, otherAs.NavigationLabels);
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/opf/epub_guide.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/collection.dart' as collections;
2 | import 'package:quiver/core.dart';
3 |
4 | import 'epub_guide_reference.dart';
5 |
6 | class EpubGuide {
7 | List? Items;
8 |
9 | EpubGuide() {
10 | Items = [];
11 | }
12 |
13 | @override
14 | int get hashCode {
15 | var objects = [];
16 | objects.addAll(Items!.map((item) => item.hashCode));
17 | return hashObjects(objects);
18 | }
19 |
20 | @override
21 | bool operator ==(other) {
22 | var otherAs = other as EpubGuide?;
23 | if (otherAs == null) {
24 | return false;
25 | }
26 |
27 | return collections.listsEqual(Items, otherAs.Items);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/opf/epub_guide_reference.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/core.dart';
2 |
3 | class EpubGuideReference {
4 | String? Type;
5 | String? Title;
6 | String? Href;
7 |
8 | @override
9 | int get hashCode => hash3(Type.hashCode, Title.hashCode, Href.hashCode);
10 |
11 | @override
12 | bool operator ==(other) {
13 | var otherAs = other as EpubGuideReference?;
14 | if (otherAs == null) {
15 | return false;
16 | }
17 |
18 | return Type == otherAs.Type &&
19 | Title == otherAs.Title &&
20 | Href == otherAs.Href;
21 | }
22 |
23 | @override
24 | String toString() {
25 | return 'Type: $Type, Href: $Href';
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/opf/epub_manifest.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/collection.dart' as collections;
2 | import 'package:quiver/core.dart';
3 |
4 | import 'epub_manifest_item.dart';
5 |
6 | class EpubManifest {
7 | List? Items;
8 |
9 | EpubManifest() {
10 | Items = [];
11 | }
12 |
13 | @override
14 | int get hashCode {
15 | return hashObjects(Items!.map((item) => item.hashCode));
16 | }
17 |
18 | @override
19 | bool operator ==(other) {
20 | var otherAs = other as EpubManifest?;
21 | if (otherAs == null) {
22 | return false;
23 | }
24 | return collections.listsEqual(Items, otherAs.Items);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/opf/epub_metadata_contributor.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/core.dart';
2 |
3 | class EpubMetadataContributor {
4 | String? Contributor;
5 | String? FileAs;
6 | String? Role;
7 |
8 | @override
9 | int get hashCode =>
10 | hash3(Contributor.hashCode, FileAs.hashCode, Role.hashCode);
11 |
12 | @override
13 | bool operator ==(other) {
14 | var otherAs = other as EpubMetadataContributor?;
15 | if (otherAs == null) return false;
16 |
17 | return Contributor == otherAs.Contributor &&
18 | FileAs == otherAs.FileAs &&
19 | Role == otherAs.Role;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/opf/epub_metadata_creator.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/core.dart';
2 |
3 | class EpubMetadataCreator {
4 | String? Creator;
5 | String? FileAs;
6 | String? Role;
7 |
8 | @override
9 | int get hashCode => hash3(Creator.hashCode, FileAs.hashCode, Role.hashCode);
10 |
11 | @override
12 | bool operator ==(other) {
13 | var otherAs = other as EpubMetadataCreator?;
14 | if (otherAs == null) return false;
15 | return Creator == otherAs.Creator &&
16 | FileAs == otherAs.FileAs &&
17 | Role == otherAs.Role;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/opf/epub_metadata_date.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/core.dart';
2 |
3 | class EpubMetadataDate {
4 | String? Date;
5 | String? Event;
6 |
7 | @override
8 | int get hashCode => hash2(Date.hashCode, Event.hashCode);
9 |
10 | @override
11 | bool operator ==(other) {
12 | var otherAs = other as EpubMetadataDate?;
13 | if (otherAs == null) return false;
14 | return Date == otherAs.Date && Event == otherAs.Event;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/opf/epub_metadata_identifier.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/core.dart';
2 |
3 | class EpubMetadataIdentifier {
4 | String? Id;
5 | String? Scheme;
6 | String? Identifier;
7 |
8 | @override
9 | int get hashCode => hash3(Id.hashCode, Scheme.hashCode, Identifier.hashCode);
10 |
11 | @override
12 | bool operator ==(other) {
13 | var otherAs = other as EpubMetadataIdentifier?;
14 | if (otherAs == null) return false;
15 | return Id == otherAs.Id &&
16 | Scheme == otherAs.Scheme &&
17 | Identifier == otherAs.Identifier;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/opf/epub_metadata_meta.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/core.dart';
2 |
3 | class EpubMetadataMeta {
4 | String? Name;
5 | String? Content;
6 | String? Id;
7 | String? Refines;
8 | String? Property;
9 | String? Scheme;
10 | Map? Attributes;
11 |
12 | @override
13 | int get hashCode => hashObjects([
14 | Name.hashCode,
15 | Content.hashCode,
16 | Id.hashCode,
17 | Refines.hashCode,
18 | Property.hashCode,
19 | Scheme.hashCode
20 | ]);
21 |
22 | @override
23 | bool operator ==(other) {
24 | var otherAs = other as EpubMetadataMeta?;
25 | if (otherAs == null) return false;
26 | return Name == otherAs.Name &&
27 | Content == otherAs.Content &&
28 | Id == otherAs.Id &&
29 | Refines == otherAs.Refines &&
30 | Property == otherAs.Property &&
31 | Scheme == otherAs.Scheme;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/opf/epub_package.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/core.dart';
2 |
3 | import 'epub_guide.dart';
4 | import 'epub_manifest.dart';
5 | import 'epub_metadata.dart';
6 | import 'epub_spine.dart';
7 | import 'epub_version.dart';
8 |
9 | class EpubPackage {
10 | EpubVersion? Version;
11 | EpubMetadata? Metadata;
12 | EpubManifest? Manifest;
13 | EpubSpine? Spine;
14 | EpubGuide? Guide;
15 |
16 | @override
17 | int get hashCode => hashObjects([
18 | Version.hashCode,
19 | Metadata.hashCode,
20 | Manifest.hashCode,
21 | Spine.hashCode,
22 | Guide.hashCode
23 | ]);
24 |
25 | @override
26 | bool operator ==(other) {
27 | var otherAs = other as EpubPackage?;
28 | if (otherAs == null) {
29 | return false;
30 | }
31 |
32 | return Version == otherAs.Version &&
33 | Metadata == otherAs.Metadata &&
34 | Manifest == otherAs.Manifest &&
35 | Spine == otherAs.Spine &&
36 | Guide == otherAs.Guide;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/opf/epub_spine.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/collection.dart' as collections;
2 | import 'package:quiver/core.dart';
3 |
4 | import 'epub_spine_item_ref.dart';
5 |
6 | class EpubSpine {
7 | String? TableOfContents;
8 | List? Items;
9 | bool? ltr;
10 |
11 | @override
12 | int get hashCode {
13 | var objs = [
14 | TableOfContents.hashCode,
15 | ltr.hashCode,
16 | ...Items!.map((item) => item.hashCode)
17 | ];
18 | return hashObjects(objs);
19 | }
20 |
21 | @override
22 | bool operator ==(other) {
23 | var otherAs = other as EpubSpine?;
24 | if (otherAs == null) return false;
25 |
26 | if (!collections.listsEqual(Items, otherAs.Items)) {
27 | return false;
28 | }
29 | return ((TableOfContents == otherAs.TableOfContents) &&
30 | (ltr == otherAs.ltr));
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/opf/epub_spine_item_ref.dart:
--------------------------------------------------------------------------------
1 | import 'package:quiver/core.dart';
2 |
3 | class EpubSpineItemRef {
4 | String? IdRef;
5 | bool? IsLinear;
6 |
7 | @override
8 | int get hashCode => hash2(IdRef.hashCode, IsLinear.hashCode);
9 |
10 | @override
11 | bool operator ==(other) {
12 | var otherAs = other as EpubSpineItemRef?;
13 | if (otherAs == null) {
14 | return false;
15 | }
16 |
17 | return IdRef == otherAs.IdRef && IsLinear == otherAs.IsLinear;
18 | }
19 |
20 | @override
21 | String toString() {
22 | return 'IdRef: $IdRef';
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/epubx/lib/src/schema/opf/epub_version.dart:
--------------------------------------------------------------------------------
1 | enum EpubVersion { Epub2, Epub3 }
2 |
--------------------------------------------------------------------------------
/epubx/lib/src/utils/enum_from_string.dart:
--------------------------------------------------------------------------------
1 | class EnumFromString {
2 | List enumValues;
3 |
4 | EnumFromString(this.enumValues);
5 |
6 | T? get(String value) {
7 | value = '$T.$value';
8 | try {
9 | var x = enumValues
10 | .firstWhere((f) => f.toString().toUpperCase() == value.toUpperCase());
11 | return x;
12 | } catch (e) {
13 | return null;
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/epubx/lib/src/utils/zip_path_utils.dart:
--------------------------------------------------------------------------------
1 | class ZipPathUtils {
2 | static String getDirectoryPath(String filePath) {
3 | var lastSlashIndex = filePath.lastIndexOf('/');
4 | if (lastSlashIndex == -1) {
5 | return '';
6 | } else {
7 | return filePath.substring(0, lastSlashIndex);
8 | }
9 | }
10 |
11 | static String? combine(String? directory, String? fileName) {
12 | var path;
13 | if (directory == null || directory == '') {
14 | path = fileName;
15 | } else {
16 | path = directory + '/' + fileName!;
17 | }
18 | return Uri.parse(path).normalizePath().path;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/epubx/lib/src/writers/epub_guide_writer.dart:
--------------------------------------------------------------------------------
1 | import 'package:epubx/src/schema/opf/epub_guide.dart';
2 | import 'package:xml/src/xml/builder.dart' show XmlBuilder;
3 |
4 | class EpubGuideWriter {
5 | static void writeGuide(XmlBuilder builder, EpubGuide? guide) {
6 | builder.element('guide', nest: () {
7 | guide!.Items!.forEach((guideItem) => builder.element('reference',
8 | attributes: {
9 | 'type': guideItem.Type!,
10 | 'title': guideItem.Title!,
11 | 'href': guideItem.Href!
12 | }));
13 | });
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/epubx/lib/src/writers/epub_manifest_writer.dart:
--------------------------------------------------------------------------------
1 | import 'package:epubx/src/schema/opf/epub_manifest.dart';
2 | import 'package:xml/src/xml/builder.dart' show XmlBuilder;
3 |
4 | class EpubManifestWriter {
5 | static void writeManifest(XmlBuilder builder, EpubManifest? manifest) {
6 | builder.element('manifest', nest: () {
7 | manifest!.Items!.forEach((item) {
8 | builder.element('item', nest: () {
9 | builder
10 | ..attribute('id', item.Id!)
11 | ..attribute('href', item.Href!)
12 | ..attribute('media-type', item.MediaType!);
13 | });
14 | });
15 | });
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/epubx/lib/src/writers/epub_spine_writer.dart:
--------------------------------------------------------------------------------
1 | import 'package:epubx/src/schema/opf/epub_spine.dart';
2 | import 'package:xml/src/xml/builder.dart' show XmlBuilder;
3 |
4 | class EpubSpineWriter {
5 | static void writeSpine(XmlBuilder builder, EpubSpine spine) {
6 | builder.element('spine', attributes: {'toc': spine.TableOfContents!},
7 | nest: () {
8 | spine.Items!.forEach((spineitem) => builder.element('itemref',
9 | attributes: {
10 | 'idref': spineitem.IdRef!,
11 | 'linear': spineitem.IsLinear! ? 'yes' : 'no'
12 | }));
13 | });
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/epubx/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: epubx
2 | description: Epub Parser for Dart. Epub package fork. Suitable for use on the Server, the Web, or in Flutter
3 | homepage: https://github.com/rbcprolabs/epubx.dart
4 | issue_tracker: https://github.com/rbcprolabs/epubx.dart
5 | version: 4.0.3
6 |
7 | environment:
8 | sdk: ">=3.0.0 <4.0.0"
9 |
10 | dependencies:
11 | archive: ^4.0.5
12 | quiver: ^3.0.1+1
13 | path: ^1.9.1
14 | xml: ^6.0.1
15 | image: ^4.5.3
16 | collection: ^1.15.0
17 |
18 | dev_dependencies:
19 | test: ^1.16.7
20 | lints: ^5.1.1
21 |
--------------------------------------------------------------------------------
/epubx/test/enum_string_test.dart:
--------------------------------------------------------------------------------
1 | library epubtest;
2 |
3 | import 'package:test/test.dart';
4 |
5 | import 'package:epubx/epub.dart';
6 |
7 | main() {
8 | test("Enum One", () {
9 | expect(new EnumFromString(Simple.values).get("ONE"),
10 | equals(Simple.ONE));
11 | });
12 | test("Enum Two", () {
13 | expect(new EnumFromString(Simple.values).get("TWO"),
14 | equals(Simple.TWO));
15 | });
16 | test("Enum One", () {
17 | expect(new EnumFromString(Simple.values).get("THREE"),
18 | equals(Simple.THREE));
19 | });
20 | test("Enum One Lower Case", () {
21 | expect(new EnumFromString(Simple.values).get("one"),
22 | equals(Simple.ONE));
23 | });
24 | }
25 |
26 | enum Simple { ONE, TWO, THREE }
27 |
--------------------------------------------------------------------------------
/epubx/test/epub_writer_tests.dart:
--------------------------------------------------------------------------------
1 | library epubreadertest;
2 |
3 | import 'dart:io' as io;
4 |
5 | import 'package:epubx/epub.dart';
6 | import 'package:path/path.dart' as path;
7 | import 'package:test/test.dart';
8 |
9 | main() async {
10 | String fileName = "alicesAdventuresUnderGround.epub";
11 | String fullPath =
12 | path.join(io.Directory.current.path, "test", "res", fileName);
13 | var targetFile = new io.File(fullPath);
14 | if (!(await targetFile.exists())) {
15 | throw new Exception("Specified epub file not found: ${fullPath}");
16 | }
17 |
18 | List bytes = await targetFile.readAsBytes();
19 |
20 | test("Book Round Trip", () async {
21 | EpubBook book = await EpubReader.readBook(bytes);
22 |
23 | var written = await EpubWriter.writeBook(book);
24 | var bookRoundTrip = await EpubReader.readBook(written);
25 |
26 | expect(bookRoundTrip, equals(book));
27 | });
28 | }
29 |
--------------------------------------------------------------------------------
/epubx/test/res/alicesAdventuresUnderGround.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/alicesAdventuresUnderGround.epub
--------------------------------------------------------------------------------
/epubx/test/res/hittelOnGoldMines.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/hittelOnGoldMines.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/WCAG.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/WCAG.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/accessible_epub_3.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/accessible_epub_3.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/childrens-literature.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/childrens-literature.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/childrens-media-query.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/childrens-media-query.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/cole-voyage-of-life-tol.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/cole-voyage-of-life-tol.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/cole-voyage-of-life.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/cole-voyage-of-life.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/epub30-spec.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/epub30-spec.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/figure-gallery-bindings.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/figure-gallery-bindings.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/georgia-cfi.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/georgia-cfi.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/georgia-pls-ssml.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/georgia-pls-ssml.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/hefty-water.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/hefty-water.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/igp-year5-school-maths.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/igp-year5-school-maths.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/indexing-for-eds-and-auths-3f.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/indexing-for-eds-and-auths-3f.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/indexing-for-eds-and-auths-3md.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/indexing-for-eds-and-auths-3md.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/internallinks.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/internallinks.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/israelsailing.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/israelsailing.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/linear-algebra.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/linear-algebra.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/moby-dick.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/moby-dick.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/mymedia_lite.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/mymedia_lite.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/quiz-bindings.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/quiz-bindings.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/svg-in-spine.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/svg-in-spine.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/trees.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/trees.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/wasteland-otf-obf.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/wasteland-otf-obf.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/wasteland-otf.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/wasteland-otf.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/wasteland-woff-obf.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/wasteland-woff-obf.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/wasteland-woff.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/wasteland-woff.epub
--------------------------------------------------------------------------------
/epubx/test/res/std/wasteland.epub:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/epubx/test/res/std/wasteland.epub
--------------------------------------------------------------------------------
/epubx/tool/publish.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | mkdir -p .pub-cache
3 |
4 | cat < ~/.pub-cache/credentials.json
5 | {
6 | "accessToken":"$accessToken",
7 | "refreshToken":"$refreshToken",
8 | "tokenEndpoint":"$tokenEndpoint",
9 | "scopes":["$scopes"],
10 | "expiration":$expiration
11 | }
12 | EOF
13 |
14 | pub publish -f
--------------------------------------------------------------------------------
/epubx/tool/travis.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Fast fail the script on failures.
4 | set -e
5 |
6 | # Analyze the code.
7 | dartanalyzer --strong --fatal-warnings .
8 |
9 | # Test the entire test directory
10 | pub run test test/
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | **/dgph
2 | *.mode1v3
3 | *.mode2v3
4 | *.moved-aside
5 | *.pbxuser
6 | *.perspectivev3
7 | **/*sync/
8 | .sconsign.dblite
9 | .tags*
10 | **/.vagrant/
11 | **/DerivedData/
12 | Icon?
13 | **/Pods/
14 | **/.symlinks/
15 | profile
16 | xcuserdata
17 | **/.generated/
18 | Flutter/App.framework
19 | Flutter/Flutter.framework
20 | Flutter/Flutter.podspec
21 | Flutter/Generated.xcconfig
22 | Flutter/ephemeral/
23 | Flutter/app.flx
24 | Flutter/app.zip
25 | Flutter/flutter_assets/
26 | Flutter/flutter_export_environment.sh
27 | ServiceDefinitions.json
28 | Runner/GeneratedPluginRegistrant.*
29 |
30 | # Exceptions to above rules.
31 | !default.mode1v3
32 | !default.mode2v3
33 | !default.pbxuser
34 | !default.perspectivev3
35 |
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 12.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import Flutter
2 | import UIKit
3 |
4 | import app_links
5 |
6 | @main
7 | @objc class AppDelegate: FlutterAppDelegate {
8 | override func application(
9 | _ application: UIApplication,
10 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
11 | ) -> Bool {
12 | GeneratedPluginRegistrant.register(with: self)
13 | if let url = AppLinks.shared.getLink(launchOptions: launchOptions) {
14 | AppLinks.shared.handleLink(url: url)
15 | return true
16 | }
17 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/aayush2622/Dartotsu/52823a4c55b7883ad768026ee9cb72152c810a06/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/ios/RunnerTests/RunnerTests.swift:
--------------------------------------------------------------------------------
1 | import Flutter
2 | import UIKit
3 | import XCTest
4 |
5 | class RunnerTests: XCTestCase {
6 |
7 | func testExample() {
8 | // If you add code to the Runner application, consider adding tests here.
9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/l10n.yaml:
--------------------------------------------------------------------------------
1 |
2 | arb-dir: assets/translations
3 | template-arb-file: app_en.arb
4 | output-dir: lib/l10n
5 | output-localization-file: app_localizations.dart
6 | synthetic-package: false
7 | preferred-supported-locales:
8 | - en
9 |
--------------------------------------------------------------------------------
/lib/Adaptor/Episode/Widget/HandleProgress.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:provider/provider.dart';
3 |
4 | import '../../../Preferences/PrefManager.dart';
5 | import '../../../Services/ServiceSwitcher.dart';
6 |
7 | Widget handleProgress({
8 | required BuildContext context,
9 | required int mediaId,
10 | required dynamic ep,
11 | required double width,
12 | }) {
13 | var sourceName =
14 | Provider.of(context).currentService.getName;
15 | var currentProgress = loadCustomData("$mediaId-$ep-$sourceName-current");
16 | var maxProgress = loadCustomData("$mediaId-$ep-$sourceName-max");
17 | if (currentProgress == null || maxProgress == null || maxProgress == 0) {
18 | return const SizedBox.shrink();
19 | }
20 |
21 | double progressValue = (currentProgress / maxProgress).clamp(0.0, 1.0);
22 |
23 | return SizedBox(
24 | width: width,
25 | height: 3.4,
26 | child: Stack(
27 | children: [
28 | Container(
29 | color: Colors.grey,
30 | ),
31 | FractionallySizedBox(
32 | widthFactor: progressValue,
33 | child: Container(
34 | color: Theme.of(context).primaryColor,
35 | ),
36 | ),
37 | ],
38 | ),
39 | );
40 | }
41 |
--------------------------------------------------------------------------------
/lib/Adaptor/Media/Widgets/MediaReleaseingIndicator.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | Widget ReleasingIndicator() {
4 | return Positioned(
5 | bottom: -3,
6 | left: -2,
7 | child: Card(
8 | shape: RoundedRectangleBorder(
9 | borderRadius: BorderRadius.circular(8.0),
10 | ),
11 | child: Container(
12 | width: 16,
13 | height: 16,
14 | decoration: BoxDecoration(
15 | color: const Color(0xFF6BF170),
16 | border: Border.all(
17 | color: const Color(0xFF208358),
18 | width: 2.0,
19 | ),
20 | borderRadius: BorderRadius.circular(8.0),
21 | ),
22 | ),
23 | ),
24 | );
25 | }
26 |
--------------------------------------------------------------------------------
/lib/Adaptor/Settings/SettingsAdaptor.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 |
3 | import '../../DataClass/Setting.dart';
4 | import 'SettingsItem.dart';
5 |
6 | class SettingsAdaptor extends StatelessWidget {
7 | final List settings;
8 |
9 | const SettingsAdaptor({super.key, required this.settings});
10 |
11 | @override
12 | Widget build(BuildContext context) {
13 | // adaptor for settings so that it can be reused, see Settings.dart to see what can be passed
14 | return Column(
15 | children: settings.map((setting) {
16 | switch (setting.type) {
17 | case SettingType.normal:
18 | return SettingItem(setting: setting);
19 | case SettingType.switchType:
20 | return SettingSwitchItem(setting: setting);
21 | case SettingType.slider:
22 | return SettingSliderItem(setting: setting);
23 | case SettingType.inputBox:
24 | return SettingInputBoxItem(setting: setting);
25 | }
26 | }).toList(),
27 | );
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/lib/Api/Anilist/AnilistMutations.dart:
--------------------------------------------------------------------------------
1 | import 'package:dartotsu/DataClass/Media.dart';
2 | import 'package:dartotsu/Functions/Function.dart';
3 | import 'package:dartotsu/Functions/string_extensions.dart';
4 | import 'package:dartotsu/Services/Api/Mutations.dart';
5 | import 'package:flutter/cupertino.dart';
6 |
7 | import 'Anilist.dart';
8 | import 'Data/data.dart';
9 |
10 | part 'AnilistMutations/DeleteFromList.dart';
11 | part 'AnilistMutations/SetProgress.dart';
12 | part 'AnilistMutations/SetUserList.dart';
13 |
14 | class AnilistMutations extends Mutations {
15 | final Future Function(
16 | String query, {
17 | String variables,
18 | bool force,
19 | bool useToken,
20 | bool show,
21 | }) executeQuery;
22 |
23 | AnilistMutations(this.executeQuery);
24 |
25 | @override
26 | Future editList(Media media, {List? customList}) =>
27 | _editList(media, customList: customList);
28 |
29 | @override
30 | Future deleteFromList(Media media) => _deleteFromList(media);
31 |
32 | @override
33 | Future setProgress(Media media, String episode) => _setProgress(media, episode);
34 | }
35 |
--------------------------------------------------------------------------------
/lib/Api/Anilist/AnilistMutations/DeleteFromList.dart:
--------------------------------------------------------------------------------
1 | part of '../AnilistMutations.dart';
2 |
3 | extension on AnilistMutations {
4 | Future _deleteFromList(Media media) async {
5 |
6 | if (media.userListId == null) {
7 | var id = await getMediaListId(media);
8 | if (id == null) {
9 | debugPrint('MediaListId not found for media: ${media.name}');
10 | return;
11 | }
12 | media.userListId = id;
13 | }
14 | var query = '''
15 | mutation(\$id: Int) {
16 | DeleteMediaListEntry(id: \$id) {
17 | deleted
18 | }
19 | }
20 | '''.trim();
21 | var variables = '{''"id": ${media.userListId}''}';
22 | await executeQuery