├── .github
└── workflows
│ ├── android-release.yml.bak
│ ├── ci_build_package.yml
│ ├── ci_release_by_tag.yml
│ └── ios-release.yml.bak
├── .gitignore
├── .gitmodules
├── .metadata
├── .run
├── runAppDebug.run.xml
└── runAppRelease.run.xml
├── CHANGELOG.MD
├── LICENSE
├── README.md
├── analysis_options.yaml
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ ├── proguard-rules.pro
│ ├── run_ikaros_app_keystore.jks
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── example
│ │ │ │ └── app
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-v21
│ │ │ └── launch_background.xml
│ │ │ ├── drawable
│ │ │ └── launch_background.xml
│ │ │ ├── mipmap-hdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-ldpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── playstore-icon.png
│ │ │ ├── values-night
│ │ │ └── styles.xml
│ │ │ └── values
│ │ │ └── styles.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle
├── assets
└── loading_placeholder.jpg
├── ios
├── .gitignore
├── Flutter
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ └── Release.xcconfig
├── Podfile
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
└── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── icon-1024.png
│ │ ├── icon-20@2x.png
│ │ ├── icon-20@3x.png
│ │ ├── icon-29@2x.png
│ │ ├── icon-29@3x.png
│ │ ├── icon-38@2x.png
│ │ ├── icon-38@3x.png
│ │ ├── icon-40@2x.png
│ │ ├── icon-40@3x.png
│ │ ├── icon-60@2x.png
│ │ ├── icon-60@3x.png
│ │ ├── icon-64@2x.png
│ │ ├── icon-64@3x.png
│ │ ├── icon-68@2x.png
│ │ ├── icon-76@2x.png
│ │ └── icon-83.5@2x.png
│ └── LaunchImage.imageset
│ │ ├── Contents.json
│ │ ├── LaunchImage.png
│ │ ├── LaunchImage@2x.png
│ │ ├── LaunchImage@3x.png
│ │ └── README.md
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Info.plist
│ └── Runner-Bridging-Header.h
├── lib
├── api
│ ├── actuator
│ │ └── ActuatorInfoApi.dart
│ ├── attachment
│ │ ├── AttachmentApi.dart
│ │ ├── AttachmentRelationApi.dart
│ │ ├── enums
│ │ │ └── AttachmentRelationType.dart
│ │ └── model
│ │ │ ├── AttachmentRelation.dart
│ │ │ ├── AttachmentRelation.g.dart
│ │ │ ├── VideoSubtitle.dart
│ │ │ └── VideoSubtitle.g.dart
│ ├── auth
│ │ ├── AuthApi.dart
│ │ └── AuthParams.dart
│ ├── collection
│ │ ├── EpisodeCollectionApi.dart
│ │ ├── SubjectCollectionApi.dart
│ │ ├── enums
│ │ │ └── CollectionType.dart
│ │ └── model
│ │ │ ├── EpisodeCollection.dart
│ │ │ ├── EpisodeCollection.g.dart
│ │ │ ├── SubjectCollection.dart
│ │ │ └── SubjectCollection.g.dart
│ ├── common
│ │ ├── PagingWrap.dart
│ │ └── PagingWrap.g.dart
│ ├── dandanplay
│ │ ├── DandanplayCommentApi.dart
│ │ ├── DandanplaySearchApi.dart
│ │ ├── enums
│ │ │ └── SearchEpisodesAnimeType.dart
│ │ └── model
│ │ │ ├── CommentEpisode.dart
│ │ │ ├── CommentEpisode.g.dart
│ │ │ ├── CommentEpisodeIdResponse.dart
│ │ │ ├── CommentEpisodeIdResponse.g.dart
│ │ │ ├── IkarosDanmukuEpisodesResponse.dart
│ │ │ ├── IkarosDanmukuEpisodesResponse.g.dart
│ │ │ ├── SearchEpisodeDetails.dart
│ │ │ ├── SearchEpisodeDetails.g.dart
│ │ │ ├── SearchEpisodesAnime.dart
│ │ │ ├── SearchEpisodesAnime.g.dart
│ │ │ ├── SearchEpisodesResponse.dart
│ │ │ └── SearchEpisodesResponse.g.dart
│ ├── dio_client.dart
│ ├── dio_interceptors.dart
│ ├── search
│ │ ├── IndicesApi.dart
│ │ └── model
│ │ │ ├── SubjectHint.dart
│ │ │ ├── SubjectHint.g.dart
│ │ │ ├── SubjectSearchResult.dart
│ │ │ └── SubjectSearchResult.g.dart
│ ├── subject
│ │ ├── EpisodeApi.dart
│ │ ├── SubjectApi.dart
│ │ ├── SubjectRelationApi.dart
│ │ ├── SubjectSyncApi.dart
│ │ ├── enums
│ │ │ ├── CollectionType.dart
│ │ │ ├── EpisodeGroup.dart
│ │ │ ├── SubjectRelationType.dart
│ │ │ ├── SubjectSyncPlatform.dart
│ │ │ └── SubjectType.dart
│ │ └── model
│ │ │ ├── Episode.dart
│ │ │ ├── Episode.g.dart
│ │ │ ├── EpisodeRecord.dart
│ │ │ ├── EpisodeRecord.g.dart
│ │ │ ├── EpisodeResource.dart
│ │ │ ├── EpisodeResource.g.dart
│ │ │ ├── Subject.dart
│ │ │ ├── Subject.g.dart
│ │ │ ├── SubjectMeta.dart
│ │ │ ├── SubjectMeta.g.dart
│ │ │ ├── SubjectRelation.dart
│ │ │ ├── SubjectRelation.g.dart
│ │ │ ├── SubjectSync.dart
│ │ │ ├── SubjectSync.g.dart
│ │ │ ├── Video.dart
│ │ │ └── Video.g.dart
│ └── user
│ │ ├── UserApi.dart
│ │ └── model
│ │ ├── User.dart
│ │ └── User.g.dart
├── collection
│ ├── collections.dart
│ └── episode_collections.dart
├── component
│ ├── dynamic_bar_icon.dart
│ ├── full_screen_Image.dart
│ ├── route_observer.dart
│ ├── setting.dart
│ └── subject
│ │ └── subject.dart
├── consts
│ ├── collection-const.dart
│ ├── subject_const.dart
│ └── tmp-const.dart
├── layout.dart
├── main.dart
├── player
│ ├── player_audio_desktop.dart
│ ├── player_audio_mobile.dart
│ ├── player_video_desktop.dart
│ └── player_video_mobile.dart
├── subject
│ ├── episode.dart
│ ├── search.dart
│ ├── subject.dart
│ └── subjects.dart
├── user
│ ├── login.dart
│ └── user.dart
└── utils
│ ├── device_info_utils.dart
│ ├── message_utils.dart
│ ├── number_utils.dart
│ ├── screen_utils.dart
│ ├── shared_prefs_utils.dart
│ ├── string_utils.dart
│ ├── throttle_utils.dart
│ ├── time_utils.dart
│ └── url_utils.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
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ │ └── AppIcon.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── app_icon_1024.png
│ │ │ ├── app_icon_128.png
│ │ │ ├── app_icon_16.png
│ │ │ ├── app_icon_256.png
│ │ │ ├── app_icon_32.png
│ │ │ ├── app_icon_512.png
│ │ │ └── app_icon_64.png
│ ├── Base.lproj
│ │ └── MainMenu.xib
│ ├── Configs
│ │ ├── AppInfo.xcconfig
│ │ ├── Debug.xcconfig
│ │ ├── Release.xcconfig
│ │ └── Warnings.xcconfig
│ ├── DebugProfile.entitlements
│ ├── Info.plist
│ ├── MainFlutterWindow.swift
│ └── Release.entitlements
└── RunnerTests
│ └── RunnerTests.swift
├── pubspec.lock
├── pubspec.yaml
├── pubspec_overrides.yaml
├── test
└── api
│ └── dandanplay
│ ├── DandanplayCommentApiTest.dart
│ └── DandanplaySearchApiTest.dart
├── web
├── favicon.png
├── icons
│ ├── Icon-192.png
│ ├── Icon-512.png
│ ├── Icon-maskable-192.png
│ └── Icon-maskable-512.png
├── index.html
└── manifest.json
└── windows
├── .gitignore
├── CMakeLists.txt
├── flutter
└── CMakeLists.txt
└── 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/workflows/android-release.yml.bak:
--------------------------------------------------------------------------------
1 | name: Flutter_Android
2 |
3 | on:
4 | push:
5 | branches:
6 | - release-*
7 | tags:
8 | - '*'
9 |
10 | jobs:
11 | build_android:
12 | runs-on: ubuntu-latest
13 |
14 | steps:
15 | - name: Checkout the code
16 | uses: actions/checkout@v2
17 |
18 | - name: Setup Java to compile Android project
19 | uses: actions/setup-java@v1
20 | with:
21 | java-version: '17.x'
22 |
23 | - name: Install and set Flutter version
24 | uses: subosito/flutter-action@v2
25 | with:
26 | flutter-version: '3.10.5'
27 | channel: 'stable'
28 |
29 | - name: Restore packages
30 | run: flutter pub get
31 |
32 | - name: Build Android App Bundle
33 | run: flutter build apk --release
34 |
35 | - name: Publish Android Artefacts
36 | uses: actions/upload-artifact@v1
37 | with:
38 | name: release-android-${{ github.ref_name }}
39 | path: build/app/outputs/flutter-apk
--------------------------------------------------------------------------------
/.github/workflows/ci_release_by_tag.yml:
--------------------------------------------------------------------------------
1 | name: Create Draft Release
2 |
3 | permissions:
4 | contents: write
5 | packages: write
6 |
7 | on:
8 | push:
9 | tags:
10 | - v[0-9]+.*
11 |
12 | jobs:
13 | create-release:
14 | runs-on: ubuntu-latest
15 | permissions:
16 | contents: write
17 | packages: write
18 | steps:
19 | - uses: actions/checkout@v4
20 | - uses: taiki-e/create-gh-release-action@v1
21 | with:
22 | # (Optional)
23 | changelog: CHANGELOG.MD
24 | draft: false
25 | # (Optional) Format of title.
26 | # [default value: $tag]
27 | # [possible values: variables $tag, $version, and any string]
28 | title: v$version
29 | # (Required) GitHub token for creating GitHub Releases.
30 | token: ${{ secrets.LI_GUOHAO_TOKEN }}
31 |
--------------------------------------------------------------------------------
/.github/workflows/ios-release.yml.bak:
--------------------------------------------------------------------------------
1 | name: Flutter_iOS
2 |
3 | on:
4 | push:
5 | branches:
6 | - release-*
7 | tags:
8 | - '*'
9 |
10 | jobs:
11 | build_ios:
12 | runs-on: macos-latest
13 | env:
14 | SHEME: Runner
15 | BUILD_CONFIGURATION: Release
16 |
17 | steps:
18 | - name: Checkout the code
19 | uses: actions/checkout@v2
20 |
21 | - name: Install and set Flutter version
22 | uses: subosito/flutter-action@v2
23 | with:
24 | flutter-version: '3.10.5'
25 | channel: 'stable'
26 |
27 | - name: Restore packages
28 | run: flutter pub get
29 |
30 | - name: Build Flutter
31 | run: flutter build ios --release --no-codesign
32 |
33 | - name: Build xArchive
34 | run: |
35 | mkdir Payload && mv build/ios/iphoneos/Runner.app Payload && zip -r Payload.zip Payload && mkdir output && mv Payload.zip output/ikaros.ipa
36 |
37 | - name: Publish iOS Artefacts
38 | uses: actions/upload-artifact@v1
39 | with:
40 | name: release-ios-${{ github.ref_name }}
41 | path: output
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .buildlog/
9 | .history
10 | .svn/
11 | migrate_working_dir/
12 |
13 | # IntelliJ related
14 | *.iml
15 | *.ipr
16 | *.iws
17 | .idea/
18 |
19 | # The .vscode folder contains launch configuration and tasks you configure in
20 | # VS Code which you may wish to be included in version control, so this line
21 | # is commented out by default.
22 | #.vscode/
23 |
24 | # Flutter/Dart/Pub related
25 | **/doc/api/
26 | **/ios/Flutter/.last_build_id
27 | .dart_tool/
28 | .flutter-plugins
29 | .flutter-plugins-dependencies
30 | .pub-cache/
31 | .pub/
32 | /build/
33 |
34 | # Symbolication related
35 | app.*.symbols
36 |
37 | # Obfuscation related
38 | app.*.map.json
39 |
40 | # Android Studio will place build artifacts here
41 | /android/app/debug
42 | /android/app/profile
43 | /android/app/release
44 |
45 | **Generated**
46 | **generated**
47 | /devtools_options.yaml
48 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "dependencies/dart_vlc"]
2 | path = dependencies/dart_vlc
3 | url = https://github.com/chivehao/dart_vlc.git
4 | [submodule "dependencies/flutter_vlc_player"]
5 | path = dependencies/flutter_vlc_player
6 | url = https://github.com/chivehao/flutter_vlc_player.git
7 | [submodule "dependencies/ns_danmaku"]
8 | path = dependencies/ns_danmaku
9 | url = https://github.com/chivehao/flutter_ns_danmaku.git
10 |
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: "80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819"
8 | channel: "stable"
9 |
10 | project_type: app
11 |
12 | # Tracks metadata for the flutter migrate command
13 | migration:
14 | platforms:
15 | - platform: root
16 | create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
17 | base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
18 | - platform: android
19 | create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
20 | base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
21 | - platform: ios
22 | create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
23 | base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
24 | - platform: linux
25 | create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
26 | base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
27 | - platform: macos
28 | create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
29 | base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
30 | - platform: web
31 | create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
32 | base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
33 | - platform: windows
34 | create_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
35 | base_revision: 80c2e84975bbd28ecf5f8d4bd4ca5a2490bfc819
36 |
37 | # User provided section
38 |
39 | # List of Local paths (relative to this file) that should be
40 | # ignored by the migrate tool.
41 | #
42 | # Files that are not part of the templates will be ignored by default.
43 | unmanaged_files:
44 | - 'lib/main.dart'
45 | - 'ios/Runner.xcodeproj/project.pbxproj'
46 |
--------------------------------------------------------------------------------
/.run/runAppDebug.run.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.run/runAppRelease.run.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ikaros_app
2 |
3 | ikaros app by flutter
4 |
5 |
6 | # Json generate
7 |
8 | ```
9 | flutter packages pub run build_runner build
10 | ```
11 |
12 | # Version
13 | APP的版本规定
14 |
15 | 服务端版本.主版本.子版本
16 |
17 | app的服务端版本只取服务端版本的主版本和子版本,忽略第三级别的Bug版本,
18 |
19 | 比如当前APP适配的服务端是 0.15.5, 那么服务端版本就是15,此时APP的版本就是 15.3.0
20 |
21 | 如果服务端版本是1.0.0,此时服务端的子版本最大曾是两位数,则,app的服务端版本是 1 * 100 + 0 = 100
22 | ,此时APP的版本就是 100.3.0
23 |
24 | # Build
25 |
26 | `Android Studio`最新版是JBR21,版本太高,
27 | 建议去[Android Studio Archives](https://developer.android.google.cn/studio/archive)下载老版本的,
28 | 推荐版本:`Android Studio Jellyfish | 2023.3.1 April 30, 2024`,
29 |
30 | git 子模块初始化:
31 | ```
32 | git submodule init
33 | git submodule update
34 |
35 | cd dependencies/dart_vlc
36 | flutter pub get
37 |
38 | cd ../../
39 | cd dependencies/flutter_vlc_player
40 | flutter pub get
41 |
42 | cd ../../
43 | cd dependencies/ns_danmaku
44 | flutter pub get
45 |
46 |
47 | cd ../../
48 | flutter pub get
49 | ```
50 | 用`Android Studio`打开后,如果依赖里还有红线的,进对应的目录,`flutter pub get`下就OK了。
51 |
52 |
53 | # 环境
54 |
55 | ```text
56 | flutter doctor -v
57 | ```
58 |
59 | ```text
60 | [✓] Flutter (Channel stable, 3.24.5, on Microsoft Windows [版本 10.0.22631.4460], locale zh-CN)
61 | • Flutter version 3.24.5 on channel stable at C:\Applications\flutter\3.24.5
62 | • Upstream repository https://github.com/flutter/flutter.git
63 | • Framework revision dec2ee5c1f (15 hours ago), 2024-11-13 11:13:06 -0800
64 | • Engine revision a18df97ca5
65 | • Dart version 3.5.4
66 | • DevTools version 2.37.3
67 |
68 | [✓] Windows Version (Installed version of Windows is version 10 or higher)
69 |
70 | [✓] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
71 | • Android SDK at C:\Users\chivehao\AppData\Local\Android\Sdk
72 | • Platform android-35, build-tools 35.0.0
73 | • ANDROID_HOME = C:\Users\chivehao\AppData\Local\Android\Sdk
74 | • Java binary at: C:\Applications\android\android-studio\jbr\bin\java
75 | • Java version OpenJDK Runtime Environment (build 17.0.10+0--11572160)
76 | • All Android licenses accepted.
77 |
78 | [✓] Chrome - develop for the web
79 | • Chrome at C:\Users\chivehao\AppData\Local\Google\Chrome\Application\chrome.exe
80 |
81 | [✓] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.11.5)
82 | • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
83 | • Visual Studio Community 2022 version 17.11.35327.3
84 | • Windows 10 SDK version 10.0.22621.0
85 |
86 | [✓] Android Studio (version 2023.3)
87 | • Android Studio at C:\Applications\android\android-studio
88 | • Flutter plugin can be installed from:
89 | 🔨 https://plugins.jetbrains.com/plugin/9212-flutter
90 | • Dart plugin can be installed from:
91 | 🔨 https://plugins.jetbrains.com/plugin/6351-dart
92 | • Java version OpenJDK Runtime Environment (build 17.0.10+0--11572160)
93 |
94 | [✓] IntelliJ IDEA Community Edition (version 2024.3)
95 | • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2024.3
96 | • Flutter plugin can be installed from:
97 | 🔨 https://plugins.jetbrains.com/plugin/9212-flutter
98 | • Dart plugin can be installed from:
99 | 🔨 https://plugins.jetbrains.com/plugin/6351-dart
100 |
101 | [✓] VS Code (version 1.94.2)
102 | • VS Code at C:\Users\chivehao\AppData\Local\Programs\Microsoft VS Code
103 | • Flutter extension can be installed from:
104 | 🔨 https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
105 |
106 | [✓] Connected device (4 available)
107 | • sdk gphone64 x86 64 (mobile) • emulator-5554 • android-x64 • Android 15 (API 35) (emulator)
108 | • Windows (desktop) • windows • windows-x64 • Microsoft Windows [版本 10.0.22631.4460]
109 | • Chrome (web) • chrome • web-javascript • Google Chrome 131.0.6778.69
110 | • Edge (web) • edge • web-javascript • Microsoft Edge 126.0.2592.61
111 |
112 | [✓] Network resources
113 | • All expected network resources are available.
114 |
115 | • No issues found!
116 | ```
--------------------------------------------------------------------------------
/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 https://dart.dev/lints.
17 | #
18 | # Instead of disabling a lint rule for the entire project in the
19 | # section below, it can also be suppressed for a single line of code
20 | # or a specific dart file by using the `// ignore: name_of_lint` and
21 | # `// ignore_for_file: name_of_lint` syntax on the line or in the file
22 | # producing the lint.
23 | rules:
24 | # avoid_print: false # Uncomment to disable the `avoid_print` rule
25 | # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
26 |
27 | # Additional information about this file can be found at
28 | # https://dart.dev/guides/language/analysis-options
29 |
--------------------------------------------------------------------------------
/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/to/reference-keystore
11 | key.properties
12 | **/*.keystore
13 | **/*.jks
14 |
--------------------------------------------------------------------------------
/android/app/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id "com.android.application"
3 | id "kotlin-android"
4 | // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
5 | id "dev.flutter.flutter-gradle-plugin"
6 | }
7 |
8 | android {
9 | namespace = "run.ikaros.app"
10 | compileSdk = flutter.compileSdkVersion
11 | ndkVersion = flutter.ndkVersion
12 |
13 | compileOptions {
14 | sourceCompatibility = JavaVersion.VERSION_1_8
15 | targetCompatibility = JavaVersion.VERSION_1_8
16 | }
17 |
18 | kotlinOptions {
19 | jvmTarget = JavaVersion.VERSION_1_8
20 | }
21 |
22 | defaultConfig {
23 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
24 | applicationId = "run.ikaros.app"
25 | // You can update the following values to match your application needs.
26 | // For more information, see: https://flutter.dev/to/review-gradle-config.
27 | minSdk = flutter.minSdkVersion
28 | targetSdk = flutter.targetSdkVersion
29 | versionCode = flutter.versionCode
30 | versionName = flutter.versionName
31 | }
32 |
33 | signingConfigs {
34 | release {
35 | keyAlias 'run_ikaros_app'
36 | keyPassword 'ikaros.run'
37 | storeFile file('run_ikaros_app_keystore.jks')
38 | storePassword 'ikaros.run'
39 | }
40 | }
41 |
42 | buildTypes {
43 | release {
44 | // Signing with the debug keys for now, so `flutter run --release` works.
45 | signingConfig = signingConfigs.release
46 | minifyEnabled true // 启用代码压缩
47 | shrinkResources true // 启用资源压缩
48 | // useProguard true
49 | proguardFiles getDefaultProguardFile(
50 | 'proguard-android-optimize.txt'),
51 | 'proguard-rules.pro'
52 | }
53 | }
54 | }
55 |
56 | flutter {
57 | source = "../.."
58 | }
59 |
--------------------------------------------------------------------------------
/android/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | #Flutter Wrapper
2 | -keep class io.flutter.app.** { *; }
3 | -keep class io.flutter.plugin.** { *; }
4 | -keep class io.flutter.util.** { *; }
5 | -keep class io.flutter.view.** { *; }
6 | -keep class io.flutter.** { *; }
7 | -keep class io.flutter.plugins.** { *; }
8 | -keep class org.videolan.libvlc.** { *; }
--------------------------------------------------------------------------------
/android/app/run_ikaros_app_keystore.jks:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/android/app/run_ikaros_app_keystore.jks
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
16 |
20 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
37 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/example/app/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package run.ikaros.app
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity()
6 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-ldpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/android/app/src/main/res/mipmap-ldpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/playstore-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/android/app/src/main/res/playstore-icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/build.gradle:
--------------------------------------------------------------------------------
1 | allprojects {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | }
6 | }
7 |
8 | rootProject.buildDir = "../build"
9 | subprojects {
10 | project.buildDir = "${rootProject.buildDir}/${project.name}"
11 | }
12 | subprojects {
13 | project.evaluationDependsOn(":app")
14 | }
15 |
16 | tasks.register("clean", Delete) {
17 | delete rootProject.buildDir
18 | }
19 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | zipStoreBase=GRADLE_USER_HOME
4 | zipStorePath=wrapper/dists
5 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip
6 |
--------------------------------------------------------------------------------
/android/settings.gradle:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | def flutterSdkPath = {
3 | def properties = new Properties()
4 | file("local.properties").withInputStream { properties.load(it) }
5 | def flutterSdkPath = properties.getProperty("flutter.sdk")
6 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
7 | return flutterSdkPath
8 | }()
9 |
10 | includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
11 |
12 | repositories {
13 | google()
14 | mavenCentral()
15 | gradlePluginPortal()
16 | }
17 | }
18 |
19 | plugins {
20 | id "dev.flutter.flutter-plugin-loader" version "1.0.0"
21 | id "com.android.application" version "7.3.0" apply false
22 | id "org.jetbrains.kotlin.android" version "1.9.10" apply false
23 | }
24 |
25 | include ":app"
26 |
--------------------------------------------------------------------------------
/assets/loading_placeholder.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/assets/loading_placeholder.jpg
--------------------------------------------------------------------------------
/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 "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/ios/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | platform :ios, '11.0'
3 |
4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true'
6 |
7 | project 'Runner', {
8 | 'Debug' => :debug,
9 | 'Profile' => :release,
10 | 'Release' => :release,
11 | }
12 |
13 | def flutter_root
14 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
15 | unless File.exist?(generated_xcode_build_settings_path)
16 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
17 | end
18 |
19 | File.foreach(generated_xcode_build_settings_path) do |line|
20 | matches = line.match(/FLUTTER_ROOT\=(.*)/)
21 | return matches[1].strip if matches
22 | end
23 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
24 | end
25 |
26 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
27 |
28 | flutter_ios_podfile_setup
29 |
30 | target 'Runner' do
31 | flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
32 | end
33 |
34 | post_install do |installer|
35 | installer.pods_project.targets.each do |target|
36 | flutter_additional_ios_build_settings(target)
37 | end
38 | end
--------------------------------------------------------------------------------
/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.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
37 |
38 |
39 |
40 |
41 |
42 |
52 |
54 |
60 |
61 |
62 |
63 |
69 |
71 |
77 |
78 |
79 |
80 |
82 |
83 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 |
4 | @UIApplicationMain
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | GeneratedPluginRegistrant.register(with: self)
11 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "size": "20x20",
5 | "idiom": "universal",
6 | "filename": "icon-20@2x.png",
7 | "scale": "2x",
8 | "platform": "ios"
9 | },
10 | {
11 | "size": "20x20",
12 | "idiom": "universal",
13 | "filename": "icon-20@3x.png",
14 | "scale": "3x",
15 | "platform": "ios"
16 | },
17 | {
18 | "size": "29x29",
19 | "idiom": "universal",
20 | "filename": "icon-29@2x.png",
21 | "scale": "2x",
22 | "platform": "ios"
23 | },
24 | {
25 | "size": "29x29",
26 | "idiom": "universal",
27 | "filename": "icon-29@3x.png",
28 | "scale": "3x",
29 | "platform": "ios"
30 | },
31 | {
32 | "size": "38x38",
33 | "idiom": "universal",
34 | "filename": "icon-38@2x.png",
35 | "scale": "2x",
36 | "platform": "ios"
37 | },
38 | {
39 | "size": "38x38",
40 | "idiom": "universal",
41 | "filename": "icon-38@3x.png",
42 | "scale": "3x",
43 | "platform": "ios"
44 | },
45 | {
46 | "size": "40x40",
47 | "idiom": "universal",
48 | "filename": "icon-40@2x.png",
49 | "scale": "2x",
50 | "platform": "ios"
51 | },
52 | {
53 | "size": "40x40",
54 | "idiom": "universal",
55 | "filename": "icon-40@3x.png",
56 | "scale": "3x",
57 | "platform": "ios"
58 | },
59 | {
60 | "size": "60x60",
61 | "idiom": "universal",
62 | "filename": "icon-60@2x.png",
63 | "scale": "2x",
64 | "platform": "ios"
65 | },
66 | {
67 | "size": "60x60",
68 | "idiom": "universal",
69 | "filename": "icon-60@3x.png",
70 | "scale": "3x",
71 | "platform": "ios"
72 | },
73 | {
74 | "size": "64x64",
75 | "idiom": "universal",
76 | "filename": "icon-64@2x.png",
77 | "scale": "2x",
78 | "platform": "ios"
79 | },
80 | {
81 | "size": "64x64",
82 | "idiom": "universal",
83 | "filename": "icon-64@3x.png",
84 | "scale": "3x",
85 | "platform": "ios"
86 | },
87 | {
88 | "size": "68x68",
89 | "idiom": "universal",
90 | "filename": "icon-68@2x.png",
91 | "scale": "2x",
92 | "platform": "ios"
93 | },
94 | {
95 | "size": "76x76",
96 | "idiom": "universal",
97 | "filename": "icon-76@2x.png",
98 | "scale": "2x",
99 | "platform": "ios"
100 | },
101 | {
102 | "size": "83.5x83.5",
103 | "idiom": "universal",
104 | "filename": "icon-83.5@2x.png",
105 | "scale": "2x",
106 | "platform": "ios"
107 | },
108 | {
109 | "size": "1024x1024",
110 | "idiom": "universal",
111 | "filename": "icon-1024.png",
112 | "scale": "1x",
113 | "platform": "ios"
114 | }
115 | ],
116 | "info": {
117 | "version": 1,
118 | "author": "icon.wuruihong.com"
119 | }
120 | }
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-1024.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-38@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-38@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-38@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-38@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-64@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-64@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-64@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-64@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-68@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-68@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/ios/Runner/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "LaunchImage.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "LaunchImage@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "LaunchImage@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ikaros-dev/app/edfe571597f0f967a6a6f70ab74a3c632c0ba946/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleDisplayName
8 | Ikaros
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | ikaros
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | $(FLUTTER_BUILD_NAME)
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | $(FLUTTER_BUILD_NUMBER)
25 | LSRequiresIPhoneOS
26 |
27 | UILaunchStoryboardName
28 | LaunchScreen
29 | UIMainStoryboardFile
30 | Main
31 | UIRequiresFullScreen
32 |
33 | UISupportedInterfaceOrientations
34 |
35 | UIInterfaceOrientationPortrait
36 | UIInterfaceOrientationLandscapeRight
37 | UIInterfaceOrientationLandscapeLeft
38 |
39 | UISupportedInterfaceOrientations~ipad
40 |
41 | UIInterfaceOrientationPortrait
42 | UIInterfaceOrientationPortraitUpsideDown
43 | UIInterfaceOrientationLandscapeLeft
44 | UIInterfaceOrientationLandscapeRight
45 |
46 | UIViewControllerBasedStatusBarAppearance
47 |
48 | CADisableMinimumFrameDurationOnPhone
49 |
50 | UIApplicationSupportsIndirectInputEvents
51 |
52 | NSAppTransportSecurity
53 |
54 | NSAllowsArbitraryLoads
55 |
56 |
57 | LSApplicationQueriesSchemes
58 |
59 | http
60 | https
61 |
62 | NSPhotoLibraryUsageDescription
63 | Ikaros需要访问您的相册以保存图片
64 | CFBundleURLTypes
65 |
66 |
67 | CFBundleURLSchemes
68 |
69 | ikaros
70 |
71 |
72 |
73 |
74 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/lib/api/actuator/ActuatorInfoApi.dart:
--------------------------------------------------------------------------------
1 | import 'package:dio/dio.dart';
2 | import 'package:flutter/foundation.dart';
3 | import 'package:ikaros/api/dio_client.dart';
4 |
5 | class ActuatorInfo {
6 | Future getVersion() async {
7 | String apiUrl = "/actuator/info";
8 | try {
9 | Dio dio = await DioClient.getDio();
10 | Response response = await dio.get(apiUrl);
11 | // print("response status code: ${response.statusCode}");
12 | if (response.statusCode != 200) {
13 | return null;
14 | }
15 | Map data = response.data;
16 | return data['build']['version'];
17 | } catch (e) {
18 | if (kDebugMode) {
19 | print(e);
20 | }
21 | return null;
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/lib/api/attachment/AttachmentApi.dart:
--------------------------------------------------------------------------------
1 | import 'package:crypto/crypto.dart';
2 | import 'package:dio/dio.dart';
3 | import 'package:flutter/foundation.dart';
4 |
5 | class AttachmentApi {
6 |
7 | Future fetchPartialFileMd5(String url)async {
8 | List bytes = await fetchPartialFile(url);
9 | Digest md5Digest = md5.convert(bytes);
10 | return md5Digest.toString();
11 | }
12 |
13 | Future> fetchPartialFile(String url) async {
14 | if (url == "" || !url.startsWith("http:")) return List.empty();
15 |
16 | try {
17 | // 使用 range 头部请求文件的前 16MB 数据
18 | Response> response = await Dio().get>(
19 | url, // 替换为你的文件URL
20 | options: Options(
21 | responseType: ResponseType.bytes,
22 | headers: {
23 | 'Range': 'bytes=0-16777215', // 请求文件的前 16MB 字节 (16 * 1024 * 1024 - 1)
24 | },
25 | ),
26 | );
27 |
28 | if (response.statusCode == 206) { // 206 表示部分内容获取成功
29 | return response.data!;
30 | } else {
31 | if (kDebugMode) {
32 | print('请求未能返回部分内容。');
33 | }
34 | }
35 | } catch (e) {
36 | if (kDebugMode) {
37 | print('请求失败: $e');
38 | }
39 | }
40 | return List.empty();
41 | }
42 | }
--------------------------------------------------------------------------------
/lib/api/attachment/AttachmentRelationApi.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:dio/dio.dart';
4 | import 'package:ikaros/api/attachment/model/VideoSubtitle.dart';
5 | import 'package:ikaros/api/dio_client.dart';
6 |
7 | class AttachmentRelationApi {
8 | Future> findByAttachmentId(int attachmentId) async {
9 | String apiUrl =
10 | "/api/v1alpha1/attachment/relation/videoSubtitle/subtitles/$attachmentId";
11 | try {
12 | // print("queryParams: $queryParams");
13 | Dio dio = await DioClient.getDio();
14 | var response = await dio.get(apiUrl);
15 | // print("response status code: ${response.statusCode}");
16 | if (response.statusCode != 200) {
17 | return [];
18 | }
19 |
20 | var listDynamic = jsonDecode(jsonEncode(response.data));
21 |
22 | List