├── .gitignore
├── .gitmoji-changelogrc
├── .metadata
├── .tool-versions
├── .vscode
└── settings.json
├── CHANGELOG.md
├── LICENSE
├── README.md
├── README_EN.md
├── analysis_options.yaml
├── android
├── .gitignore
├── app
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── jniLibs
│ │ │ ├── arm64-v8a
│ │ │ │ └── libaria2c.so
│ │ │ ├── armeabi-v7a
│ │ │ │ └── libaria2c.so
│ │ │ ├── x86
│ │ │ │ └── libaria2c.so
│ │ │ └── x86_64
│ │ │ │ └── libaria2c.so
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── example
│ │ │ │ └── yolx
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-hdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable-mdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable-v21
│ │ │ └── launch_background.xml
│ │ │ ├── drawable-xhdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable-xxhdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable-xxxhdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable
│ │ │ └── launch_background.xml
│ │ │ ├── mipmap-anydpi-v26
│ │ │ └── ic_launcher.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
│ │ │ ├── values-night
│ │ │ └── styles.xml
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ └── styles.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
├── settings.gradle
└── yolx_android.iml
├── assets
├── icon-foreground.png
├── logo.ico
├── logo.png
└── no_data.svg
├── distribute_options.yaml
├── lib
├── common
│ ├── const.dart
│ └── global.dart
├── generated
│ ├── intl
│ │ ├── messages_all.dart
│ │ ├── messages_en.dart
│ │ └── messages_zh_CN.dart
│ └── l10n.dart
├── l10n
│ ├── intl_en.arb
│ └── intl_zh_CN.arb
├── main.dart
├── model
│ ├── download_item.dart
│ └── download_list_model.dart
├── resources
│ └── yolx_aria2.conf
├── screens
│ ├── downloading.dart
│ ├── settings.dart
│ ├── stopped.dart
│ └── waiting.dart
├── theme.dart
├── utils
│ ├── aria2_manager.dart
│ ├── ariar2_http_utils.dart
│ ├── common_utils.dart
│ ├── file_utils.dart
│ ├── log.dart
│ ├── native_channel_utils.dart
│ ├── permission_util.dart
│ ├── tracker_http_utils.dart
│ └── url_utils.dart
└── widgets
│ ├── download_file_card.dart
│ ├── new_download_dialog.dart
│ ├── page.dart
│ ├── settings_card.dart
│ └── upload_torrent.dart
├── linux
├── .gitignore
├── CMakeLists.txt
├── bin
│ └── plugin
│ │ └── aria2
│ │ └── yolx_aria2c
├── flutter
│ ├── CMakeLists.txt
│ ├── generated_plugin_registrant.cc
│ ├── generated_plugin_registrant.h
│ └── generated_plugins.cmake
├── main.cc
├── my_application.cc
├── my_application.h
└── packaging
│ ├── appimage
│ └── make_config.yaml
│ ├── deb
│ └── make_config.yaml
│ └── rpm
│ └── make_config.yaml
├── pubspec.yaml
├── symbols
├── app.android-arm.symbols
├── app.android-arm64.symbols
└── app.android-x64.symbols
├── test
└── widget_test.dart
├── windows
├── .gitignore
├── CMakeLists.txt
├── bin
│ └── plugin
│ │ └── aria2
│ │ └── yolx_aria2c.exe
├── flutter
│ ├── CMakeLists.txt
│ ├── generated_plugin_registrant.cc
│ ├── generated_plugin_registrant.h
│ └── generated_plugins.cmake
├── packaging
│ └── exe
│ │ ├── inno_setup.iss
│ │ └── make_config.yaml
└── 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
└── yolx.iml
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://www.dartlang.org/guides/libraries/private-files
2 |
3 | # Files and directories created by pub
4 | .dart_tool/
5 | .packages
6 | .idea/
7 | build/
8 | dist/
9 | symbols/
10 | # If you're building an application, you may want to check-in your pubspec.lock
11 | pubspec.lock
12 |
13 | # Directory created by dartdoc
14 | # If you don't generate documentation locally you can remove this line.
15 | doc/api/
16 |
17 | # dotenv environment variables file
18 | .env*
19 |
20 | # Avoid committing generated Javascript files:
21 | *.dart.js
22 | *.info.json # Produced by the --dump-info flag.
23 | *.js # When generated by dart2js. Don't specify *.js if your
24 | # project includes source files written in JavaScript.
25 | *.js_
26 | *.js.deps
27 | *.js.map
28 |
29 | .flutter-plugins
30 | .flutter-plugins-dependencies
31 | windows/installers/yolx-setup.exe
32 |
--------------------------------------------------------------------------------
/.gitmoji-changelogrc:
--------------------------------------------------------------------------------
1 | {
2 | "project": {
3 | "name": "Yolx",
4 | "description": "A changelog generator for Yolx",
5 | "version": "0.3.8"
6 | }
7 | }
--------------------------------------------------------------------------------
/.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: "78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9"
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: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9
17 | base_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9
18 | - platform: android
19 | create_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9
20 | base_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9
21 | - platform: ios
22 | create_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9
23 | base_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9
24 | - platform: linux
25 | create_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9
26 | base_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9
27 | - platform: macos
28 | create_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9
29 | base_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9
30 | - platform: windows
31 | create_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9
32 | base_revision: 78666c8dc57e9f7548ca9f8dd0740fbf0c658dc9
33 |
34 | # User provided section
35 |
36 | # List of Local paths (relative to this file) that should be
37 | # ignored by the migrate tool.
38 | #
39 | # Files that are not part of the templates will be ignored by default.
40 | unmanaged_files:
41 | - 'lib/main.dart'
42 | - 'ios/Runner.xcodeproj/project.pbxproj'
43 |
--------------------------------------------------------------------------------
/.tool-versions:
--------------------------------------------------------------------------------
1 | nodejs 21.5.0
2 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "cmake.sourceDirectory": "C:/Users/Yoyo/Documents/GitHub/Yolx/windows",
3 | "java.configuration.updateBuildConfiguration": "interactive"
4 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | # Yolx
8 |
9 | `Yolx` 一款现代化下载工具!
10 |
11 |
12 |
16 |
17 |
18 | [](https://github.com/frinyvonnick/gitmoji-changelog)
19 |
20 |
21 | ---
22 |
23 |
24 | 简体中文 | [English](/README_EN.md)
25 |
26 | `Yolx` 是一款以「Aria 2」作为核心的现代化下载工具。
27 |
28 | ## 🙌 简单的开始
29 |
30 | 如果想安装Yolx,请打开右侧的 [Release](https://github.com/uiYzzi/Yolx/releases) 页面,找到最新版本,并选择适用于当前系统的安装包下载。
31 |
32 |
33 | **Watch** 项目,以获取应用的更新动态。
34 |
35 | ## 🚀 协作
36 |
37 | 非常感谢有兴趣的开发者或爱好者参与 `Yolx` 项目,分享你的见解与思路。
38 |
39 | ## 🍭 编译
40 |
41 | ### Windows
42 | #### 依赖安装
43 |
44 | 1、按照[官方文档](https://flutter.cn/docs/get-started/install/windows)安装`Flutter SDK`以及[Visual Studio 2022 生成工具](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022)
45 |
46 | 2、安装打包工具[Inno Setup 6](https://jrsoftware.org/isinfo.php),并添加[中文语言包](https://jrsoftware.org/files/istrans/) `ChineseSimplified.isl` 和 `ChineseTraditional.isl` 到 `C:\Program Files (x86)\Inno Setup 6\Languages` 目录
47 |
48 | 3、按照[官方文档](https://distributor.leanflutter.dev/zh-hans/getting-started/)安装构建工具
49 | #### 打包构建
50 |
51 | 在项目目录运行下面命令进行编译打包,构建完成后可在 `dist` 文件夹内找到安装包
52 |
53 | ```
54 | flutter_distributor release --name windows
55 | ```
56 |
57 | ### Linux
58 | #### 依赖安装
59 |
60 | 1、按照[官方文档](https://flutter.cn/docs/get-started/install/linux)安装`Flutter SDK`
61 |
62 | 2、输入以下命令安装构建依赖
63 | ```
64 | sudo apt-get install clang cmake git ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev libayatana-appindicator3-dev
65 |
66 | ```
67 |
68 | 3、按照[官方文档](https://distributor.leanflutter.dev/zh-hans/getting-started/)安装构建工具
69 |
70 | 4、输入以下命令安装打包依赖
71 | ```
72 | sudo apt install rpm patchelf locate libfuse2 fuse
73 | wget -O appimagetool "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
74 | chmod +x appimagetool
75 | sudo mv appimagetool /usr/local/bin/
76 | ```
77 | #### 打包构建
78 |
79 | 在项目目录运行下面命令进行编译打包,构建完成后可在 `dist` 文件夹内找到安装包
80 |
81 | ```
82 | flutter_distributor release --name linux
83 | ```
84 |
85 | ## 🫸 特别鸣谢
86 | - [LeanFlutter](https://github.com/leanflutter)
87 | - [星火计划 Project Spark](https://gitee.com/spark-store-project)
--------------------------------------------------------------------------------
/README_EN.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | # Yolx
8 |
9 | `Yolx` is a modern download tool!
10 |
11 |
12 |
16 |
17 |
18 | [](https://github.com/frinyvonnick/gitmoji-changelog)
19 |
20 |
21 |
22 | ---
23 |
24 | English | [简体中文](../../)
25 |
26 | `Yolx` is a modern download tool with "Aria 2" at its core.
27 |
28 | ## 🙌 Getting Started
29 |
30 | To install Yolx, please open the [Release](https://github.com/uiYzzi/Yolx/releases) page on the right, find the latest version, and select the installation package suitable for your current system.
31 |
32 | **Watch** the project for updates on the application.
33 |
34 | ## 🚀 Collaboration
35 |
36 | Thank you very much to developers or enthusiasts interested in participating in the `Yolx` project. Share your insights and ideas.
37 |
38 | ## 🍭 Compilation
39 |
40 | ### Windows
41 | #### Dependency Installation
42 |
43 | 1. Follow the [official documentation](https://flutter.cn/docs/get-started/install/windows) to install `Flutter SDK` and [Visual Studio 2022 Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022).
44 |
45 | 2. Install the packaging tool [Inno Setup 6](https://jrsoftware.org/isinfo.php), and add the [Chinese language packs](https://jrsoftware.org/files/istrans/) `ChineseSimplified.isl` and `ChineseTraditional.isl` to the `C:\Program Files (x86)\Inno Setup 6\Languages` directory.
46 |
47 | 3. Follow the [official documentation](https://distributor.leanflutter.dev/zh-hans/getting-started/) to install the build tools.
48 | #### Packaging and Building
49 |
50 | Run the following command in the project directory to compile and package. After the build is complete, you can find the installation package in the `dist` folder.
51 |
52 | ```
53 | flutter_distributor release --name windows
54 | ```
55 |
56 | ### Linux
57 | #### Dependency Installation
58 |
59 | 1. Follow the [official documentation](https://flutter.cn/docs/get-started/install/linux) to install `Flutter SDK`.
60 |
61 | 2. Enter the following command to install build dependencies:
62 | ```
63 | sudo apt-get install clang cmake git ninja-build pkg-config libgtk-3-dev liblzma-dev libstdc++-12-dev libayatana-appindicator3-dev
64 | ```
65 |
66 | 3. Follow the [official documentation](https://distributor.leanflutter.dev/zh-hans/getting-started/) to install the build tools.
67 |
68 | 4. Enter the following command to install packaging dependencies:
69 | ```
70 | sudo apt install rpm patchelf locate libfuse2 fuse
71 | wget -O appimagetool "https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage"
72 | chmod +x appimagetool
73 | sudo mv appimagetool /usr/local/bin/
74 | ```
75 |
76 | #### Packaging and Building
77 |
78 | Run the following command in the project directory to compile and package. After the build is complete, you can find the installation package in the `dist` folder.
79 |
80 | ```
81 | flutter_distributor release --name linux
82 | ```
83 |
84 | ## 🫸 Acknowledgments
85 | - [LeanFlutter](https://github.com/leanflutter)
86 | - [星火计划 Project Spark](https://gitee.com/spark-store-project)
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | include: package:flutter_lints/flutter.yaml
--------------------------------------------------------------------------------
/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/build.gradle:
--------------------------------------------------------------------------------
1 | plugins {
2 | id "com.android.application"
3 | id "kotlin-android"
4 | id "dev.flutter.flutter-gradle-plugin"
5 | }
6 |
7 | def localProperties = new Properties()
8 | def localPropertiesFile = rootProject.file('local.properties')
9 | if (localPropertiesFile.exists()) {
10 | localPropertiesFile.withReader('UTF-8') { reader ->
11 | localProperties.load(reader)
12 | }
13 | }
14 |
15 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
16 | if (flutterVersionCode == null) {
17 | flutterVersionCode = '1'
18 | }
19 |
20 | def flutterVersionName = localProperties.getProperty('flutter.versionName')
21 | if (flutterVersionName == null) {
22 | flutterVersionName = '1.0'
23 | }
24 |
25 | def keystoreProperties = new Properties()
26 | def keystorePropertiesFile = rootProject.file('key.properties')
27 | if (keystorePropertiesFile.exists()) {
28 | keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
29 | }
30 |
31 | android {
32 | namespace "com.yoyo.yolx"
33 | compileSdkVersion flutter.compileSdkVersion
34 | flavorDimensions "abi"
35 | ndkVersion flutter.ndkVersion
36 |
37 | productFlavors {
38 | dev {
39 | dimension "abi"
40 | ndk { abiFilter "arm64-v8a" }
41 | resValue "string", "app_name", "Alga Dev"
42 | }
43 | arm {
44 | dimension "abi"
45 | ndk { abiFilter "armeabi-v7a" }
46 | resValue "string", "app_name", "Alga"
47 | }
48 | arm64 {
49 | dimension "abi"
50 | ndk { abiFilter "arm64-v8a" }
51 | resValue "string", "app_name", "Alga"
52 | }
53 | x86_64 {
54 | dimension "abi"
55 | applicationId "tech.laihz.alga"
56 | ndk { abiFilter "x86_64" }
57 | resValue "string", "app_name", "Alga"
58 | }
59 | universal {
60 | dimension "abi"
61 | applicationId "tech.laihz.alga"
62 | resValue "string", "app_name", "Alga"
63 | }
64 | aab {
65 | dimension "abi"
66 | applicationId "tech.laihz.alga"
67 | resValue "string", "app_name", "Alga"
68 | }
69 | }
70 |
71 | compileOptions {
72 | sourceCompatibility JavaVersion.VERSION_1_8
73 | targetCompatibility JavaVersion.VERSION_1_8
74 | }
75 |
76 | kotlinOptions {
77 | jvmTarget = '1.8'
78 | }
79 |
80 | sourceSets {
81 | main {
82 | java.srcDirs += 'src/main/kotlin'
83 | jniLibs.srcDirs=['src/main/jniLibs']
84 | }
85 | }
86 |
87 | repositories {
88 | flatDir {
89 | dirs 'libs'
90 | }
91 | }
92 |
93 | defaultConfig {
94 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
95 | applicationId "com.yoyo.yolx"
96 | // You can update the following values to match your application needs.
97 | // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
98 | minSdkVersion flutter.minSdkVersion
99 | targetSdkVersion flutter.targetSdkVersion
100 | versionCode flutterVersionCode.toInteger()
101 | versionName flutterVersionName
102 | ndk {}
103 | }
104 |
105 | signingConfigs {
106 | release {
107 | keyAlias keystoreProperties['keyAlias']
108 | keyPassword keystoreProperties['keyPassword']
109 | storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
110 | storePassword keystoreProperties['storePassword']
111 | }
112 | }
113 |
114 | buildTypes {
115 | release {
116 | minifyEnabled true
117 | shrinkResources true
118 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'
119 | signingConfig signingConfigs.release
120 | }
121 | }
122 | }
123 |
124 | flutter {
125 | source '../..'
126 | }
127 |
128 | dependencies {
129 | implementation fileTree(include: ['*.jar','*.so'], dir: 'libs')
130 | implementation 'org.bouncycastle:bcprov-jdk16:1.46'
131 | }
132 |
--------------------------------------------------------------------------------
/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 de.prosiebensat1digital.** { *; }
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
16 |
25 |
29 |
33 |
34 |
35 |
36 |
37 |
38 |
40 |
43 |
44 |
45 |
--------------------------------------------------------------------------------
/android/app/src/main/jniLibs/arm64-v8a/libaria2c.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uiYzzi/Yolx/e97cead00c501d5f79e2924b803576ab478298fe/android/app/src/main/jniLibs/arm64-v8a/libaria2c.so
--------------------------------------------------------------------------------
/android/app/src/main/jniLibs/armeabi-v7a/libaria2c.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uiYzzi/Yolx/e97cead00c501d5f79e2924b803576ab478298fe/android/app/src/main/jniLibs/armeabi-v7a/libaria2c.so
--------------------------------------------------------------------------------
/android/app/src/main/jniLibs/x86/libaria2c.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uiYzzi/Yolx/e97cead00c501d5f79e2924b803576ab478298fe/android/app/src/main/jniLibs/x86/libaria2c.so
--------------------------------------------------------------------------------
/android/app/src/main/jniLibs/x86_64/libaria2c.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uiYzzi/Yolx/e97cead00c501d5f79e2924b803576ab478298fe/android/app/src/main/jniLibs/x86_64/libaria2c.so
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/example/yolx/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.yoyo.yolx
2 |
3 | import android.content.Intent
4 | import android.net.Uri
5 | import android.os.Build
6 | import android.os.Environment
7 | import android.provider.Settings;
8 | import io.flutter.embedding.android.FlutterActivity
9 | import io.flutter.embedding.engine.FlutterEngine
10 | import io.flutter.plugin.common.MethodChannel
11 | import java.io.File
12 |
13 | class MainActivity: FlutterActivity() {
14 | private val CHANNEL = "com.yoyo.flutter_native_channel/native_methods"
15 | private var channelResult: MethodChannel.Result? =null;
16 | override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
17 | super.configureFlutterEngine(flutterEngine)
18 | MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
19 | channelResult=result;
20 | if(call.method == "nativeLibraryDir"){
21 | result.success(applicationInfo.nativeLibraryDir)
22 | }else if(call.method == "requestPermission"){
23 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { //30
24 | // 先判断有没有权限
25 | if (!Environment.isExternalStorageManager()) {
26 | //跳转到设置界面引导用户打开
27 | val intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION)
28 | intent.data = Uri.parse("package:$packageName")
29 | startActivityForResult(intent, 6666)
30 | }else{
31 | result.success(true)
32 | }
33 | }
34 |
35 | } else {
36 | result.notImplemented()
37 | }
38 | }
39 | }
40 |
41 | override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
42 | super.onActivityResult(requestCode, resultCode, data)
43 | if (requestCode==6666){
44 | if (Environment.isExternalStorageManager()){
45 | channelResult?.success(true)
46 | } else {
47 | channelResult?.success(false);
48 | }
49 | }
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uiYzzi/Yolx/e97cead00c501d5f79e2924b803576ab478298fe/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uiYzzi/Yolx/e97cead00c501d5f79e2924b803576ab478298fe/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/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-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uiYzzi/Yolx/e97cead00c501d5f79e2924b803576ab478298fe/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uiYzzi/Yolx/e97cead00c501d5f79e2924b803576ab478298fe/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uiYzzi/Yolx/e97cead00c501d5f79e2924b803576ab478298fe/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uiYzzi/Yolx/e97cead00c501d5f79e2924b803576ab478298fe/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-ldpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uiYzzi/Yolx/e97cead00c501d5f79e2924b803576ab478298fe/android/app/src/main/res/mipmap-ldpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uiYzzi/Yolx/e97cead00c501d5f79e2924b803576ab478298fe/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uiYzzi/Yolx/e97cead00c501d5f79e2924b803576ab478298fe/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uiYzzi/Yolx/e97cead00c501d5f79e2924b803576ab478298fe/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uiYzzi/Yolx/e97cead00c501d5f79e2924b803576ab478298fe/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
18 |
19 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #131367
4 |
--------------------------------------------------------------------------------
/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 | buildscript {
2 | ext.kotlin_version = '1.9.10'
3 | repositories {
4 | // google()
5 | // mavenCentral()
6 | maven { url 'https://maven.aliyun.com/repository/google' }
7 | maven { url 'https://maven.aliyun.com/repository/central' }
8 | }
9 |
10 | dependencies {
11 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
12 | }
13 | }
14 |
15 | allprojects {
16 | repositories {
17 | // google()
18 | // mavenCentral()
19 | maven { url 'https://maven.aliyun.com/repository/google' }
20 | maven { url 'https://maven.aliyun.com/repository/central' }
21 | }
22 | }
23 |
24 | rootProject.buildDir = '../build'
25 | subprojects {
26 | project.buildDir = "${rootProject.buildDir}/${project.name}"
27 | }
28 | subprojects {
29 | project.evaluationDependsOn(':app')
30 | }
31 |
32 | tasks.register("clean", Delete) {
33 | delete rootProject.buildDir
34 | }
35 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx4G
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.5-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 | settings.ext.flutterSdkPath = flutterSdkPath()
10 |
11 | includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")
12 |
13 | repositories {
14 | google()
15 | mavenCentral()
16 | gradlePluginPortal()
17 | }
18 |
19 | plugins {
20 | id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false
21 | }
22 | }
23 |
24 | plugins {
25 | id "dev.flutter.flutter-plugin-loader" version "1.0.0"
26 | id "com.android.application" version "7.3.0" apply false
27 | }
28 |
29 | include ":app"
30 |
--------------------------------------------------------------------------------
/android/yolx_android.iml:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/assets/icon-foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uiYzzi/Yolx/e97cead00c501d5f79e2924b803576ab478298fe/assets/icon-foreground.png
--------------------------------------------------------------------------------
/assets/logo.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uiYzzi/Yolx/e97cead00c501d5f79e2924b803576ab478298fe/assets/logo.ico
--------------------------------------------------------------------------------
/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/uiYzzi/Yolx/e97cead00c501d5f79e2924b803576ab478298fe/assets/logo.png
--------------------------------------------------------------------------------
/assets/no_data.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/distribute_options.yaml:
--------------------------------------------------------------------------------
1 | output: dist/
2 | artifact_name: "{{name}}-{{platform}}{{#flavor}}-{{flavor}}{{/flavor}}{{#channel}}-{{channel}}{{/channel}}-{{version}}{{#is_installer}}-setup{{/is_installer}}.{{ext}}"
3 | releases:
4 | - name: android
5 | jobs:
6 | - name: arm
7 | package:
8 | platform: android
9 | target: apk
10 | build_args:
11 | flavor: arm
12 | obfuscate:
13 | split-debug-info: symbols
14 | - name: arm64
15 | package:
16 | platform: android
17 | target: apk
18 | build_args:
19 | flavor: arm64
20 | obfuscate:
21 | split-debug-info: symbols
22 | - name: x86_64
23 | package:
24 | platform: android
25 | target: apk
26 | build_args:
27 | flavor: x86_64
28 | obfuscate:
29 | split-debug-info: symbols
30 | - name: universal
31 | package:
32 | platform: android
33 | target: apk
34 | build_args:
35 | flavor: universal
36 | obfuscate:
37 | split-debug-info: symbols
38 | - name: aab
39 | package:
40 | platform: android
41 | target: aab
42 | build_args:
43 | flavor: aab
44 | obfuscate:
45 | split-debug-info: symbols
46 | - name: windows
47 | jobs:
48 | - name: exe
49 | package:
50 | platform: windows
51 | target: exe
52 | obfuscate:
53 | split-debug-info: symbols
54 | - name: zip
55 | package:
56 | platform: windows
57 | target: zip
58 | obfuscate:
59 | split-debug-info: symbols
60 | - name: linux
61 | jobs:
62 | - name: deb
63 | package:
64 | platform: linux
65 | target: deb
66 | obfuscate:
67 | split-debug-info: symbols
68 | - name: appimage
69 | package:
70 | platform: linux
71 | target: appimage
72 | obfuscate:
73 | split-debug-info: symbols
74 | - name: rpm
75 | package:
76 | platform: linux
77 | target: rpm
78 | obfuscate:
79 | split-debug-info: symbols
--------------------------------------------------------------------------------
/lib/common/const.dart:
--------------------------------------------------------------------------------
1 | const String appTitle = 'Yolx';
2 | const String githubURL = 'https://github.com/uiYzzi/Yolx';
3 | const int defaultRPCPort = 16801;
4 | const double defaultWindowWidth = 900;
5 | const double defaultWindowHeight = 600;
6 | const int defaultMaxConcurrentDownloads = 5;
7 | const int defaultMaxConnectionPerServer = 16;
8 | const String defaultCompressedFilesRule =
9 | 'zip,rar,arj,gz,sit,sitx,sea,ace,bz2,7z';
10 | const String defaultDocumentsRule = 'doc,pdf,ppt,pps,docx,pptx';
11 | const String defaultMusicRule = 'mp3,wav,wma,mpa,ram,ra,aac,aif,m4a,tsa';
12 | const String defaultProgramsRule = 'exe,msi';
13 | const String defaultVideosRule =
14 | 'avi,mpg,mpe,mpeg,asf,wmv,mov,qt,rm,mp4,flv,m4v,webm,ogv,ogg,mkv,ts,tsv';
15 | const String rpcURLValue = 'http://127.0.0.1:{port}/jsonrpc';
16 | const String defaultTrackerSubscriptionAddress =
17 | 'https://cdn.jsdelivr.net/gh/ngosang/trackerslist@master/trackers_all.txt,https://cf.trackerslist.com/all.txt';
18 | const List sizeUnits = [
19 | 'B',
20 | 'KB',
21 | 'MB',
22 | 'GB',
23 | 'TB',
24 | 'PB',
25 | 'EB',
26 | 'ZB',
27 | 'YB'
28 | ];
29 |
--------------------------------------------------------------------------------
/lib/common/global.dart:
--------------------------------------------------------------------------------
1 | import 'dart:io';
2 |
3 | import 'package:fluent_ui/fluent_ui.dart';
4 | import 'package:path_provider/path_provider.dart';
5 | import 'package:shared_preferences/shared_preferences.dart';
6 | import 'package:yolx/common/const.dart';
7 | import 'package:yolx/theme.dart';
8 | // ignore: library_prefixes
9 |
10 | class Global {
11 | static late SharedPreferences prefs;
12 | static final appTheme = AppTheme();
13 | static String pathSeparator = Platform.pathSeparator;
14 | static int rpcPort = defaultRPCPort;
15 | static String rpcSecret = '';
16 | static String ua = '';
17 | static String proxy = '';
18 | static String bypassProxy = '';
19 | static String downloadPath = '';
20 | static String trackerSubscriptionAddress = defaultTrackerSubscriptionAddress;
21 | static String trackerServersList = '';
22 | static double windowWidth = defaultWindowWidth;
23 | static double windowHeight = defaultWindowHeight;
24 | static bool rememberWindowSize = true;
25 | static double maxOverallDownloadLimit = 0;
26 | static double maxDownloadLimit = 0;
27 | static double lowestDownloadLimit = 0;
28 | static double maxOverallUploadLimit = 0;
29 | static double maxUploadLimit = 0;
30 | static String rpcUrl =
31 | rpcURLValue.replaceAll('{port}', Global.rpcPort.toString());
32 | static bool classificationSaving = false;
33 | static bool isAutoUpdateTrackerList = true;
34 | static String compressedFilesRule = defaultCompressedFilesRule;
35 | static String documentsRule = defaultDocumentsRule;
36 | static String musicRule = defaultMusicRule;
37 | static String programsRule = defaultProgramsRule;
38 | static String videosRule = defaultVideosRule;
39 | static int maxConcurrentDownloads = defaultMaxConcurrentDownloads;
40 | static int maxConnectionPerServer = defaultMaxConnectionPerServer;
41 | static bool silentStart = false;
42 | static Future init() async {
43 | WidgetsFlutterBinding.ensureInitialized();
44 | prefs = await SharedPreferences.getInstance();
45 | appTheme.mode = ThemeMode.values[prefs.getInt('ThemeMode') ?? 0];
46 | if (prefs.getString('Language')?.split('_').length == 2) {
47 | appTheme.locale = Locale(
48 | prefs.getString('Language')?.split('_')[0] ?? 'zh',
49 | prefs.getString('Language')?.split('_')[1] ?? 'CN');
50 | } else {
51 | appTheme.locale = Locale(prefs.getString('Language') ?? 'en');
52 | }
53 |
54 | appTheme.displayMode =
55 | PaneDisplayMode.values[prefs.getInt('NavigationMode') ?? 4];
56 | appTheme.indicator =
57 | NavigationIndicators.values[prefs.getInt('NavigationIndicator') ?? 0];
58 | rpcPort = prefs.getInt('RPCPort') ?? defaultRPCPort;
59 | rpcSecret = prefs.getString('RPCSecret') ?? '';
60 | ua = prefs.getString('UA') ??
61 | 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36';
62 | proxy = prefs.getString('Proxy') ?? '';
63 | bypassProxy = prefs.getString('BypassProxy') ?? '';
64 | Directory? dir;
65 | if (Platform.isAndroid) {
66 | dir = Directory('/storage/emulated/0/Download');
67 | } else {
68 | dir = await getDownloadsDirectory();
69 | }
70 | downloadPath = (prefs.getString('DownloadPath') ?? dir?.path)!;
71 | rememberWindowSize = prefs.getBool('RememberWindowSize') ?? true;
72 | isAutoUpdateTrackerList = prefs.getBool('IsAutoUpdateTrackerList') ?? true;
73 | if (rememberWindowSize) {
74 | windowWidth = prefs.getDouble('WindowWidth') ?? defaultWindowWidth;
75 | windowHeight = prefs.getDouble('WindowHeight') ?? defaultWindowHeight;
76 | }
77 | maxOverallDownloadLimit = prefs.getDouble('MaxOverallDownloadLimit') ?? 0;
78 | maxDownloadLimit = prefs.getDouble('MaxDownloadLimit') ?? 0;
79 | lowestDownloadLimit = prefs.getDouble('LowestDownloadLimit') ?? 0;
80 | maxOverallUploadLimit = prefs.getDouble('MaxOverallUploadLimit') ?? 0;
81 | maxUploadLimit = prefs.getDouble('MaxUploadLimit') ?? 0;
82 | classificationSaving = prefs.getBool('ClassificationSaving') ?? false;
83 | compressedFilesRule =
84 | prefs.getString('CompressedFilesRule') ?? defaultCompressedFilesRule;
85 | documentsRule = prefs.getString('DocumentsRule') ?? defaultDocumentsRule;
86 | musicRule = prefs.getString('MusicRule') ?? defaultMusicRule;
87 | programsRule = prefs.getString('ProgramsRule') ?? defaultProgramsRule;
88 | videosRule = prefs.getString('VideosRule') ?? defaultVideosRule;
89 | maxConcurrentDownloads =
90 | prefs.getInt('MaxConcurrentDownloads') ?? defaultMaxConcurrentDownloads;
91 | maxConnectionPerServer =
92 | prefs.getInt('MaxConnectionPerServer') ?? defaultMaxConnectionPerServer;
93 | if (maxConcurrentDownloads < 1) {
94 | maxConcurrentDownloads = 1;
95 | }
96 | if (maxConnectionPerServer < 1) {
97 | maxConnectionPerServer = 1;
98 | }
99 | if (maxConnectionPerServer > 16) {
100 | maxConnectionPerServer = 16;
101 | }
102 | trackerSubscriptionAddress =
103 | prefs.getString('TrackerSubscriptionAddress') ??
104 | defaultTrackerSubscriptionAddress;
105 | trackerServersList = prefs.getString('TrackerServersList') ?? '';
106 | silentStart = prefs.getBool('SilentStart') ?? false;
107 | }
108 | }
109 |
--------------------------------------------------------------------------------
/lib/generated/intl/messages_all.dart:
--------------------------------------------------------------------------------
1 | // DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
2 | // This is a library that looks up messages for specific locales by
3 | // delegating to the appropriate library.
4 |
5 | // Ignore issues from commonly used lints in this file.
6 | // ignore_for_file:implementation_imports, file_names, unnecessary_new
7 | // ignore_for_file:unnecessary_brace_in_string_interps, directives_ordering
8 | // ignore_for_file:argument_type_not_assignable, invalid_assignment
9 | // ignore_for_file:prefer_single_quotes, prefer_generic_function_type_aliases
10 | // ignore_for_file:comment_references
11 |
12 | import 'dart:async';
13 |
14 | import 'package:flutter/foundation.dart';
15 | import 'package:intl/intl.dart';
16 | import 'package:intl/message_lookup_by_library.dart';
17 | import 'package:intl/src/intl_helpers.dart';
18 |
19 | import 'messages_en.dart' as messages_en;
20 | import 'messages_zh_CN.dart' as messages_zh_cn;
21 |
22 | typedef Future LibraryLoader();
23 | Map _deferredLibraries = {
24 | 'en': () => new SynchronousFuture(null),
25 | 'zh_CN': () => new SynchronousFuture(null),
26 | };
27 |
28 | MessageLookupByLibrary? _findExact(String localeName) {
29 | switch (localeName) {
30 | case 'en':
31 | return messages_en.messages;
32 | case 'zh_CN':
33 | return messages_zh_cn.messages;
34 | default:
35 | return null;
36 | }
37 | }
38 |
39 | /// User programs should call this before using [localeName] for messages.
40 | Future initializeMessages(String localeName) {
41 | var availableLocale = Intl.verifiedLocale(
42 | localeName, (locale) => _deferredLibraries[locale] != null,
43 | onFailure: (_) => null);
44 | if (availableLocale == null) {
45 | return new SynchronousFuture(false);
46 | }
47 | var lib = _deferredLibraries[availableLocale];
48 | lib == null ? new SynchronousFuture(false) : lib();
49 | initializeInternalMessageLookup(() => new CompositeMessageLookup());
50 | messageLookup.addLocale(availableLocale, _findGeneratedMessagesFor);
51 | return new SynchronousFuture(true);
52 | }
53 |
54 | bool _messagesExistFor(String locale) {
55 | try {
56 | return _findExact(locale) != null;
57 | } catch (e) {
58 | return false;
59 | }
60 | }
61 |
62 | MessageLookupByLibrary? _findGeneratedMessagesFor(String locale) {
63 | var actualLocale =
64 | Intl.verifiedLocale(locale, _messagesExistFor, onFailure: (_) => null);
65 | if (actualLocale == null) return null;
66 | return _findExact(actualLocale);
67 | }
68 |
--------------------------------------------------------------------------------
/lib/generated/intl/messages_en.dart:
--------------------------------------------------------------------------------
1 | // DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
2 | // This is a library that provides messages for a en locale. All the
3 | // messages from the main program should be duplicated here with the same
4 | // function name.
5 |
6 | // Ignore issues from commonly used lints in this file.
7 | // ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
8 | // ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
9 | // ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
10 | // ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes
11 | // ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes
12 |
13 | import 'package:intl/intl.dart';
14 | import 'package:intl/message_lookup_by_library.dart';
15 |
16 | final messages = new MessageLookup();
17 |
18 | typedef String MessageIfAbsent(String messageStr, List args);
19 |
20 | class MessageLookup extends MessageLookupByLibrary {
21 | String get localeName => 'en';
22 |
23 | final messages = _notInlinedMessages(_notInlinedMessages);
24 | static Map _notInlinedMessages(_) => {
25 | "RPC": MessageLookupByLibrary.simpleMessage("RPC"),
26 | "RPCInfo": MessageLookupByLibrary.simpleMessage(
27 | "Restarting aria2 service to take effect settings."),
28 | "RPCListenPort":
29 | MessageLookupByLibrary.simpleMessage("RPC Listen Port"),
30 | "RPCSecret": MessageLookupByLibrary.simpleMessage("RPC Secret"),
31 | "UA": MessageLookupByLibrary.simpleMessage("User-Agent"),
32 | "URL": MessageLookupByLibrary.simpleMessage("URL"),
33 | "URLTextBox": MessageLookupByLibrary.simpleMessage(
34 | "One task url per line (supports magnet , Flashget:// , qqdl:// and thunder://)"),
35 | "advanced": MessageLookupByLibrary.simpleMessage("Advanced"),
36 | "autoUpdateTrackerList": MessageLookupByLibrary.simpleMessage(
37 | "Update tracker list every day automatically"),
38 | "basic": MessageLookupByLibrary.simpleMessage("Basic"),
39 | "bypassProxy": MessageLookupByLibrary.simpleMessage(
40 | "Bypass proxy settings for these Hosts and Domains,a comma separated"),
41 | "cancel": MessageLookupByLibrary.simpleMessage("Cancel"),
42 | "classificationSaving":
43 | MessageLookupByLibrary.simpleMessage("Classification Saving"),
44 | "classificationSavingInfo": MessageLookupByLibrary.simpleMessage(
45 | "Enabling category saving will create category directories in the download path."),
46 | "classificationSavingRules":
47 | MessageLookupByLibrary.simpleMessage("Classification Saving Rules"),
48 | "classificationSavingRulesInfo": MessageLookupByLibrary.simpleMessage(
49 | "Customization of classification saving rules"),
50 | "closeInfo": MessageLookupByLibrary.simpleMessage(
51 | "Are you sure you want to close this window?"),
52 | "compressedFiles":
53 | MessageLookupByLibrary.simpleMessage("Compressed-Files"),
54 | "confirmClose": MessageLookupByLibrary.simpleMessage("Confirm close"),
55 | "delete": MessageLookupByLibrary.simpleMessage("Delete"),
56 | "deleteAllTasks":
57 | MessageLookupByLibrary.simpleMessage("Delete All Tasks"),
58 | "deleteFile": MessageLookupByLibrary.simpleMessage(
59 | "Delete files when removing tasks"),
60 | "deleteThisTasks":
61 | MessageLookupByLibrary.simpleMessage("Delete This Tasks"),
62 | "documents": MessageLookupByLibrary.simpleMessage("Documents"),
63 | "downloadPath": MessageLookupByLibrary.simpleMessage("Download Path"),
64 | "downloadPathInfo":
65 | MessageLookupByLibrary.simpleMessage("Set default download path"),
66 | "downloading": MessageLookupByLibrary.simpleMessage("Downloading"),
67 | "dropTorrent": MessageLookupByLibrary.simpleMessage(
68 | "Drag the torrent/metalink file here or click here to open it"),
69 | "exitApp": MessageLookupByLibrary.simpleMessage("Exit App"),
70 | "general": MessageLookupByLibrary.simpleMessage("General"),
71 | "language": MessageLookupByLibrary.simpleMessage("Language"),
72 | "lowestDownloadLimit":
73 | MessageLookupByLibrary.simpleMessage("Lowest Download Limit"),
74 | "lowestDownloadLimitInfo": MessageLookupByLibrary.simpleMessage(
75 | "Close connection if download speed is lower than or equal to this value."),
76 | "maxConcurrentDownloads":
77 | MessageLookupByLibrary.simpleMessage("Max Concurrent Downloads"),
78 | "maxConnectionPerServer":
79 | MessageLookupByLibrary.simpleMessage("Max Connection Per Server"),
80 | "maxDownloadLimit":
81 | MessageLookupByLibrary.simpleMessage("Max Download Limit"),
82 | "maxOverallDownloadLimit":
83 | MessageLookupByLibrary.simpleMessage("Max Overall Download Limit"),
84 | "maxOverallUploadLimit":
85 | MessageLookupByLibrary.simpleMessage("Max Overall Upload Limit"),
86 | "maxUploadLimit":
87 | MessageLookupByLibrary.simpleMessage("Max Upload Limit"),
88 | "mockUA": MessageLookupByLibrary.simpleMessage("Mock User-Agent."),
89 | "music": MessageLookupByLibrary.simpleMessage("Music"),
90 | "navigationIndicator":
91 | MessageLookupByLibrary.simpleMessage("Navigation Indicator"),
92 | "navigationMode":
93 | MessageLookupByLibrary.simpleMessage("Navigation Mode"),
94 | "newDownload": MessageLookupByLibrary.simpleMessage("New"),
95 | "no": MessageLookupByLibrary.simpleMessage("No"),
96 | "noTaskDownloaded":
97 | MessageLookupByLibrary.simpleMessage("There are no current tasks"),
98 | "openDirectory": MessageLookupByLibrary.simpleMessage("Open Directory"),
99 | "openFile": MessageLookupByLibrary.simpleMessage("Open File"),
100 | "path": MessageLookupByLibrary.simpleMessage("Path"),
101 | "pauseAllTasks":
102 | MessageLookupByLibrary.simpleMessage("Pause All Tasks"),
103 | "pauseThisTasks":
104 | MessageLookupByLibrary.simpleMessage("Pause This Tasks"),
105 | "programs": MessageLookupByLibrary.simpleMessage("Programs"),
106 | "proxy": MessageLookupByLibrary.simpleMessage("Proxy"),
107 | "purgeTaskRecord":
108 | MessageLookupByLibrary.simpleMessage("Purge Task Record"),
109 | "refreshTaskList":
110 | MessageLookupByLibrary.simpleMessage("Refresh Task List"),
111 | "rememberWindowSize":
112 | MessageLookupByLibrary.simpleMessage("Remember Window Size"),
113 | "rememberWindowSizeInfo": MessageLookupByLibrary.simpleMessage(
114 | "Restore the previous window size at startup"),
115 | "removeTask": MessageLookupByLibrary.simpleMessage("Remove Task"),
116 | "removeTaskInfo": MessageLookupByLibrary.simpleMessage(
117 | "Are you sure you want to remove this download task?"),
118 | "resumeAllTasks":
119 | MessageLookupByLibrary.simpleMessage("Resume All Tasks"),
120 | "resumeThisTasks":
121 | MessageLookupByLibrary.simpleMessage("Resume This Tasks"),
122 | "saveApply": MessageLookupByLibrary.simpleMessage("Save & Apply"),
123 | "savedSuccessfully": MessageLookupByLibrary.simpleMessage(
124 | "Preferences saved successfully."),
125 | "setsAnOverrideForTheAppsPreferredLanguage":
126 | MessageLookupByLibrary.simpleMessage(
127 | "Sets an override for the app\'s preferred language."),
128 | "setsDownloadProxyServer":
129 | MessageLookupByLibrary.simpleMessage("Sets Download Proxy Server."),
130 | "setsTheDisplayModeOfTheNavigationPane":
131 | MessageLookupByLibrary.simpleMessage(
132 | "Sets the display mode of the navigation pane."),
133 | "setsTheRPCOfTheApplication": MessageLookupByLibrary.simpleMessage(
134 | "Sets the RPC of the application."),
135 | "setsTheStyleOfTheNavigationIndicator":
136 | MessageLookupByLibrary.simpleMessage(
137 | "Set the style of the navigation indicator."),
138 | "setsTheThemeOfTheApplication": MessageLookupByLibrary.simpleMessage(
139 | "Sets the theme of the application."),
140 | "settings": MessageLookupByLibrary.simpleMessage("Settings"),
141 | "showWindow": MessageLookupByLibrary.simpleMessage("Show Window"),
142 | "silentStart": MessageLookupByLibrary.simpleMessage("Silent Start"),
143 | "silentStartInfo": MessageLookupByLibrary.simpleMessage(
144 | "Minimize to tray after startup"),
145 | "sourceCode": MessageLookupByLibrary.simpleMessage("Source code"),
146 | "speedLimit": MessageLookupByLibrary.simpleMessage("Speed Limit"),
147 | "speedLimitInfo": MessageLookupByLibrary.simpleMessage(
148 | "Restrict download or upload speed"),
149 | "stopped": MessageLookupByLibrary.simpleMessage("Stopped"),
150 | "submit": MessageLookupByLibrary.simpleMessage("Submit"),
151 | "subscriptionAddress":
152 | MessageLookupByLibrary.simpleMessage("Subscription Address"),
153 | "subscriptionAddressInfo": MessageLookupByLibrary.simpleMessage(
154 | "Separate links with commas(,)"),
155 | "taskManagement":
156 | MessageLookupByLibrary.simpleMessage("Task Management"),
157 | "taskManagementInfo": MessageLookupByLibrary.simpleMessage(
158 | "Download task related settings"),
159 | "theme": MessageLookupByLibrary.simpleMessage("Theme"),
160 | "topping": MessageLookupByLibrary.simpleMessage("Topping"),
161 | "torrent": MessageLookupByLibrary.simpleMessage("Torrent"),
162 | "trackerServers":
163 | MessageLookupByLibrary.simpleMessage("Tracker Servers"),
164 | "trackerServersInfo": MessageLookupByLibrary.simpleMessage(
165 | "Set the Bt Tracker server address"),
166 | "trackerServersList":
167 | MessageLookupByLibrary.simpleMessage("Tracker Servers List"),
168 | "trackerServersListInfo": MessageLookupByLibrary.simpleMessage(
169 | "Tracker servers,one per line"),
170 | "videos": MessageLookupByLibrary.simpleMessage("Videos"),
171 | "waiting": MessageLookupByLibrary.simpleMessage("Waiting"),
172 | "yes": MessageLookupByLibrary.simpleMessage("Yes")
173 | };
174 | }
175 |
--------------------------------------------------------------------------------
/lib/generated/intl/messages_zh_CN.dart:
--------------------------------------------------------------------------------
1 | // DO NOT EDIT. This is code generated via package:intl/generate_localized.dart
2 | // This is a library that provides messages for a zh_CN locale. All the
3 | // messages from the main program should be duplicated here with the same
4 | // function name.
5 |
6 | // Ignore issues from commonly used lints in this file.
7 | // ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new
8 | // ignore_for_file:prefer_single_quotes,comment_references, directives_ordering
9 | // ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases
10 | // ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes
11 | // ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes
12 |
13 | import 'package:intl/intl.dart';
14 | import 'package:intl/message_lookup_by_library.dart';
15 |
16 | final messages = new MessageLookup();
17 |
18 | typedef String MessageIfAbsent(String messageStr, List args);
19 |
20 | class MessageLookup extends MessageLookupByLibrary {
21 | String get localeName => 'zh_CN';
22 |
23 | final messages = _notInlinedMessages(_notInlinedMessages);
24 | static Map _notInlinedMessages(_) => {
25 | "RPC": MessageLookupByLibrary.simpleMessage("RPC"),
26 | "RPCInfo": MessageLookupByLibrary.simpleMessage("正在重启aria2服务以生效设置项"),
27 | "RPCListenPort": MessageLookupByLibrary.simpleMessage("RPC侦听端口"),
28 | "RPCSecret": MessageLookupByLibrary.simpleMessage("RPC密钥"),
29 | "UA": MessageLookupByLibrary.simpleMessage("User-Agent"),
30 | "URL": MessageLookupByLibrary.simpleMessage("链接任务"),
31 | "URLTextBox": MessageLookupByLibrary.simpleMessage(
32 | "添加多个下载链接时,请确保每行只有一个链接(支持磁力链、Flashget://、qqdl://和thunder://)"),
33 | "advanced": MessageLookupByLibrary.simpleMessage("进阶"),
34 | "autoUpdateTrackerList":
35 | MessageLookupByLibrary.simpleMessage("每天自动更新 Tracker 服务器列表"),
36 | "basic": MessageLookupByLibrary.simpleMessage("基础"),
37 | "bypassProxy":
38 | MessageLookupByLibrary.simpleMessage("绕过这些主机和域的代理设置,多个使用逗号分隔"),
39 | "cancel": MessageLookupByLibrary.simpleMessage("取消"),
40 | "classificationSaving": MessageLookupByLibrary.simpleMessage("分类存放"),
41 | "classificationSavingInfo":
42 | MessageLookupByLibrary.simpleMessage("启用分类存放后将在下载路径创建分类目录"),
43 | "classificationSavingRules":
44 | MessageLookupByLibrary.simpleMessage("分类存放规则"),
45 | "classificationSavingRulesInfo":
46 | MessageLookupByLibrary.simpleMessage("自定义分类存放规则"),
47 | "closeInfo": MessageLookupByLibrary.simpleMessage("您确定要关闭此窗口吗?"),
48 | "compressedFiles": MessageLookupByLibrary.simpleMessage("压缩文件"),
49 | "confirmClose": MessageLookupByLibrary.simpleMessage("确认关闭"),
50 | "delete": MessageLookupByLibrary.simpleMessage("移除"),
51 | "deleteAllTasks": MessageLookupByLibrary.simpleMessage("删除所有任务"),
52 | "deleteFile": MessageLookupByLibrary.simpleMessage("移除任务时删除文件"),
53 | "deleteThisTasks": MessageLookupByLibrary.simpleMessage("删除本任务"),
54 | "documents": MessageLookupByLibrary.simpleMessage("文档"),
55 | "downloadPath": MessageLookupByLibrary.simpleMessage("下载路径"),
56 | "downloadPathInfo": MessageLookupByLibrary.simpleMessage("设置默认下载路径"),
57 | "downloading": MessageLookupByLibrary.simpleMessage("下载中"),
58 | "dropTorrent":
59 | MessageLookupByLibrary.simpleMessage("拖动torrent/metalink文件到此或点击打开"),
60 | "exitApp": MessageLookupByLibrary.simpleMessage("退出程序"),
61 | "general": MessageLookupByLibrary.simpleMessage("常规"),
62 | "language": MessageLookupByLibrary.simpleMessage("语言"),
63 | "lowestDownloadLimit":
64 | MessageLookupByLibrary.simpleMessage("最小单任务下载速度"),
65 | "lowestDownloadLimitInfo":
66 | MessageLookupByLibrary.simpleMessage("当下载速度低于此选项设置的值时将会关闭连接"),
67 | "maxConcurrentDownloads":
68 | MessageLookupByLibrary.simpleMessage("最大同时下载数"),
69 | "maxConnectionPerServer":
70 | MessageLookupByLibrary.simpleMessage("单服务器最大连接数"),
71 | "maxDownloadLimit": MessageLookupByLibrary.simpleMessage("最大单任务下载速度"),
72 | "maxOverallDownloadLimit":
73 | MessageLookupByLibrary.simpleMessage("最大全局下载速度"),
74 | "maxOverallUploadLimit":
75 | MessageLookupByLibrary.simpleMessage("最大全局上传速度"),
76 | "maxUploadLimit": MessageLookupByLibrary.simpleMessage("最大单任务上传速度"),
77 | "mockUA": MessageLookupByLibrary.simpleMessage("模拟用户代理"),
78 | "music": MessageLookupByLibrary.simpleMessage("音乐"),
79 | "navigationIndicator": MessageLookupByLibrary.simpleMessage("导航指示器"),
80 | "navigationMode": MessageLookupByLibrary.simpleMessage("导航模式"),
81 | "newDownload": MessageLookupByLibrary.simpleMessage("新建"),
82 | "no": MessageLookupByLibrary.simpleMessage("不是"),
83 | "noTaskDownloaded": MessageLookupByLibrary.simpleMessage("当前没有下载任务"),
84 | "openDirectory": MessageLookupByLibrary.simpleMessage("打开目录"),
85 | "openFile": MessageLookupByLibrary.simpleMessage("打开文件"),
86 | "path": MessageLookupByLibrary.simpleMessage("存储路径"),
87 | "pauseAllTasks": MessageLookupByLibrary.simpleMessage("暂停所有任务"),
88 | "pauseThisTasks": MessageLookupByLibrary.simpleMessage("暂停本任务"),
89 | "programs": MessageLookupByLibrary.simpleMessage("程序"),
90 | "proxy": MessageLookupByLibrary.simpleMessage("代理"),
91 | "purgeTaskRecord": MessageLookupByLibrary.simpleMessage("清除任务记录"),
92 | "refreshTaskList": MessageLookupByLibrary.simpleMessage("刷新任务列表"),
93 | "rememberWindowSize": MessageLookupByLibrary.simpleMessage("记住窗口大小"),
94 | "rememberWindowSizeInfo":
95 | MessageLookupByLibrary.simpleMessage("启动时恢复上次的窗口大小"),
96 | "removeTask": MessageLookupByLibrary.simpleMessage("移除任务"),
97 | "removeTaskInfo": MessageLookupByLibrary.simpleMessage("您确定要移除本下载任务吗?"),
98 | "resumeAllTasks": MessageLookupByLibrary.simpleMessage("继续所有任务"),
99 | "resumeThisTasks": MessageLookupByLibrary.simpleMessage("继续本任务"),
100 | "saveApply": MessageLookupByLibrary.simpleMessage("保存并应用"),
101 | "savedSuccessfully": MessageLookupByLibrary.simpleMessage("已成功保存首选项"),
102 | "setsAnOverrideForTheAppsPreferredLanguage":
103 | MessageLookupByLibrary.simpleMessage("设置应用程序首选语言的覆盖"),
104 | "setsDownloadProxyServer":
105 | MessageLookupByLibrary.simpleMessage("设置下载代理服务器"),
106 | "setsTheDisplayModeOfTheNavigationPane":
107 | MessageLookupByLibrary.simpleMessage("设置导航窗格的显示模式"),
108 | "setsTheRPCOfTheApplication":
109 | MessageLookupByLibrary.simpleMessage("设置应用程序的RPC"),
110 | "setsTheStyleOfTheNavigationIndicator":
111 | MessageLookupByLibrary.simpleMessage("设置导航指示器的样式"),
112 | "setsTheThemeOfTheApplication":
113 | MessageLookupByLibrary.simpleMessage("设置应用程序的主题"),
114 | "settings": MessageLookupByLibrary.simpleMessage("设置"),
115 | "showWindow": MessageLookupByLibrary.simpleMessage("显示窗口"),
116 | "silentStart": MessageLookupByLibrary.simpleMessage("静默启动"),
117 | "silentStartInfo": MessageLookupByLibrary.simpleMessage("启动后最小化到托盘"),
118 | "sourceCode": MessageLookupByLibrary.simpleMessage("源代码"),
119 | "speedLimit": MessageLookupByLibrary.simpleMessage("速度限制"),
120 | "speedLimitInfo": MessageLookupByLibrary.simpleMessage("限制下载或上传速度"),
121 | "stopped": MessageLookupByLibrary.simpleMessage("已停止"),
122 | "submit": MessageLookupByLibrary.simpleMessage("提交"),
123 | "subscriptionAddress": MessageLookupByLibrary.simpleMessage("订阅地址"),
124 | "subscriptionAddressInfo":
125 | MessageLookupByLibrary.simpleMessage("请以英文逗号(,)分隔链接"),
126 | "taskManagement": MessageLookupByLibrary.simpleMessage("任务管理"),
127 | "taskManagementInfo": MessageLookupByLibrary.simpleMessage("下载任务相关设置项"),
128 | "theme": MessageLookupByLibrary.simpleMessage("主题"),
129 | "topping": MessageLookupByLibrary.simpleMessage("优先下载"),
130 | "torrent": MessageLookupByLibrary.simpleMessage("种子任务"),
131 | "trackerServers": MessageLookupByLibrary.simpleMessage("Tracker 服务器"),
132 | "trackerServersInfo":
133 | MessageLookupByLibrary.simpleMessage("设置Bt Tracker服务器地址"),
134 | "trackerServersList":
135 | MessageLookupByLibrary.simpleMessage("Tracker 服务器列表"),
136 | "trackerServersListInfo":
137 | MessageLookupByLibrary.simpleMessage("Tracker 服务器,一行一个"),
138 | "videos": MessageLookupByLibrary.simpleMessage("视频"),
139 | "waiting": MessageLookupByLibrary.simpleMessage("等待中"),
140 | "yes": MessageLookupByLibrary.simpleMessage("是的")
141 | };
142 | }
143 |
--------------------------------------------------------------------------------
/lib/l10n/intl_en.arb:
--------------------------------------------------------------------------------
1 | {
2 | "downloading":"Downloading",
3 | "waiting":"Waiting",
4 | "stopped":"Stopped",
5 | "settings":"Settings",
6 | "deleteAllTasks":"Delete All Tasks",
7 | "refreshTaskList":"Refresh Task List",
8 | "resumeAllTasks":"Resume All Tasks",
9 | "pauseAllTasks":"Pause All Tasks",
10 | "purgeTaskRecord":"Purge Task Record",
11 | "basic":"Basic",
12 | "theme":"Theme",
13 | "setsTheThemeOfTheApplication":"Sets the theme of the application.",
14 | "language":"Language",
15 | "setsAnOverrideForTheAppsPreferredLanguage":"Sets an override for the app's preferred language.",
16 | "navigationMode":"Navigation Mode",
17 | "setsTheDisplayModeOfTheNavigationPane":"Sets the display mode of the navigation pane.",
18 | "navigationIndicator":"Navigation Indicator",
19 | "setsTheStyleOfTheNavigationIndicator":"Set the style of the navigation indicator.",
20 | "advanced":"Advanced",
21 | "setsDownloadProxyServer":"Sets Download Proxy Server.",
22 | "proxy":"Proxy",
23 | "bypassProxy":"Bypass proxy settings for these Hosts and Domains,a comma separated",
24 | "saveApply":"Save & Apply",
25 | "savedSuccessfully":"Preferences saved successfully.",
26 | "RPC":"RPC",
27 | "setsTheRPCOfTheApplication":"Sets the RPC of the application.",
28 | "RPCListenPort":"RPC Listen Port",
29 | "RPCInfo":"Restarting aria2 service to take effect settings.",
30 | "RPCSecret":"RPC Secret",
31 | "UA":"User-Agent",
32 | "mockUA":"Mock User-Agent.",
33 | "sourceCode":"Source code",
34 | "confirmClose":"Confirm close",
35 | "closeInfo":"Are you sure you want to close this window?",
36 | "yes":"Yes",
37 | "no":"No",
38 | "downloadPath":"Download Path",
39 | "downloadPathInfo":"Set default download path",
40 | "newDownload":"New",
41 | "URL":"URL",
42 | "torrent":"Torrent",
43 | "URLTextBox":"One task url per line (supports magnet , Flashget:// , qqdl:// and thunder://)",
44 | "cancel":"Cancel",
45 | "submit":"Submit",
46 | "path":"Path",
47 | "deleteThisTasks":"Delete This Tasks",
48 | "resumeThisTasks":"Resume This Tasks",
49 | "pauseThisTasks":"Pause This Tasks",
50 | "rememberWindowSize":"Remember Window Size",
51 | "rememberWindowSizeInfo":"Restore the previous window size at startup",
52 | "topping":"Topping",
53 | "speedLimit":"Speed Limit",
54 | "speedLimitInfo":"Restrict download or upload speed",
55 | "maxOverallDownloadLimit":"Max Overall Download Limit",
56 | "maxDownloadLimit":"Max Download Limit",
57 | "maxOverallUploadLimit":"Max Overall Upload Limit",
58 | "maxUploadLimit":"Max Upload Limit",
59 | "classificationSaving":"Classification Saving",
60 | "classificationSavingInfo":"Enabling category saving will create category directories in the download path.",
61 | "general":"General",
62 | "compressedFiles":"Compressed-Files",
63 | "documents":"Documents",
64 | "music":"Music",
65 | "programs":"Programs",
66 | "videos":"Videos",
67 | "classificationSavingRules":"Classification Saving Rules",
68 | "classificationSavingRulesInfo":"Customization of classification saving rules",
69 | "taskManagement":"Task Management",
70 | "taskManagementInfo":"Download task related settings",
71 | "maxConcurrentDownloads": "Max Concurrent Downloads",
72 | "maxConnectionPerServer":"Max Connection Per Server",
73 | "removeTask":"Remove Task",
74 | "removeTaskInfo":"Are you sure you want to remove this download task?",
75 | "delete":"Delete",
76 | "deleteFile":"Delete files when removing tasks",
77 | "showWindow":"Show Window",
78 | "exitApp":"Exit App",
79 | "openDirectory":"Open Directory",
80 | "openFile":"Open File",
81 | "dropTorrent":"Drag the torrent/metalink file here or click here to open it",
82 | "lowestDownloadLimit":"Lowest Download Limit",
83 | "lowestDownloadLimitInfo":"Close connection if download speed is lower than or equal to this value.",
84 | "trackerServers":"Tracker Servers",
85 | "trackerServersList":"Tracker Servers List",
86 | "trackerServersListInfo":"Tracker servers,one per line",
87 | "trackerServersInfo":"Set the Bt Tracker server address",
88 | "subscriptionAddress":"Subscription Address",
89 | "subscriptionAddressInfo":"Separate links with commas(,)",
90 | "autoUpdateTrackerList":"Update tracker list every day automatically",
91 | "noTaskDownloaded":"There are no current tasks",
92 | "silentStart":"Silent Start",
93 | "silentStartInfo":"Minimize to tray after startup"
94 | }
--------------------------------------------------------------------------------
/lib/l10n/intl_zh_CN.arb:
--------------------------------------------------------------------------------
1 | {
2 | "downloading":"下载中",
3 | "waiting":"等待中",
4 | "stopped":"已停止",
5 | "settings":"设置",
6 | "deleteAllTasks":"删除所有任务",
7 | "refreshTaskList":"刷新任务列表",
8 | "resumeAllTasks":"继续所有任务",
9 | "pauseAllTasks":"暂停所有任务",
10 | "purgeTaskRecord":"清除任务记录",
11 | "basic":"基础",
12 | "theme":"主题",
13 | "setsTheThemeOfTheApplication":"设置应用程序的主题",
14 | "language":"语言",
15 | "setsAnOverrideForTheAppsPreferredLanguage":"设置应用程序首选语言的覆盖",
16 | "navigationMode":"导航模式",
17 | "setsTheDisplayModeOfTheNavigationPane":"设置导航窗格的显示模式",
18 | "navigationIndicator":"导航指示器",
19 | "setsTheStyleOfTheNavigationIndicator":"设置导航指示器的样式",
20 | "advanced":"进阶",
21 | "setsDownloadProxyServer":"设置下载代理服务器",
22 | "proxy":"代理",
23 | "bypassProxy":"绕过这些主机和域的代理设置,多个使用逗号分隔",
24 | "saveApply":"保存并应用",
25 | "savedSuccessfully":"已成功保存首选项",
26 | "RPC":"RPC",
27 | "setsTheRPCOfTheApplication":"设置应用程序的RPC",
28 | "RPCListenPort":"RPC侦听端口",
29 | "RPCInfo":"正在重启aria2服务以生效设置项",
30 | "RPCSecret":"RPC密钥",
31 | "UA":"User-Agent",
32 | "mockUA":"模拟用户代理",
33 | "sourceCode":"源代码",
34 | "confirmClose":"确认关闭",
35 | "closeInfo":"您确定要关闭此窗口吗?",
36 | "yes":"是的",
37 | "no":"不是",
38 | "downloadPath":"下载路径",
39 | "downloadPathInfo":"设置默认下载路径",
40 | "newDownload":"新建",
41 | "URL":"链接任务",
42 | "torrent":"种子任务",
43 | "URLTextBox":"添加多个下载链接时,请确保每行只有一个链接(支持磁力链、Flashget://、qqdl://和thunder://)",
44 | "cancel":"取消",
45 | "submit":"提交",
46 | "path":"存储路径",
47 | "deleteThisTasks":"删除本任务",
48 | "resumeThisTasks":"继续本任务",
49 | "pauseThisTasks":"暂停本任务",
50 | "rememberWindowSize":"记住窗口大小",
51 | "rememberWindowSizeInfo":"启动时恢复上次的窗口大小",
52 | "topping":"优先下载",
53 | "speedLimit":"速度限制",
54 | "speedLimitInfo":"限制下载或上传速度",
55 | "maxOverallDownloadLimit":"最大全局下载速度",
56 | "maxDownloadLimit":"最大单任务下载速度",
57 | "maxOverallUploadLimit":"最大全局上传速度",
58 | "maxUploadLimit":"最大单任务上传速度",
59 | "classificationSaving":"分类存放",
60 | "classificationSavingInfo":"启用分类存放后将在下载路径创建分类目录",
61 | "general":"常规",
62 | "compressedFiles":"压缩文件",
63 | "documents":"文档",
64 | "music":"音乐",
65 | "programs":"程序",
66 | "videos":"视频",
67 | "classificationSavingRules":"分类存放规则",
68 | "classificationSavingRulesInfo":"自定义分类存放规则",
69 | "taskManagement":"任务管理",
70 | "taskManagementInfo":"下载任务相关设置项",
71 | "maxConcurrentDownloads": "最大同时下载数",
72 | "maxConnectionPerServer":"单服务器最大连接数",
73 | "removeTask":"移除任务",
74 | "removeTaskInfo":"您确定要移除本下载任务吗?",
75 | "delete":"移除",
76 | "deleteFile":"移除任务时删除文件",
77 | "showWindow":"显示窗口",
78 | "exitApp":"退出程序",
79 | "openDirectory":"打开目录",
80 | "openFile":"打开文件",
81 | "dropTorrent":"拖动torrent/metalink文件到此或点击打开",
82 | "lowestDownloadLimit":"最小单任务下载速度",
83 | "lowestDownloadLimitInfo":"当下载速度低于此选项设置的值时将会关闭连接",
84 | "trackerServers":"Tracker 服务器",
85 | "trackerServersList":"Tracker 服务器列表",
86 | "trackerServersListInfo":"Tracker 服务器,一行一个",
87 | "trackerServersInfo":"设置Bt Tracker服务器地址",
88 | "subscriptionAddress":"订阅地址",
89 | "subscriptionAddressInfo":"请以英文逗号(,)分隔链接",
90 | "autoUpdateTrackerList":"每天自动更新 Tracker 服务器列表",
91 | "noTaskDownloaded":"当前没有下载任务",
92 | "silentStart":"静默启动",
93 | "silentStartInfo":"启动后最小化到托盘"
94 | }
--------------------------------------------------------------------------------
/lib/model/download_item.dart:
--------------------------------------------------------------------------------
1 | class DownloadItem {
2 | int completedLength;
3 | String path;
4 | String connections;
5 | int downloadSpeed;
6 | String gid;
7 | String status;
8 | int totalLength;
9 | int uploadSpeed;
10 |
11 | DownloadItem({
12 | required this.completedLength,
13 | required this.path,
14 | required this.connections,
15 | required this.downloadSpeed,
16 | required this.gid,
17 | required this.status,
18 | required this.totalLength,
19 | required this.uploadSpeed,
20 | });
21 |
22 | factory DownloadItem.fromJson(Map json) {
23 | return DownloadItem(
24 | completedLength: json['completedLength'],
25 | path: json['path'],
26 | connections: json['connections'],
27 | downloadSpeed: json['downloadSpeed'],
28 | gid: json['gid'],
29 | status: json['status'],
30 | totalLength: json['totalLength'],
31 | uploadSpeed: json['uploadSpeed'],
32 | );
33 | }
34 |
35 | Map toJson() {
36 | return {
37 | 'completedLength': completedLength,
38 | 'path': path,
39 | 'connections': connections,
40 | 'downloadSpeed': downloadSpeed,
41 | 'gid': gid,
42 | 'status': status,
43 | 'totalLength': totalLength,
44 | 'uploadSpeed': uploadSpeed,
45 | };
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/lib/model/download_list_model.dart:
--------------------------------------------------------------------------------
1 | import 'dart:convert';
2 |
3 | import 'package:flutter/foundation.dart';
4 | import 'package:yolx/model/download_item.dart';
5 | import 'package:yolx/utils/file_utils.dart';
6 | import 'package:yolx/utils/log.dart';
7 |
8 | class DownloadListModel extends ChangeNotifier {
9 | List _downloadingList = [];
10 | List _waitingList = [];
11 | List _stoppedList = [];
12 | List _historyList = [];
13 |
14 | List get downloadingList => _downloadingList;
15 | List get waitingList => _waitingList;
16 | List get stoppedList {
17 | List combinedList = List.from(_stoppedList);
18 | List downloadGids = _stoppedList.map((item) => item.gid).toList();
19 | List uniqueHistoryItems =
20 | _historyList.where((item) => !downloadGids.contains(item.gid)).toList();
21 | combinedList.addAll(uniqueHistoryItems);
22 | return combinedList;
23 | }
24 |
25 | void removeAllFromHistoryList() {
26 | _historyList.clear();
27 | saveHistoryListToJson();
28 | notifyListeners();
29 | }
30 |
31 | void removeFromHistoryList(String gid) {
32 | _historyList.removeWhere((item) => item.gid == gid);
33 | saveHistoryListToJson();
34 | notifyListeners();
35 | }
36 |
37 | Future saveHistoryListToJson() async {
38 | updateHistoryList();
39 | final historyListFile = await getLocalFile('historyList.json');
40 | List