├── .github
├── ISSUE_TEMPLATE
│ ├── bug-反馈.md
│ └── 功能请求.md
└── workflows
│ ├── alpha.yml
│ └── release.yml
├── .gitignore
├── .metadata
├── .vscode
├── launch.json
└── settings.json
├── LICENSE
├── README.md
├── analysis_options.yaml
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── debug
│ │ ├── AndroidManifest.xml
│ │ ├── ic_launcher-playstore.png
│ │ └── res
│ │ │ ├── drawable
│ │ │ └── ic_launcher_foreground.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── 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_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
│ │ │ └── ic_launcher_background.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── ic_launcher-playstore.png
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── orz12
│ │ │ │ └── PiliPalaX
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-anydpi-v24
│ │ │ └── ic_notification_icon.xml
│ │ │ ├── drawable-hdpi-v26
│ │ │ └── ic_launcher_monochrome.png
│ │ │ ├── drawable-hdpi
│ │ │ ├── ic_notification_icon.png
│ │ │ └── splash.png
│ │ │ ├── drawable-mdpi-v26
│ │ │ └── ic_launcher_monochrome.png
│ │ │ ├── drawable-mdpi
│ │ │ ├── ic_notification_icon.png
│ │ │ └── splash.png
│ │ │ ├── drawable-night-hdpi
│ │ │ └── splash.png
│ │ │ ├── drawable-night-mdpi
│ │ │ └── splash.png
│ │ │ ├── drawable-night-v21
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── drawable-night-xhdpi
│ │ │ └── splash.png
│ │ │ ├── drawable-night-xxhdpi
│ │ │ └── splash.png
│ │ │ ├── drawable-night-xxxhdpi
│ │ │ └── splash.png
│ │ │ ├── drawable-night
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── drawable-v21
│ │ │ ├── background.png
│ │ │ └── launch_background.xml
│ │ │ ├── drawable-xhdpi-v26
│ │ │ └── ic_launcher_monochrome.png
│ │ │ ├── drawable-xhdpi
│ │ │ ├── ic_notification_icon.png
│ │ │ └── splash.png
│ │ │ ├── drawable-xxhdpi-v26
│ │ │ └── ic_launcher_monochrome.png
│ │ │ ├── drawable-xxhdpi
│ │ │ ├── ic_notification_icon.png
│ │ │ └── splash.png
│ │ │ ├── drawable-xxxhdpi-v26
│ │ │ └── ic_launcher_monochrome.png
│ │ │ ├── drawable-xxxhdpi
│ │ │ └── splash.png
│ │ │ ├── drawable
│ │ │ ├── background.png
│ │ │ ├── ic_baseline_forward_10_24.xml
│ │ │ ├── ic_baseline_replay_10_24.xml
│ │ │ ├── ic_launcher_background.xml
│ │ │ ├── ic_launcher_foreground.xml
│ │ │ ├── ic_launcher_monochrome.xml
│ │ │ ├── ic_notification_icon.xml
│ │ │ └── launch_background.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_round.png
│ │ │ ├── raw
│ │ │ └── keep.xml
│ │ │ ├── values-night-v31
│ │ │ └── styles.xml
│ │ │ ├── values-night
│ │ │ └── styles.xml
│ │ │ ├── values-v31
│ │ │ └── styles.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ └── styles.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── assets
├── fonts
│ ├── Jura-Bold.ttf
│ └── fansCard.ttf
├── images
│ ├── ai.png
│ ├── big-vip.png
│ ├── dm.svg
│ ├── dm_gray.png
│ ├── dm_white.png
│ ├── error.svg
│ ├── live.gif
│ ├── live.png
│ ├── live
│ │ └── default_bg.webp
│ ├── loading.gif
│ ├── loading.png
│ ├── logo
│ │ ├── logo_android.png
│ │ ├── logo_android_2.png
│ │ └── logo_ios.png
│ ├── lv
│ │ ├── lv0.png
│ │ ├── lv1.png
│ │ ├── lv2.png
│ │ ├── lv3.png
│ │ ├── lv4.png
│ │ ├── lv5.png
│ │ └── lv6.png
│ ├── noface.jpeg
│ ├── play.png
│ ├── play.svg
│ ├── run-pokemon.gif
│ ├── tv.svg
│ ├── up.svg
│ ├── up_gray.png
│ ├── view.svg
│ ├── view_gray.png
│ └── view_white.png
└── screenshots
│ ├── 174shots_so.png
│ ├── 510shots_so.png
│ ├── 850shots_so.png
│ ├── bangumi.png
│ ├── bangumi_detail.png
│ ├── dynamic.png
│ ├── home.png
│ ├── main_screen.png
│ ├── media.png
│ ├── member.png
│ ├── search.png
│ └── set.png
├── change_log
├── 1.0.0.0817.md
├── 1.0.1.0817.md
├── 1.0.10.1016.md
├── 1.0.11.1112.md
├── 1.0.12.1114.md
├── 1.0.13.1217.md
├── 1.0.14.1225.md
├── 1.0.15.0101.md
├── 1.0.16.0102.md
├── 1.0.17.0125.md
├── 1.0.18.0130.md
├── 1.0.19.0131.md
├── 1.0.2.0819.md
├── 1.0.3.0821.md
├── 1.0.4.0822.md
├── 1.0.5.0826.md
├── 1.0.6.0902.md
├── 1.0.7.0908.md
├── 1.0.8.0917.md
└── 1.0.9.1015.md
├── fastlane
└── metadata
│ └── android
│ ├── en-US
│ ├── full_description.txt
│ ├── images
│ │ ├── featureGraphic.png
│ │ ├── icon.png
│ │ └── phoneScreenshots
│ │ │ ├── 1.png
│ │ │ ├── 2.png
│ │ │ └── 3.png
│ ├── short_description.txt
│ └── title.txt
│ └── zh-CN
│ ├── full_description.txt
│ ├── images
│ ├── featureGraphic.png
│ ├── icon.png
│ └── phoneScreenshots
│ │ ├── 1.png
│ │ ├── 2.png
│ │ └── 3.png
│ ├── short_description.txt
│ └── title.txt
├── 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
│ │ ├── 100.png
│ │ ├── 1024.png
│ │ ├── 114.png
│ │ ├── 120.png
│ │ ├── 144.png
│ │ ├── 152.png
│ │ ├── 167.png
│ │ ├── 180.png
│ │ ├── 20.png
│ │ ├── 29.png
│ │ ├── 40.png
│ │ ├── 50.png
│ │ ├── 57.png
│ │ ├── 58.png
│ │ ├── 60.png
│ │ ├── 72.png
│ │ ├── 76.png
│ │ ├── 80.png
│ │ ├── 87.png
│ │ └── Contents.json
│ ├── LaunchBackground.imageset
│ │ ├── Contents.json
│ │ ├── background.png
│ │ └── darkbackground.png
│ └── LaunchImage.imageset
│ │ ├── Contents.json
│ │ ├── LaunchImage.png
│ │ ├── LaunchImage@2x.png
│ │ ├── LaunchImage@3x.png
│ │ ├── LaunchImageDark.png
│ │ ├── LaunchImageDark@2x.png
│ │ ├── LaunchImageDark@3x.png
│ │ └── README.md
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Info.plist
│ └── Runner-Bridging-Header.h
├── lib
├── common
│ ├── constants.dart
│ ├── skeleton
│ │ ├── dynamic_card.dart
│ │ ├── media_bangumi.dart
│ │ ├── skeleton.dart
│ │ ├── video_card_h.dart
│ │ ├── video_card_v.dart
│ │ └── video_reply.dart
│ └── widgets
│ │ ├── animated_dialog.dart
│ │ ├── app_expansion_panel_list.dart
│ │ ├── appbar.dart
│ │ ├── audio_video_progress_bar.dart
│ │ ├── badge.dart
│ │ ├── content_container.dart
│ │ ├── custom_toast.dart
│ │ ├── html_render.dart
│ │ ├── http_error.dart
│ │ ├── list_sheet.dart
│ │ ├── live_card.dart
│ │ ├── my_dialog.dart
│ │ ├── network_img_layer.dart
│ │ ├── no_data.dart
│ │ ├── overlay_pop.dart
│ │ ├── pull_to_refresh_header.dart
│ │ ├── sliver_header.dart
│ │ ├── spring_physics.dart
│ │ ├── stat
│ │ ├── danmu.dart
│ │ └── view.dart
│ │ ├── video_card_h.dart
│ │ ├── video_card_v.dart
│ │ └── video_popup_menu.dart
├── http
│ ├── api.dart
│ ├── bangumi.dart
│ ├── black.dart
│ ├── common.dart
│ ├── constants.dart
│ ├── danmaku.dart
│ ├── danmaku_block.dart
│ ├── dynamics.dart
│ ├── fan.dart
│ ├── follow.dart
│ ├── html.dart
│ ├── index.dart
│ ├── init.dart
│ ├── interceptor.dart
│ ├── interceptor_anonymity.dart
│ ├── live.dart
│ ├── login.dart
│ ├── member.dart
│ ├── msg.dart
│ ├── reply.dart
│ ├── search.dart
│ ├── user.dart
│ └── video.dart
├── main.dart
├── models
│ ├── bangumi
│ │ ├── info.dart
│ │ └── list.dart
│ ├── common
│ │ ├── business_type.dart
│ │ ├── color_type.dart
│ │ ├── dynamic_badge_mode.dart
│ │ ├── dynamics_type.dart
│ │ ├── nav_bar_config.dart
│ │ ├── rank_type.dart
│ │ ├── rcmd_type.dart
│ │ ├── reply_sort_type.dart
│ │ ├── reply_type.dart
│ │ ├── search_type.dart
│ │ ├── side_bar_position.dart
│ │ ├── tab_type.dart
│ │ ├── theme_type.dart
│ │ └── up_panel_position.dart
│ ├── danmaku
│ │ ├── dm.pb.dart
│ │ ├── dm.pbenum.dart
│ │ ├── dm.pbjson.dart
│ │ ├── dm.pbserver.dart
│ │ └── dm.proto
│ ├── dynamics
│ │ ├── result.dart
│ │ └── up.dart
│ ├── fans
│ │ └── result.dart
│ ├── follow
│ │ └── result.dart
│ ├── github
│ │ └── latest.dart
│ ├── home
│ │ └── rcmd
│ │ │ └── result.dart
│ ├── live
│ │ ├── item.dart
│ │ ├── room_info.dart
│ │ └── room_info_h5.dart
│ ├── login
│ │ └── index.dart
│ ├── member
│ │ ├── archive.dart
│ │ ├── coin.dart
│ │ ├── info.dart
│ │ ├── seasons.dart
│ │ └── tags.dart
│ ├── model_hot_video_item.dart
│ ├── model_owner.dart
│ ├── model_owner.g.dart
│ ├── model_rec_video_item.dart
│ ├── model_rec_video_item.g.dart
│ ├── msg
│ │ ├── account.dart
│ │ ├── msgfeed_at_me.dart
│ │ ├── msgfeed_like_me.dart
│ │ ├── msgfeed_reply_me.dart
│ │ ├── msgfeed_sys_msg.dart
│ │ ├── msgfeed_unread.dart
│ │ └── session.dart
│ ├── search
│ │ ├── hot.dart
│ │ ├── hot.g.dart
│ │ ├── result.dart
│ │ └── suggest.dart
│ ├── user
│ │ ├── black.dart
│ │ ├── danmaku_block.dart
│ │ ├── fav_detail.dart
│ │ ├── fav_folder.dart
│ │ ├── history.dart
│ │ ├── info.dart
│ │ ├── info.g.dart
│ │ ├── my_emote.dart
│ │ ├── stat.dart
│ │ ├── stat.g.dart
│ │ ├── sub_detail.dart
│ │ └── sub_folder.dart
│ ├── video
│ │ ├── ai.dart
│ │ ├── play
│ │ │ ├── CDN.dart
│ │ │ ├── quality.dart
│ │ │ ├── subtitle.dart
│ │ │ └── url.dart
│ │ └── reply
│ │ │ ├── config.dart
│ │ │ ├── content.dart
│ │ │ ├── data.dart
│ │ │ ├── emote.dart
│ │ │ ├── item.dart
│ │ │ ├── member.dart
│ │ │ ├── page.dart
│ │ │ ├── top_replies.dart
│ │ │ └── upper.dart
│ └── video_detail_res.dart
├── pages
│ ├── about
│ │ └── index.dart
│ ├── bangumi
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── view.dart
│ │ └── widgets
│ │ │ ├── bangumi_card_v.dart
│ │ │ └── bangumi_panel.dart
│ ├── blacklist
│ │ └── index.dart
│ ├── danmaku
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── danmaku_block
│ │ └── index.dart
│ ├── dynamics
│ │ ├── controller.dart
│ │ ├── detail
│ │ │ ├── controller.dart
│ │ │ ├── index.dart
│ │ │ └── view.dart
│ │ ├── index.dart
│ │ ├── tab
│ │ │ ├── controller.dart
│ │ │ ├── index.dart
│ │ │ └── view.dart
│ │ ├── view.dart
│ │ └── widgets
│ │ │ ├── action_panel.dart
│ │ │ ├── additional_panel.dart
│ │ │ ├── article_panel.dart
│ │ │ ├── author_panel.dart
│ │ │ ├── content_panel.dart
│ │ │ ├── dynamic_panel.dart
│ │ │ ├── forward_panel.dart
│ │ │ ├── live_panel.dart
│ │ │ ├── live_rcmd_panel.dart
│ │ │ ├── pic_panel.dart
│ │ │ ├── rich_node_panel.dart
│ │ │ ├── up_panel.dart
│ │ │ └── video_panel.dart
│ ├── emote
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── fan
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── view.dart
│ │ └── widgets
│ │ │ └── fan_item.dart
│ ├── fav
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── view.dart
│ │ └── widgets
│ │ │ └── item.dart
│ ├── fav_detail
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── view.dart
│ │ └── widget
│ │ │ └── fav_video_card.dart
│ ├── fav_search
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── follow
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── view.dart
│ │ └── widgets
│ │ │ ├── follow_item.dart
│ │ │ ├── follow_list.dart
│ │ │ └── owner_follow_list.dart
│ ├── follow_search
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── history
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── view.dart
│ │ └── widgets
│ │ │ └── item.dart
│ ├── history_search
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── home
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── view.dart
│ │ └── widgets
│ │ │ └── app_bar.dart
│ ├── hot
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── html
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── later
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── live
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── view.dart
│ │ └── widgets
│ │ │ └── live_item.dart
│ ├── live_room
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── view.dart
│ │ └── widgets
│ │ │ └── bottom_control.dart
│ ├── login
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── main
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── media
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── member
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── view.dart
│ │ └── widgets
│ │ │ ├── conis.dart
│ │ │ ├── profile.dart
│ │ │ └── seasons.dart
│ ├── member_archive
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── member_coin
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── view.dart
│ │ └── widgets
│ │ │ └── item.dart
│ ├── member_dynamics
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── member_like
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── member_search
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── member_season
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── view.dart
│ │ └── widgets
│ │ │ └── item.dart
│ ├── member_seasons_and_series
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── member_series
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── view.dart
│ │ └── widgets
│ │ │ └── item.dart
│ ├── mine
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── msg_feed_top
│ │ ├── at_me
│ │ │ ├── controller.dart
│ │ │ ├── index.dart
│ │ │ └── view.dart
│ │ ├── like_me
│ │ │ ├── controller.dart
│ │ │ ├── index.dart
│ │ │ └── view.dart
│ │ ├── reply_me
│ │ │ ├── controller.dart
│ │ │ ├── index.dart
│ │ │ └── view.dart
│ │ └── sys_msg
│ │ │ ├── controller.dart
│ │ │ ├── index.dart
│ │ │ └── view.dart
│ ├── preview
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── rank
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── view.dart
│ │ └── zone
│ │ │ ├── controller.dart
│ │ │ ├── index.dart
│ │ │ └── view.dart
│ ├── rcmd
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── search
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── view.dart
│ │ └── widgets
│ │ │ ├── hot_keyword.dart
│ │ │ └── search_text.dart
│ ├── search_panel
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── view.dart
│ │ └── widgets
│ │ │ ├── article_panel.dart
│ │ │ ├── live_panel.dart
│ │ │ ├── media_bangumi_panel.dart
│ │ │ ├── user_panel.dart
│ │ │ └── video_panel.dart
│ ├── search_result
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── setting
│ │ ├── controller.dart
│ │ ├── extra_setting.dart
│ │ ├── hidden_settings.dart
│ │ ├── index.dart
│ │ ├── pages
│ │ │ ├── color_select.dart
│ │ │ ├── display_mode.dart
│ │ │ ├── font_size_select.dart
│ │ │ ├── gesture_select.dart
│ │ │ ├── home_tabbar_set.dart
│ │ │ ├── logs.dart
│ │ │ └── play_speed_set.dart
│ │ ├── play_setting.dart
│ │ ├── privacy_setting.dart
│ │ ├── recommend_setting.dart
│ │ ├── style_setting.dart
│ │ ├── video_setting.dart
│ │ ├── view.dart
│ │ └── widgets
│ │ │ ├── select_dialog.dart
│ │ │ ├── select_item.dart
│ │ │ ├── slide_dialog.dart
│ │ │ └── switch_item.dart
│ ├── subscription
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── view.dart
│ │ └── widgets
│ │ │ └── item.dart
│ ├── subscription_detail
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── view.dart
│ │ └── widget
│ │ │ └── sub_video_card.dart
│ ├── video
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── introduction
│ │ │ ├── bangumi
│ │ │ │ ├── controller.dart
│ │ │ │ ├── index.dart
│ │ │ │ └── view.dart
│ │ │ ├── detail
│ │ │ │ ├── controller.dart
│ │ │ │ ├── index.dart
│ │ │ │ └── view.dart
│ │ │ └── widgets
│ │ │ │ ├── action_item.dart
│ │ │ │ ├── action_row_item.dart
│ │ │ │ ├── bangumi_intro_detail.dart
│ │ │ │ ├── fav_panel.dart
│ │ │ │ ├── group_panel.dart
│ │ │ │ ├── intro_detail.dart
│ │ │ │ ├── menu_row.dart
│ │ │ │ ├── page.dart
│ │ │ │ └── season.dart
│ │ ├── related
│ │ │ ├── controller.dart
│ │ │ ├── index.dart
│ │ │ └── view.dart
│ │ ├── reply
│ │ │ ├── controller.dart
│ │ │ ├── index.dart
│ │ │ ├── view.dart
│ │ │ └── widgets
│ │ │ │ ├── reply_item.dart
│ │ │ │ └── zan.dart
│ │ ├── reply_new
│ │ │ ├── index.dart
│ │ │ ├── toolbar_icon_button.dart
│ │ │ └── view.dart
│ │ ├── reply_reply
│ │ │ ├── controller.dart
│ │ │ ├── index.dart
│ │ │ └── view.dart
│ │ ├── view.dart
│ │ └── widgets
│ │ │ ├── ai_detail.dart
│ │ │ ├── app_bar.dart
│ │ │ ├── expandable_section.dart
│ │ │ └── header_control.dart
│ ├── webview
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ ├── whisper
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ └── view.dart
│ └── whisper_detail
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── view.dart
│ │ └── widget
│ │ └── chat_item.dart
├── plugin
│ └── pl_player
│ │ ├── controller.dart
│ │ ├── index.dart
│ │ ├── models
│ │ ├── bottom_control_type.dart
│ │ ├── bottom_progress_behavior.dart
│ │ ├── data_source.dart
│ │ ├── data_status.dart
│ │ ├── duration.dart
│ │ ├── fullscreen_mode.dart
│ │ ├── play_repeat.dart
│ │ ├── play_speed.dart
│ │ ├── play_status.dart
│ │ ├── player_gesture_action.dart
│ │ └── player_middle_gesture.dart
│ │ ├── utils.dart
│ │ ├── utils
│ │ └── fullscreen.dart
│ │ ├── view.dart
│ │ └── widgets
│ │ ├── app_bar_ani.dart
│ │ ├── backward_seek.dart
│ │ ├── bottom_control.dart
│ │ ├── common_btn.dart
│ │ ├── forward_seek.dart
│ │ └── play_pause_btn.dart
├── router
│ └── app_pages.dart
├── scripts
│ └── build.sh
├── services
│ ├── audio_handler.dart
│ ├── audio_session.dart
│ ├── loggeer.dart
│ ├── service_locator.dart
│ └── shutdown_timer_service.dart
└── utils
│ ├── app_scheme.dart
│ ├── cache_manage.dart
│ ├── danmaku.dart
│ ├── data.dart
│ ├── download.dart
│ ├── em.dart
│ ├── event_bus.dart
│ ├── extension.dart
│ ├── feed_back.dart
│ ├── global_data.dart
│ ├── grid.dart
│ ├── id_utils.dart
│ ├── login.dart
│ ├── proxy.dart
│ ├── recommend_filter.dart
│ ├── storage.dart
│ ├── url_utils.dart
│ ├── utils.dart
│ ├── video_utils.dart
│ └── wbi_sign.dart
├── linux
├── .gitignore
├── CMakeLists.txt
├── flutter
│ └── CMakeLists.txt
├── main.cc
├── my_application.cc
└── my_application.h
├── macos
├── .gitignore
├── Flutter
│ ├── Flutter-Debug.xcconfig
│ └── Flutter-Release.xcconfig
├── Podfile
├── Podfile.lock
├── 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
│ │ ├── 1024.png
│ │ ├── 128.png
│ │ ├── 16.png
│ │ ├── 256.png
│ │ ├── 32.png
│ │ ├── 512.png
│ │ ├── 64.png
│ │ └── Contents.json
│ ├── Base.lproj
│ └── MainMenu.xib
│ ├── Configs
│ ├── AppInfo.xcconfig
│ ├── Debug.xcconfig
│ ├── Release.xcconfig
│ └── Warnings.xcconfig
│ ├── DebugProfile.entitlements
│ ├── Info.plist
│ ├── MainFlutterWindow.swift
│ └── Release.entitlements
├── pubspec.lock
├── pubspec.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
└── splash
│ └── img
│ ├── dark-1x.png
│ ├── dark-2x.png
│ ├── dark-3x.png
│ ├── dark-4x.png
│ ├── light-1x.png
│ ├── light-2x.png
│ ├── light-3x.png
│ └── light-4x.png
└── windows
├── .gitignore
├── CMakeLists.txt
├── flutter
└── CMakeLists.txt
└── 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/ISSUE_TEMPLATE/bug-反馈.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug 反馈
3 | about: 描述你所遇到的bug
4 | title: "[Bug] "
5 | labels: bug
6 | assignees: ''
7 |
8 | ---
9 |
10 | ### 问题描述
11 |
12 | ### 复现步骤
13 |
14 |
15 | ### 预期行为
16 |
17 |
18 | ### 错误日志
19 |
20 |
21 |
22 | ```
23 |
24 | ```
25 |
26 |
27 |
28 | ### 相关信息
29 |
30 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/功能请求.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: 功能请求
3 | about: 对于功能的一些建议
4 | title: "[FR] "
5 | labels: enhancement
6 | assignees: ''
7 |
8 | ---
9 |
10 | ### 功能描述
11 | 请提供对所请求功能的清晰描述。
12 |
13 | ### 目标
14 | 请描述你希望通过这个功能实现的目标。
15 |
16 | ### 解决方案
17 | 如果你有任何关于如何实现这个功能的想法或建议,请在这里提供。
18 |
19 | ### 其他
20 | 请提供已实现该功能或类似功能的应用
21 |
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | // 使用 IntelliSense 了解相关属性。
3 | // 悬停以查看现有属性的描述。
4 | // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
5 | "version": "0.2.0",
6 | "configurations": [
7 | {
8 | "name": "pilipala",
9 | "request": "launch",
10 | "type": "dart"
11 | },
12 | {
13 | "name": "pilipala (profile mode)",
14 | "request": "launch",
15 | "type": "dart",
16 | "flutterMode": "profile"
17 | },
18 | {
19 | "name": "pilipala (release mode)",
20 | "request": "launch",
21 | "type": "dart",
22 | "flutterMode": "release"
23 | }
24 | ]
25 | }
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "editor.formatOnSave": true,
3 | "[dart]": {
4 | "editor.formatOnType": true
5 | }
6 | }
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | # This file configures the analyzer, which statically analyzes Dart code to
2 | # check for errors, warnings, and lints.
3 | #
4 | # The issues identified by the analyzer are surfaced in the UI of Dart-enabled
5 | # IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
6 | # invoked from the command line by running `flutter analyze`.
7 |
8 | # The following line activates a set of recommended lints for Flutter apps,
9 | # packages, and plugins designed to encourage good coding practices.
10 | include: package:flutter_lints/flutter.yaml
11 |
12 | linter:
13 | # The lint rules applied to this project can be customized in the
14 | # section below to disable rules from the `package:flutter_lints/flutter.yaml`
15 | # included above or to enable additional rules. A list of all available lints
16 | # and their documentation is published at
17 | # https://dart-lang.github.io/linter/lints/index.html.
18 | #
19 | # Instead of disabling a lint rule for the entire project in the
20 | # section below, it can also be suppressed for a single line of code
21 | # or a specific dart file by using the `// ignore: name_of_lint` and
22 | # `// ignore_for_file: name_of_lint` syntax on the line or in the file
23 | # producing the lint.
24 | rules:
25 | # avoid_print: false # Uncomment to disable the `avoid_print` rule
26 | # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
27 |
28 | # Additional information about this file can be found at
29 | # https://dart.dev/guides/language/analysis-options
30 |
--------------------------------------------------------------------------------
/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/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | -dontwarn com.android.org.conscrypt.SSLParametersImpl
2 | -dontwarn javax.annotation.Nullable
3 | -dontwarn org.apache.harmony.xnet.provider.jsse.SSLParametersImpl
--------------------------------------------------------------------------------
/android/app/src/debug/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/debug/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-hdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/debug/res/mipmap-hdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-hdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/debug/res/mipmap-hdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-mdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/debug/res/mipmap-mdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-mdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/debug/res/mipmap-mdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-xhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/debug/res/mipmap-xhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-xhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/debug/res/mipmap-xhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-xxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/debug/res/mipmap-xxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/android/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/android/app/src/debug/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 |
--------------------------------------------------------------------------------
/android/app/src/main/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/orz12/PiliPalaX/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.orz12.PiliPalaX
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 | import io.flutter.embedding.engine.FlutterEngine
5 | //import io.flutter.plugin.common.MethodChannel
6 | import com.ryanheise.audioservice.AudioServiceActivity
7 | import com.ryanheise.audioservice.AudioServicePlugin
8 | import android.os.Build
9 | import android.os.Bundle
10 | //import android.view.WindowManager.LayoutParams
11 | import fl.pip.FlPiPActivity
12 | import android.content.Context
13 | import androidx.annotation.NonNull
14 |
15 | //class AudioServiceActivity : FlPiPActivity() {
16 | class MainActivity: FlPiPActivity() {
17 | // private lateinit var methodChannel: MethodChannel
18 |
19 | override fun provideFlutterEngine(context: Context): FlutterEngine {
20 | return AudioServicePlugin.getFlutterEngine(context)
21 | }
22 | // override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
23 | // super.configureFlutterEngine(flutterEngine)
24 | // methodChannel = MethodChannel(flutterEngine!!.getDartExecutor()!!.getBinaryMessenger(), CHANNEL)
25 | // }
26 |
27 | // override fun onCreate(savedInstanceState: Bundle?) {
28 | // super.onCreate(savedInstanceState)
29 | // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
30 | // window.attributes.layoutInDisplayCutoutMode =
31 | // LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
32 | // }
33 | // }
34 |
35 | // override fun onUserLeaveHint() {
36 | // super.onUserLeaveHint()
37 | // methodChannel.invokeMethod("onUserLeaveHint", null)
38 | // }
39 |
40 | // companion object {
41 | // private const val CHANNEL = "onUserLeaveHint"
42 | // }
43 | }
44 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-anydpi-v24/ic_notification_icon.xml:
--------------------------------------------------------------------------------
1 |
7 |
11 |
16 |
21 |
26 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi-v26/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-hdpi-v26/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/ic_notification_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-hdpi/ic_notification_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-hdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi-v26/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-mdpi-v26/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/ic_notification_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-mdpi/ic_notification_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-mdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-hdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-night-hdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-mdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-night-mdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-v21/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-night-v21/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-xhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-night-xhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-xxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-night-xxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night-xxxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-night-xxxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-night/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-night/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-v21/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi-v26/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-xhdpi-v26/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/ic_notification_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-xhdpi/ic_notification_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-xhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi-v26/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-xxhdpi-v26/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/ic_notification_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-xxhdpi/ic_notification_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-xxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi-v26/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-xxxhdpi-v26/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable-xxxhdpi/splash.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/drawable/background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/ic_baseline_forward_10_24.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/ic_baseline_replay_10_24.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/ic_launcher_foreground.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
13 |
15 |
17 |
19 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/ic_notification_icon.xml:
--------------------------------------------------------------------------------
1 |
7 |
11 |
16 |
21 |
26 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/android/app/src/main/res/raw/keep.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night-v31/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
17 |
20 |
21 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
19 |
22 |
23 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values-v31/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
17 |
20 |
21 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #ffffff
4 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
19 |
23 |
24 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xms1024m -Xmx4096m
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Mon Oct 14 04:55:29 CST 2024
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
5 | zipStoreBase=GRADLE_USER_HOME
6 | zipStorePath=wrapper/dists
7 |
--------------------------------------------------------------------------------
/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 | maven { url "https://maven.aliyun.com/repository/google" }
14 | maven { url "https://maven.aliyun.com/repository/central" }
15 | maven { url "https://maven.aliyun.com/repository/jcenter" }
16 | maven { url "https://maven.aliyun.com/repository/public" }
17 | maven { url "http://download.flutter.io"
18 | allowInsecureProtocol = true
19 | }
20 | google()
21 | mavenCentral()
22 | gradlePluginPortal()
23 | }
24 | }
25 |
26 | plugins {
27 | id "dev.flutter.flutter-plugin-loader" version "1.0.0"
28 | id "com.android.application" version "8.7.0" apply false
29 | // id "com.android.library" version "8.7.0" apply false
30 | id "org.jetbrains.kotlin.android" version "2.0.20" apply false
31 | }
32 |
33 | include ":app"
--------------------------------------------------------------------------------
/assets/fonts/Jura-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/fonts/Jura-Bold.ttf
--------------------------------------------------------------------------------
/assets/fonts/fansCard.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/fonts/fansCard.ttf
--------------------------------------------------------------------------------
/assets/images/ai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/ai.png
--------------------------------------------------------------------------------
/assets/images/big-vip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/big-vip.png
--------------------------------------------------------------------------------
/assets/images/dm_gray.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/dm_gray.png
--------------------------------------------------------------------------------
/assets/images/dm_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/dm_white.png
--------------------------------------------------------------------------------
/assets/images/live.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/live.gif
--------------------------------------------------------------------------------
/assets/images/live.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/live.png
--------------------------------------------------------------------------------
/assets/images/live/default_bg.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/live/default_bg.webp
--------------------------------------------------------------------------------
/assets/images/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/loading.gif
--------------------------------------------------------------------------------
/assets/images/loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/loading.png
--------------------------------------------------------------------------------
/assets/images/logo/logo_android.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/logo/logo_android.png
--------------------------------------------------------------------------------
/assets/images/logo/logo_android_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/logo/logo_android_2.png
--------------------------------------------------------------------------------
/assets/images/logo/logo_ios.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/logo/logo_ios.png
--------------------------------------------------------------------------------
/assets/images/lv/lv0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/lv/lv0.png
--------------------------------------------------------------------------------
/assets/images/lv/lv1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/lv/lv1.png
--------------------------------------------------------------------------------
/assets/images/lv/lv2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/lv/lv2.png
--------------------------------------------------------------------------------
/assets/images/lv/lv3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/lv/lv3.png
--------------------------------------------------------------------------------
/assets/images/lv/lv4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/lv/lv4.png
--------------------------------------------------------------------------------
/assets/images/lv/lv5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/lv/lv5.png
--------------------------------------------------------------------------------
/assets/images/lv/lv6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/lv/lv6.png
--------------------------------------------------------------------------------
/assets/images/noface.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/noface.jpeg
--------------------------------------------------------------------------------
/assets/images/play.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/play.png
--------------------------------------------------------------------------------
/assets/images/play.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/run-pokemon.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/run-pokemon.gif
--------------------------------------------------------------------------------
/assets/images/tv.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/up_gray.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/up_gray.png
--------------------------------------------------------------------------------
/assets/images/view.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/images/view_gray.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/view_gray.png
--------------------------------------------------------------------------------
/assets/images/view_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/images/view_white.png
--------------------------------------------------------------------------------
/assets/screenshots/174shots_so.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/screenshots/174shots_so.png
--------------------------------------------------------------------------------
/assets/screenshots/510shots_so.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/screenshots/510shots_so.png
--------------------------------------------------------------------------------
/assets/screenshots/850shots_so.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/screenshots/850shots_so.png
--------------------------------------------------------------------------------
/assets/screenshots/bangumi.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/screenshots/bangumi.png
--------------------------------------------------------------------------------
/assets/screenshots/bangumi_detail.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/screenshots/bangumi_detail.png
--------------------------------------------------------------------------------
/assets/screenshots/dynamic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/screenshots/dynamic.png
--------------------------------------------------------------------------------
/assets/screenshots/home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/screenshots/home.png
--------------------------------------------------------------------------------
/assets/screenshots/main_screen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/screenshots/main_screen.png
--------------------------------------------------------------------------------
/assets/screenshots/media.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/screenshots/media.png
--------------------------------------------------------------------------------
/assets/screenshots/member.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/screenshots/member.png
--------------------------------------------------------------------------------
/assets/screenshots/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/screenshots/search.png
--------------------------------------------------------------------------------
/assets/screenshots/set.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/assets/screenshots/set.png
--------------------------------------------------------------------------------
/change_log/1.0.0.0817.md:
--------------------------------------------------------------------------------
1 | ## 1.0.0
2 |
3 | ### 初始版本
4 | + 直播、推荐、动态功能
5 | + 投稿、番剧播放功能
6 | + 播放器手势支持
7 | + 画质、音质、解码格式支持
8 | + 点赞、投币、收藏功能
9 | + 关注/取关、用户主页功能
10 | + 评论功能
11 | + 历史记录、稍后再看功能
--------------------------------------------------------------------------------
/change_log/1.0.1.0817.md:
--------------------------------------------------------------------------------
1 | ## 1.0.1
2 |
3 | ### 修复
4 | + 升级播放器依赖
5 | + android平台 AV1格式视频支持
6 | + 视频全屏功能
7 |
8 |
--------------------------------------------------------------------------------
/change_log/1.0.10.1016.md:
--------------------------------------------------------------------------------
1 | ## 1.0.10
2 |
3 | ### 修复
4 | + 长按倍速抬起后未恢复默认倍速
--------------------------------------------------------------------------------
/change_log/1.0.11.1112.md:
--------------------------------------------------------------------------------
1 | ## 1.0.11
2 |
3 | ### 新功能
4 | + 适配了原生媒体通知栏 @Daydreamer-riri
5 | + 视频主题图标 @Daydreamer-riri
6 | + 关闭软件后自动画中画播放
7 | + UP主分组管理
8 | + md2样式底栏
9 | +
10 |
11 |
12 | ### 修复
13 | + 历史记录记忆播放
14 | + 部分类型视频连播
15 | + 播放速度选择框不支持返回手势
16 | + 播放速度选择框不支持返回手势
17 | + 视频播放速度总是显示1.0X
18 | + 评论页面计数错误
19 | + 退出视频还有声音
20 |
21 |
22 | ### 优化
23 | + 视频加载速度
24 |
25 | 更多更新日志可在Github上查看
26 | 问题反馈、功能建议请查看「关于」页面。
--------------------------------------------------------------------------------
/change_log/1.0.12.1114.md:
--------------------------------------------------------------------------------
1 | ## 1.0.12
2 |
3 |
4 | ### 修复
5 | + iOS端视频播放时没有声音
6 | + 超过6分钟弹幕不显示
7 | + 视频详情页网络异常
8 |
9 |
10 | 更多更新日志可在Github上查看
11 | 问题反馈、功能建议请查看「关于」页面。
--------------------------------------------------------------------------------
/change_log/1.0.13.1217.md:
--------------------------------------------------------------------------------
1 | ## 1.0.13
2 |
3 |
4 | ### 新功能
5 | + 视频详情页稍后再看
6 | + 发送弹幕 感谢@orz12
7 | + 消息展示
8 | + up主页显示获赞数
9 | + up主页显示合集
10 | + 视频详情页「ai总结」增加开关
11 |
12 | ### 修复
13 | + 首页推荐问题(需要重新登录)
14 | + 长按倍速逻辑
15 | + 视频详情页网络异常
16 |
17 | ### 优化
18 | + 设置面板样式 感谢@GuMengYu @KoolShow
19 |
20 |
21 | 更多更新日志可在Github上查看
22 | 问题反馈、功能建议请查看「关于」页面。
23 |
--------------------------------------------------------------------------------
/change_log/1.0.14.1225.md:
--------------------------------------------------------------------------------
1 | ## 1.0.14
2 |
3 | 圣诞节快乐~ 🎉
4 |
5 | 大部分内容由@orz12提供,感谢👏
6 |
7 | ### 修复
8 | + 全屏弹幕消失
9 | + iOS全屏/退出全屏视频暂停
10 | + 个人主页关注状态
11 | + 视频合集向下滑动UI问题
12 | + 媒体库滑动底栏不隐藏
13 | + 个人主页动态加载问题 * 2
14 | + 未登录状态访问个人主页异常
15 | + 视频搜索标题特殊字符转义
16 | + iOS闪退
17 | + 消息页面夜间模式异常
18 | + 消息页面含有撤回消息时异常
19 | + 弹幕速度
20 |
21 | ### 优化
22 | + 全屏播放方案优化
23 | + 弹幕加载逻辑优化
24 | + 点赞、投币逻辑优化
25 | + 进度条及播放时间渲染优化
26 |
27 | 更多更新日志可在Github上查看
28 | 问题反馈、功能建议请查看「关于」页面。
29 |
--------------------------------------------------------------------------------
/change_log/1.0.15.0101.md:
--------------------------------------------------------------------------------
1 | ## 1.0.15
2 |
3 | 元旦快乐~ 🎉
4 |
5 | ### 功能
6 | + 转发动态评论展示
7 | + 推荐、最热、收藏视频增肌日期显示
8 |
9 | ### 修复
10 | + 全屏播放相关问题
11 | + 评论区@用户展示问题
12 | + 登录状态闪退问题
13 | + pip意外触发问题
14 | + 动态页tab切换样式问题
15 |
16 | ### 优化
17 | + 首页默认使用web端推荐
18 | + 取消iOS路由切换效果
19 | + 视频分享中添加Up主
20 |
21 | 更多更新日志可在Github上查看
22 | 问题反馈、功能建议请查看「关于」页面。
23 |
--------------------------------------------------------------------------------
/change_log/1.0.16.0102.md:
--------------------------------------------------------------------------------
1 | ## 1.0.16
2 |
3 |
4 | ### 功能
5 | + toast 背景支持透明度调节
6 |
7 | ### 修复
8 | + web端推荐未展示【已关注】
9 | + up主动态页异常
10 | + 未打开自动播放时,视频详情页异常
11 | + 视频暂停状态取消自动ip
12 |
13 |
14 | 更多更新日志可在Github上查看
15 | 问题反馈、功能建议请查看「关于」页面。
16 |
--------------------------------------------------------------------------------
/change_log/1.0.17.0125.md:
--------------------------------------------------------------------------------
1 | ## 1.0.17
2 |
3 |
4 | ### 功能
5 | + 视频全屏时隐藏进度条
6 | + 动态内容增加投稿跳转
7 | + 未开启自动播放时点击封面播放
8 | + 弹幕发送标识
9 | + 定时关闭
10 | + 推荐视频卡片拉黑up功能
11 | + 首页tabbar编辑排序
12 |
13 | ### 修复
14 | + 连续跳转搜索页未刷新
15 | + 搜索结果为空时页面异常
16 | + 评论区链接解析
17 | + 视频全屏状态栏背景色
18 | + 私信对话气泡位置
19 | + 设置up关注分组样式
20 | + 每次推荐请求数据相同
21 | + iOS代理网络异常
22 | + 双击切换播放状态无声
23 | + 设置自定义倍速白屏
24 | + 免登录查看1080p
25 |
26 | ### 优化
27 | + 首页web端推荐观看数展示
28 | + 首页web端推荐接口更新
29 | + 首页样式
30 | + 搜索页跳转
31 | + 弹幕资源优化
32 | + 图片渲染占用内存优化(部分)
33 | + 两次返回退出应用
34 | + schame 补充
35 |
36 |
37 |
38 | 更多更新日志可在Github上查看
39 | 问题反馈、功能建议请查看「关于」页面。
40 |
--------------------------------------------------------------------------------
/change_log/1.0.18.0130.md:
--------------------------------------------------------------------------------
1 | ## 1.0.18
2 |
3 |
4 | ### 功能
5 |
6 |
7 | ### 修复
8 |
9 |
10 | ### 优化
11 |
12 |
13 |
14 |
15 | 更多更新日志可在Github上查看
16 | 问题反馈、功能建议请查看「关于」页面。
17 |
--------------------------------------------------------------------------------
/change_log/1.0.19.0131.md:
--------------------------------------------------------------------------------
1 | ## 1.0.19
2 |
3 |
4 | ### 修复
5 | + 视频404、评论加载错误
6 | + bvav转换
7 |
8 | ### 优化
9 | + 视频详情页内存占用
10 |
11 |
12 |
13 |
14 | 更多更新日志可在Github上查看
15 | 问题反馈、功能建议请查看「关于」页面。
16 |
--------------------------------------------------------------------------------
/change_log/1.0.2.0819.md:
--------------------------------------------------------------------------------
1 | ## 1.0.2
2 |
3 | ### 新功能
4 | + 自动检查更新
5 | + 封面图片保存
6 | + 动态跳转番剧
7 | + 历史记录番剧记忆播放
8 | + 一键清空稍后再看
9 |
10 | ### 修复
11 | + 切换分P cid未切换
12 | + cookie存储问题
13 | + 登录/退出登录问题
14 |
15 | ### 优化
16 | + 页面空/异常状态样式
17 | + 退出登录提示
18 | + 请求节流
19 | + 全屏播放
--------------------------------------------------------------------------------
/change_log/1.0.3.0821.md:
--------------------------------------------------------------------------------
1 | ## 1.0.3
2 |
3 | 建议卸载1.0.2版本,重新安装
4 | ### 新功能
5 | + 底部播放进度条设置
6 | + 复制图片链接
7 |
8 |
9 | ### 修复
10 | + 用户数据格式修改
11 | + video Fit
12 | + 没有audio 资源的视频异常
13 | + 评论区域图片无法点击
14 | + 视频进度条拖动问题
15 |
16 | ### 优化
17 | + 页面空/异常状态样式
18 | + 部分页面样式
19 | + 图片预览页面样式
--------------------------------------------------------------------------------
/change_log/1.0.4.0822.md:
--------------------------------------------------------------------------------
1 | ## 1.0.4
2 |
3 | ### 新功能
4 | + 热搜刷新
5 | + 视频搜索排序、筛选
6 | + app字体大小自定义
7 | + app主题色自定义
8 | + 「课堂」类动态渲染
9 |
10 |
11 | ### 修复
12 | + 搜索词联想richText渲染异常
13 | + 部分动态点赞异常
14 | + 默认视频解码格式
15 | + 搜索页面返回搜索词未清空
16 | + 动态详情评论加载异常
17 | + 动态页面下拉刷新数据异常
18 |
19 | ### 优化
20 | + 一些样式修改
21 | + 取消热搜词缓存
--------------------------------------------------------------------------------
/change_log/1.0.5.0826.md:
--------------------------------------------------------------------------------
1 | ## 1.0.5
2 |
3 | 主要是bug修复跟一部分小功能,弹幕功能需要下一版。
4 | 问题反馈请前往QQ频道或提交issues。
5 | 感谢🙏酷友「无力感*」「斤斤计较呀」「Pseudopamine」
6 |
7 | ### 新功能
8 | + 高帧率支持
9 | + 默认评论排序设置
10 | + 默认动态类别设置
11 | + 动态合集查看
12 | + 同时观看人数
13 | + iOS路由切换效果
14 |
15 |
16 | ### 修复
17 | + 收藏夹翻页
18 | + 首页搜索框频繁点击消失
19 | + 评论排序切换空白
20 | + 快速返回首页
21 | + 重复进入个人中心页面数据未刷新
22 | + 动态goods数据异常
23 | + 大会员切换番剧
24 | + 高画质codes匹配
25 |
26 |
27 | ### 优化
28 | + 倍速选择
29 | + 播放器亮度记忆
30 | + 下载对应版本apk
--------------------------------------------------------------------------------
/change_log/1.0.6.0902.md:
--------------------------------------------------------------------------------
1 | ## 1.0.6
2 |
3 | 问题反馈、功能建议请查看「关于」页面。
4 |
5 | ### 新功能
6 | + 首页单列布局
7 | + 首页推荐展示播放量、弹幕数
8 | + 简单弹幕功能实现(持续开发中...)
9 | + 评论区搜索关键词开关 issues#46
10 | + 热搜榜隐藏功能 issues#35
11 | + 自动全屏 issues#37
12 | + 快速收藏功能
13 | + 双击快进/快退开关
14 | + 评论链接跳转视频
15 | + 支持移除单个稍后再看
16 | + app scheme外链跳转
17 |
18 |
19 | ### 修复
20 | + 杜比、无损音频切换
21 | + 收藏夹展示 issues#42
22 | + 搜索建议次 issues#47
23 |
24 |
25 | ### 优化
26 | + 倍速选择优化
27 | + 导航条沉浸
28 | + 取消Hero动画
29 | + 视频锁定逻辑
30 | + 登录逻辑优化
31 | + 图片预览样式
32 | + +评论区用户点击范围
33 | + 关注、粉丝页面优化
34 | + 关闭自动播放时播放器初始化逻辑
--------------------------------------------------------------------------------
/change_log/1.0.7.0908.md:
--------------------------------------------------------------------------------
1 | ## 1.0.7
2 |
3 | 默认倍速、直播弹幕、专栏等功能开发中
4 |
5 | ### 新功能
6 | + 弹幕设置、屏蔽功能
7 | + 不是很完美的后台播放功能
8 | + 不是很完美的画中画(pip)功能(Android端)
9 |
10 | ### 修复
11 | + 动态页面加载异常
12 | + 网络异常时页面空白
13 | + 竖屏全屏状态栏问题
14 | + iOS端代理请求异常
15 |
16 | ### 优化
17 | + 图片预览
18 | + 全屏播放时自动旋转
19 | + 转发内容增加视频标题
20 |
21 | 更多更新日志可在Github上查看
22 | 问题反馈、功能建议请查看「关于」页面。
23 |
--------------------------------------------------------------------------------
/change_log/1.0.8.0917.md:
--------------------------------------------------------------------------------
1 | ## 1.0.8
2 |
3 | 直播弹幕、循环播放等功能开发中
4 |
5 | ### 新功能
6 | + 用户拉黑功能
7 | + gif图片保存
8 | + 删除已看历史记录
9 |
10 | ### 修复
11 | + 弹幕数量较少
12 | + 弹幕屏蔽设置自动记忆
13 | + 动态页面渲染
14 | + 用户主页数据错乱
15 | + 大家都在搜空白
16 | + 默认自动全屏,顶部操作栏丢失
17 |
18 |
19 | ### 优化
20 | + 全屏状态栏区域显示优化
21 | + 图片保存至PiliPala文件夹
22 |
23 | 更多更新日志可在Github上查看
24 | 问题反馈、功能建议请查看「关于」页面。
25 |
--------------------------------------------------------------------------------
/change_log/1.0.9.1015.md:
--------------------------------------------------------------------------------
1 | ## 1.0.9
2 |
3 |
4 | ### 新功能
5 | + 自定义倍速、默认倍速
6 | + 历史记录搜索
7 | + 收藏夹搜索
8 | + 历史记录多选删除
9 | + 视频循环播放
10 | + 免登录看1080P
11 | + 评论区视频链接跳转
12 | + up主分组
13 | + up主投稿搜索
14 |
15 | ### 修复
16 | + 搜索视频标题乱码
17 | + 屏幕帧率
18 | + 动态页面渲染
19 |
20 |
21 |
22 | ### 优化
23 | + 快进手势
24 | + 视频简介链接匹配
25 | + 视频全屏时安全区域
26 |
27 | 更多更新日志可在Github上查看
28 | 问题反馈、功能建议请查看「关于」页面。
29 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/full_description.txt:
--------------------------------------------------------------------------------
1 | PiliPalaX is a third-party Bilibili client developed in Flutter,
2 | fork from PiliPala (https://github.com/guozhigq/pilipala).
3 |
4 | Top Features:
5 |
6 | * List of recommended videos
7 | * List of hottest videos
8 | * Popular live streams
9 | * List of bangumis
10 | * Block videos from blacklisted users
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/featureGraphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/fastlane/metadata/android/en-US/images/featureGraphic.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/fastlane/metadata/android/en-US/images/icon.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/short_description.txt:
--------------------------------------------------------------------------------
1 | A third-party Bilibili client developed in Flutter
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/title.txt:
--------------------------------------------------------------------------------
1 | PiliPalaX
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/full_description.txt:
--------------------------------------------------------------------------------
1 | PiliPalaX 是使用 Flutter 开发的 BiliBili 第三方客户端,
2 | 是由PiliPala仓库fork并进行了差异化开发的版本
3 |
4 | 主要功能:
5 |
6 | * 推荐视频列表
7 | * 最热视频列表
8 | * 热门直播
9 | * 番剧列表
10 | * 屏蔽黑名单内用户视频
11 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/images/featureGraphic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/fastlane/metadata/android/zh-CN/images/featureGraphic.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/fastlane/metadata/android/zh-CN/images/icon.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/images/phoneScreenshots/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/1.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/images/phoneScreenshots/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/2.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/images/phoneScreenshots/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/fastlane/metadata/android/zh-CN/images/phoneScreenshots/3.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/short_description.txt:
--------------------------------------------------------------------------------
1 | 使用 Flutter 开发的 BiliBili 第三方客户端
2 |
--------------------------------------------------------------------------------
/fastlane/metadata/android/zh-CN/title.txt:
--------------------------------------------------------------------------------
1 | PiliPalaX
2 |
--------------------------------------------------------------------------------
/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 | 11.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/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 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/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 fl_pip
2 | import UIKit
3 | import Flutter
4 |
5 | @main
6 | @objc class AppDelegate: FlFlutterAppDelegate {
7 | override func application(
8 | _ application: UIApplication,
9 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
10 | ) -> Bool {
11 | GeneratedPluginRegistrant.register(with: self)
12 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
13 | }
14 |
15 | override func registerPlugin(_ registry: FlutterPluginRegistry) {
16 | GeneratedPluginRegistrant.register(with: registry)
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/AppIcon.appiconset/100.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/AppIcon.appiconset/1024.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/AppIcon.appiconset/114.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/AppIcon.appiconset/120.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/AppIcon.appiconset/144.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/AppIcon.appiconset/152.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/AppIcon.appiconset/167.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/AppIcon.appiconset/180.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/AppIcon.appiconset/20.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/AppIcon.appiconset/29.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/AppIcon.appiconset/40.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/AppIcon.appiconset/50.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/AppIcon.appiconset/57.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/AppIcon.appiconset/58.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/AppIcon.appiconset/60.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/AppIcon.appiconset/72.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/AppIcon.appiconset/76.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/AppIcon.appiconset/80.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/AppIcon.appiconset/87.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "background.png",
5 | "idiom" : "universal"
6 | },
7 | {
8 | "appearances" : [
9 | {
10 | "appearance" : "luminosity",
11 | "value" : "dark"
12 | }
13 | ],
14 | "filename" : "darkbackground.png",
15 | "idiom" : "universal"
16 | }
17 | ],
18 | "info" : {
19 | "author" : "xcode",
20 | "version" : 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/LaunchBackground.imageset/background.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "LaunchImage.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "appearances" : [
10 | {
11 | "appearance" : "luminosity",
12 | "value" : "dark"
13 | }
14 | ],
15 | "filename" : "LaunchImageDark.png",
16 | "idiom" : "universal",
17 | "scale" : "1x"
18 | },
19 | {
20 | "filename" : "LaunchImage@2x.png",
21 | "idiom" : "universal",
22 | "scale" : "2x"
23 | },
24 | {
25 | "appearances" : [
26 | {
27 | "appearance" : "luminosity",
28 | "value" : "dark"
29 | }
30 | ],
31 | "filename" : "LaunchImageDark@2x.png",
32 | "idiom" : "universal",
33 | "scale" : "2x"
34 | },
35 | {
36 | "filename" : "LaunchImage@3x.png",
37 | "idiom" : "universal",
38 | "scale" : "3x"
39 | },
40 | {
41 | "appearances" : [
42 | {
43 | "appearance" : "luminosity",
44 | "value" : "dark"
45 | }
46 | ],
47 | "filename" : "LaunchImageDark@3x.png",
48 | "idiom" : "universal",
49 | "scale" : "3x"
50 | }
51 | ],
52 | "info" : {
53 | "author" : "xcode",
54 | "version" : 1
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/orz12/PiliPalaX/2da94140c2b49402dac2597aa6553bfc65b8663a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark@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 |
--------------------------------------------------------------------------------
/lib/common/widgets/appbar.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class AppBarWidget extends StatelessWidget implements PreferredSizeWidget {
4 | const AppBarWidget({
5 | required this.child,
6 | required this.controller,
7 | required this.visible,
8 | super.key,
9 | });
10 |
11 | final PreferredSizeWidget child;
12 | final AnimationController controller;
13 | final bool visible;
14 |
15 | @override
16 | Size get preferredSize => child.preferredSize;
17 |
18 | @override
19 | Widget build(BuildContext context) {
20 | visible ? controller.reverse() : controller.forward();
21 | return SlideTransition(
22 | position: Tween(
23 | begin: Offset.zero,
24 | end: const Offset(0, -1),
25 | ).animate(CurvedAnimation(
26 | parent: controller,
27 | curve: Curves.easeInOutBack,
28 | )),
29 | child: child,
30 | );
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/lib/common/widgets/content_container.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class ContentContainer extends StatelessWidget {
4 | final Widget? contentWidget;
5 | final Widget? bottomWidget;
6 | final bool isScrollable;
7 | final Clip? childClipBehavior;
8 |
9 | const ContentContainer(
10 | {super.key,
11 | this.contentWidget,
12 | this.bottomWidget,
13 | this.isScrollable = true,
14 | this.childClipBehavior});
15 |
16 | @override
17 | Widget build(BuildContext context) {
18 | return LayoutBuilder(
19 | builder: (BuildContext context, BoxConstraints constraints) {
20 | return SingleChildScrollView(
21 | clipBehavior: childClipBehavior ?? Clip.hardEdge,
22 | physics: isScrollable ? null : const NeverScrollableScrollPhysics(),
23 | child: ConstrainedBox(
24 | constraints: constraints.copyWith(
25 | minHeight: constraints.maxHeight,
26 | maxHeight: double.infinity,
27 | ),
28 | child: IntrinsicHeight(
29 | child: Column(
30 | children: [
31 | if (contentWidget != null)
32 | Expanded(
33 | child: contentWidget!,
34 | )
35 | else
36 | const Spacer(),
37 | if (bottomWidget != null) bottomWidget!,
38 | ],
39 | ),
40 | ),
41 | ),
42 | );
43 | },
44 | );
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/lib/common/widgets/custom_toast.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:hive/hive.dart';
3 | import 'package:PiliPalaX/utils/storage.dart';
4 |
5 | Box setting = GStorage.setting;
6 |
7 | class CustomToast extends StatelessWidget {
8 | const CustomToast({super.key, required this.msg});
9 |
10 | final String msg;
11 |
12 | @override
13 | Widget build(BuildContext context) {
14 | final double toastOpacity =
15 | setting.get(SettingBoxKey.defaultToastOp, defaultValue: 1.0).toDouble();
16 | return Container(
17 | margin:
18 | EdgeInsets.only(bottom: MediaQuery.of(context).padding.bottom + 30),
19 | padding: const EdgeInsets.symmetric(horizontal: 17, vertical: 10),
20 | decoration: BoxDecoration(
21 | color: Theme.of(context)
22 | .colorScheme
23 | .primaryContainer
24 | .withOpacity(toastOpacity),
25 | borderRadius: BorderRadius.circular(20),
26 | ),
27 | child: Text(
28 | msg,
29 | style: TextStyle(
30 | fontSize: 13,
31 | color: Theme.of(context).colorScheme.primary,
32 | ),
33 | ),
34 | );
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/lib/common/widgets/http_error.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_svg/flutter_svg.dart';
3 |
4 | class HttpError extends StatelessWidget {
5 | const HttpError(
6 | {required this.errMsg, required this.fn, this.btnText, super.key});
7 |
8 | final String? errMsg;
9 | final Function()? fn;
10 | final String? btnText;
11 |
12 | @override
13 | Widget build(BuildContext context) {
14 | return SliverToBoxAdapter(
15 | child: SizedBox(
16 | height: 400,
17 | child: Column(
18 | crossAxisAlignment: CrossAxisAlignment.center,
19 | mainAxisAlignment: MainAxisAlignment.center,
20 | children: [
21 | SvgPicture.asset(
22 | "assets/images/error.svg",
23 | height: 200,
24 | ),
25 | const SizedBox(height: 30),
26 | Text(
27 | errMsg ?? '请求异常',
28 | textAlign: TextAlign.center,
29 | style: Theme.of(context).textTheme.titleSmall,
30 | ),
31 | const SizedBox(height: 20),
32 | FilledButton.tonal(
33 | onPressed: () {
34 | fn!();
35 | },
36 | style: ButtonStyle(
37 | backgroundColor: WidgetStateProperty.resolveWith((states) {
38 | return Theme.of(context).colorScheme.primary.withAlpha(20);
39 | }),
40 | ),
41 | child: Text(
42 | btnText ?? '点击重试',
43 | style: TextStyle(color: Theme.of(context).colorScheme.primary),
44 | ),
45 | ),
46 | ],
47 | ),
48 | ),
49 | );
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/lib/common/widgets/my_dialog.dart:
--------------------------------------------------------------------------------
1 | import 'package:PiliPalaX/common/constants.dart';
2 | import 'package:flutter/material.dart';
3 | import 'package:flutter_html/flutter_html.dart';
4 |
5 | class MyDialog {
6 | static Future show(BuildContext context, Widget child) {
7 | return showDialog(
8 | barrierDismissible: true,
9 | context: context,
10 | builder: (BuildContext context) => Dialog(
11 | insetPadding: const EdgeInsets.all(0),
12 | child: Material(
13 | clipBehavior: Clip.hardEdge,
14 | borderRadius: StyleString.mdRadius,
15 | child: child,
16 | )),
17 | );
18 | }
19 |
20 | static Future showCorner(BuildContext context, Widget child) {
21 | return showDialog(
22 | barrierDismissible: true,
23 | context: context,
24 | builder: (BuildContext context) => Align(
25 | alignment: MediaQuery.of(context).orientation == Orientation.portrait
26 | ? Alignment.bottomRight
27 | : Alignment.topRight,
28 | child: Padding(
29 | padding: const EdgeInsets.all(8.0), // 设置外边距
30 | child: Material(
31 | clipBehavior: Clip.hardEdge,
32 | borderRadius: StyleString.mdRadius,
33 | child: child,
34 | )),
35 | ),
36 | );
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/lib/common/widgets/no_data.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_svg/flutter_svg.dart';
3 |
4 | class NoData extends StatelessWidget {
5 | const NoData({super.key});
6 |
7 | @override
8 | Widget build(BuildContext context) {
9 | return SliverToBoxAdapter(
10 | child: SizedBox(
11 | height: 400,
12 | child: Column(
13 | crossAxisAlignment: CrossAxisAlignment.center,
14 | mainAxisAlignment: MainAxisAlignment.center,
15 | children: [
16 | SvgPicture.asset(
17 | "assets/images/error.svg",
18 | height: 200,
19 | ),
20 | const SizedBox(height: 20),
21 | Text(
22 | '没有数据',
23 | textAlign: TextAlign.center,
24 | style: Theme.of(context).textTheme.titleSmall,
25 | ),
26 | ],
27 | ),
28 | ),
29 | );
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/lib/common/widgets/sliver_header.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class SliverHeaderDelegate extends SliverPersistentHeaderDelegate {
4 | SliverHeaderDelegate({required this.height, required this.child});
5 |
6 | final double height;
7 | final Widget child;
8 |
9 | @override
10 | Widget build(
11 | BuildContext context, double shrinkOffset, bool overlapsContent) {
12 | return child;
13 | }
14 |
15 | @override
16 | double get maxExtent => height;
17 |
18 | @override
19 | double get minExtent => height;
20 |
21 | @override
22 | bool shouldRebuild(covariant SliverPersistentHeaderDelegate oldDelegate) =>
23 | true;
24 | }
25 |
--------------------------------------------------------------------------------
/lib/common/widgets/spring_physics.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/cupertino.dart';
2 |
3 | class CustomTabBarViewScrollPhysics extends ScrollPhysics {
4 | const CustomTabBarViewScrollPhysics({super.parent});
5 |
6 | @override
7 | CustomTabBarViewScrollPhysics applyTo(ScrollPhysics? ancestor) {
8 | return CustomTabBarViewScrollPhysics(parent: buildParent(ancestor)!);
9 | }
10 |
11 | @override
12 | SpringDescription get spring => const SpringDescription(
13 | mass: 40,
14 | stiffness: 10,
15 | damping: 1,
16 | );
17 | }
--------------------------------------------------------------------------------
/lib/common/widgets/stat/danmu.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:PiliPalaX/utils/utils.dart';
3 |
4 | class StatDanMu extends StatelessWidget {
5 | final String? theme;
6 | final dynamic danmu;
7 | final String? size;
8 |
9 | const StatDanMu({super.key, this.theme, this.danmu, this.size});
10 |
11 | @override
12 | Widget build(BuildContext context) {
13 | Map colorObject = {
14 | 'white': Colors.white,
15 | 'gray': Theme.of(context).colorScheme.outline.withOpacity(0.8),
16 | 'black': Theme.of(context).colorScheme.onSurface.withOpacity(0.7),
17 | };
18 | Color color = colorObject[theme]!;
19 | return Row(
20 | children: [
21 | Icon(
22 | Icons.subtitles_outlined,
23 | size: 14,
24 | color: color,
25 | ),
26 | const SizedBox(width: 2),
27 | Text(
28 | Utils.numFormat(danmu!),
29 | style: TextStyle(
30 | fontSize: size == 'medium' ? 12 : 11,
31 | color: color,
32 | ),
33 | overflow: TextOverflow.clip,
34 | semanticsLabel: '${Utils.numFormat(danmu!)}条弹幕',
35 | )
36 | ],
37 | );
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/lib/common/widgets/stat/view.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:PiliPalaX/utils/utils.dart';
3 |
4 | class StatView extends StatelessWidget {
5 | final String? theme;
6 | final dynamic view;
7 | final String? size;
8 | final String? goto;
9 |
10 | const StatView({super.key, this.theme, this.view, this.size, this.goto});
11 |
12 | @override
13 | Widget build(BuildContext context) {
14 | Map colorObject = {
15 | 'white': Colors.white,
16 | 'gray': Theme.of(context).colorScheme.outline.withOpacity(0.8),
17 | 'black': Theme.of(context).colorScheme.onSurface.withOpacity(0.7),
18 | };
19 | Color color = colorObject[theme]!;
20 | return Row(
21 | children: [
22 | Icon(
23 | goto == 'picture'
24 | ? Icons.remove_red_eye_outlined
25 | : Icons.play_circle_outlined,
26 | size: 13,
27 | color: color,
28 | ),
29 | const SizedBox(width: 2),
30 | Text(
31 | Utils.numFormat(view!),
32 | style: TextStyle(
33 | fontSize: size == 'medium' ? 12 : 11,
34 | color: color,
35 | ),
36 | overflow: TextOverflow.clip,
37 | semanticsLabel:
38 | '${Utils.numFormat(view!)}次${goto == "picture" ? "浏览" : "播放"}',
39 | ),
40 | ],
41 | );
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/lib/http/bangumi.dart:
--------------------------------------------------------------------------------
1 | import '../models/bangumi/list.dart';
2 | import 'index.dart';
3 |
4 | class BangumiHttp {
5 | static Future bangumiList({int? page}) async {
6 | var res = await Request().get(Api.bangumiList, data: {'page': page});
7 | if (res.data['code'] == 0) {
8 | return {
9 | 'status': true,
10 | 'data': BangumiListDataModel.fromJson(res.data['data'])
11 | };
12 | } else {
13 | return {
14 | 'status': false,
15 | 'data': [],
16 | 'msg': res.data['message'],
17 | };
18 | }
19 | }
20 |
21 | static Future bangumiFollow({int? mid}) async {
22 | var res = await Request().get(Api.bangumiFollow, data: {'vmid': mid});
23 | if (res.data['code'] == 0) {
24 | return {
25 | 'status': true,
26 | 'data': BangumiListDataModel.fromJson(res.data['data'])
27 | };
28 | } else {
29 | return {
30 | 'status': false,
31 | 'data': [],
32 | 'msg': res.data['message'],
33 | };
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/lib/http/black.dart:
--------------------------------------------------------------------------------
1 | import '../models/user/black.dart';
2 | import 'index.dart';
3 |
4 | class BlackHttp {
5 | static Future blackList({required int pn, int? ps}) async {
6 | var res = await Request().get(Api.blackLst, data: {
7 | 'pn': pn,
8 | 'ps': ps ?? 50,
9 | 're_version': 0,
10 | 'jsonp': 'jsonp',
11 | 'csrf': await Request.getCsrf(),
12 | });
13 | if (res.data['code'] == 0) {
14 | return {
15 | 'status': true,
16 | 'data': BlackListDataModel.fromJson(res.data['data'])
17 | };
18 | } else {
19 | return {
20 | 'status': false,
21 | 'data': [],
22 | 'msg': res.data['message'],
23 | };
24 | }
25 | }
26 |
27 | // 移除黑名单
28 | static Future removeBlack({required int fid}) async {
29 | var res = await Request().post(
30 | Api.removeBlack,
31 | queryParameters: {
32 | 'act': 6,
33 | 'csrf': await Request.getCsrf(),
34 | 'fid': fid,
35 | 'jsonp': 'jsonp',
36 | 're_src': 116,
37 | },
38 | );
39 | if (res.data['code'] == 0) {
40 | return {
41 | 'status': true,
42 | 'data': [],
43 | 'msg': '操作成功',
44 | };
45 | } else {
46 | return {
47 | 'status': false,
48 | 'data': [],
49 | 'msg': res.data['message'],
50 | };
51 | }
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/lib/http/common.dart:
--------------------------------------------------------------------------------
1 | import 'index.dart';
2 |
3 | class CommonHttp {
4 | static Future unReadDynamic() async {
5 | var res = await Request().get(Api.getUnreadDynamic,
6 | data: {'alltype_offset': 0, 'video_offset': '', 'article_offset': 0});
7 | if (res.data['code'] == 0) {
8 | return {'status': true, 'data': res.data['data']['dyn_basic_infos']};
9 | } else {
10 | return {
11 | 'status': false,
12 | 'data': [],
13 | 'msg': res.data['message'],
14 | };
15 | }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/lib/http/constants.dart:
--------------------------------------------------------------------------------
1 | class HttpString {
2 | static const String baseUrl = 'https://www.bilibili.com';
3 | static const String apiBaseUrl = 'https://api.bilibili.com';
4 | static const String tUrl = 'https://api.vc.bilibili.com';
5 | static const String appBaseUrl = 'https://app.bilibili.com';
6 | static const String liveBaseUrl = 'https://api.live.bilibili.com';
7 | static const String passBaseUrl = 'https://passport.bilibili.com';
8 | static const String messageBaseUrl = 'https://message.bilibili.com';
9 | static const String spaceBaseUrl = 'https://space.bilibili.com';
10 | static const List validateStatusCodes = [
11 | 302,
12 | 304,
13 | 307,
14 | 400,
15 | 401,
16 | 403,
17 | 404,
18 | 405,
19 | 409,
20 | 412,
21 | 500,
22 | 503,
23 | 504,
24 | 509,
25 | 616,
26 | 617,
27 | 625,
28 | 626,
29 | 628,
30 | 629,
31 | 632,
32 | 643,
33 | 650,
34 | 652,
35 | 658,
36 | 662,
37 | 688,
38 | 689,
39 | 701,
40 | 799,
41 | 8888
42 | ];
43 | }
44 |
--------------------------------------------------------------------------------
/lib/http/danmaku_block.dart:
--------------------------------------------------------------------------------
1 | import '../models/user/danmaku_block.dart';
2 | import 'index.dart';
3 |
4 | class DanmakuFilterHttp {
5 | static Future danmakuFilter() async {
6 | var res = await Request().get(Api.danmakuFilter);
7 | if (res.data['code'] == 0) {
8 | return {
9 | 'status': true,
10 | 'data': DanmakuBlockDataModel.fromJson(res.data['data'])
11 | };
12 | } else {
13 | return {
14 | 'status': false,
15 | 'data': [],
16 | 'msg': res.data['message'],
17 | };
18 | }
19 | }
20 |
21 | static Future danmakuFilterDel({required int ids}) async {
22 | var res = await Request().post(
23 | Api.danmakuFilterDel,
24 | queryParameters: {
25 | 'ids': ids,
26 | 'csrf': await Request.getCsrf(),
27 | },
28 | );
29 | if (res.data['code'] == 0) {
30 | return {
31 | 'status': true,
32 | 'msg': '操作成功',
33 | };
34 | } else {
35 | return {
36 | 'status': false,
37 | 'msg': res.data['message'],
38 | };
39 | }
40 | }
41 |
42 | static Future danmakuFilterAdd({required String filter, required int type}) async {
43 | var res = await Request().post(
44 | Api.danmakuFilterAdd,
45 | queryParameters: {
46 | 'type': type,
47 | 'filter': filter,
48 | 'csrf': await Request.getCsrf(),
49 | },
50 | );
51 | if (res.data['code'] == 0) {
52 | return {
53 | 'status': true,
54 | 'data': Rule.fromJson(res.data['data']),
55 | };
56 | } else {
57 | return {
58 | 'status': false,
59 | 'msg': res.data['message'],
60 | };
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/lib/http/fan.dart:
--------------------------------------------------------------------------------
1 | import '../models/fans/result.dart';
2 | import 'index.dart';
3 |
4 | class FanHttp {
5 | static Future fans({int? vmid, int? pn, int? ps, String? orderType}) async {
6 | var res = await Request().get(Api.fans, data: {
7 | 'vmid': vmid,
8 | 'pn': pn,
9 | 'ps': ps,
10 | 'order': 'desc',
11 | 'order_type': orderType,
12 | });
13 | if (res.data['code'] == 0) {
14 | return {'status': true, 'data': FansDataModel.fromJson(res.data['data'])};
15 | } else {
16 | return {
17 | 'status': false,
18 | 'data': [],
19 | 'msg': res.data['message'],
20 | };
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/lib/http/follow.dart:
--------------------------------------------------------------------------------
1 | import '../models/follow/result.dart';
2 | import 'index.dart';
3 |
4 | class FollowHttp {
5 | static Future followings(
6 | {int? vmid, int? pn, int? ps, String? orderType}) async {
7 | var res = await Request().get(Api.followings, data: {
8 | 'vmid': vmid,
9 | 'pn': pn,
10 | 'ps': ps,
11 | 'order': 'desc',
12 | 'order_type': orderType,
13 | });
14 | if (res.data['code'] == 0) {
15 | return {
16 | 'status': true,
17 | 'data': FollowDataModel.fromJson(res.data['data'])
18 | };
19 | } else {
20 | return {
21 | 'status': false,
22 | 'data': [],
23 | 'msg': res.data['message'],
24 | };
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/lib/http/index.dart:
--------------------------------------------------------------------------------
1 | export 'api.dart';
2 | export 'init.dart';
3 |
--------------------------------------------------------------------------------
/lib/http/interceptor_anonymity.dart:
--------------------------------------------------------------------------------
1 | // ignore_for_file: avoid_print
2 |
3 | import 'dart:io';
4 | import 'package:dio/dio.dart';
5 | // import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
6 | import '../pages/mine/controller.dart';
7 | import 'api.dart';
8 |
9 | class AnonymityInterceptor extends Interceptor {
10 | static const List anonymityList = [
11 | Api.videoUrl,
12 | Api.videoIntro,
13 | Api.relatedList,
14 | Api.replyList,
15 | Api.replyReplyList,
16 | Api.searchSuggest,
17 | Api.searchByType,
18 | Api.heartBeat,
19 | Api.ab2c,
20 | Api.bangumiInfo,
21 | Api.liveRoomInfo,
22 | Api.onlineTotal,
23 | Api.webDanmaku,
24 | Api.dynamicDetail,
25 | Api.aiConclusion,
26 | Api.getSeasonDetailApi,
27 | ];
28 |
29 |
30 | @override
31 | void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
32 | if (MineController.anonymity) {
33 | String uri = options.uri.toString();
34 | for (var i in anonymityList) {
35 | // 如果请求的url包含无痕列表中的url,则清空cookie
36 | // 但需要保证匹配到url的后半部分不再出现/符号,否则会误伤
37 | int index = uri.indexOf(i);
38 | if (index == -1) continue;
39 | if (uri.lastIndexOf('/') >= index + i.length) continue;
40 | //SmartDialog.showToast('触发无痕模式\n\n$i\n\n${options.uri}');
41 | options.headers[HttpHeaders.cookieHeader] = "";
42 | if (options.data != null && options.data.csrf != null) {
43 | options.data.csrf = "";
44 | }
45 | break;
46 | }
47 | }
48 | handler.next(options);
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/lib/models/common/business_type.dart:
--------------------------------------------------------------------------------
1 | enum BusinessType {
2 | // 普通视频
3 | archive,
4 | // 剧集(番剧 / 影视)
5 | pgc,
6 | // 直播
7 | live,
8 | // 文章
9 | articleList,
10 | // 文章
11 | article,
12 | hiddenDurationType,
13 | showBadge
14 | }
15 |
16 | extension BusinessTypeExtension on BusinessType {
17 | String get type =>
18 | ['archive', 'pgc', 'live', 'article-list', 'article'][index];
19 | // 隐藏时长
20 | List get hiddenDurationType => ['live', 'article-list', 'article'];
21 | // 右上
22 | List get showBadge => ['pgc', 'article-list', 'article'];
23 | }
24 |
--------------------------------------------------------------------------------
/lib/models/common/color_type.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | final List