diff --git a/.github/workflows/bridge.yml b/.github/workflows/bridge.yml index 54180ccdd..f06956c18 100644 --- a/.github/workflows/bridge.yml +++ b/.github/workflows/bridge.yml @@ -6,7 +6,7 @@ on: workflow_call: env: - FLUTTER_VERSION: "3.19.6" + FLUTTER_VERSION: "3.22.3" FLUTTER_RUST_BRIDGE_VERSION: "1.80.1" RUST_VERSION: "1.75" # https://github.com/rustdesk/rustdesk/discussions/7503 @@ -22,11 +22,18 @@ jobs: os: ubuntu-20.04, extra-build-args: "", } + - { + target: aarch64-apple-darwin, + os: macos-latest, + arch: aarch64, + extra-build-args: "", + } steps: - name: Checkout source code uses: actions/checkout@v4 - name: Install prerequisites + if: matrix.job.os == 'ubuntu-20.04' run: | sudo apt-get install ca-certificates -y sudo apt-get update -y @@ -74,13 +81,22 @@ jobs: shell: bash run: | cargo install flutter_rust_bridge_codegen --version ${{ env.FLUTTER_RUST_BRIDGE_VERSION }} --features "uuid" - pushd flutter && flutter pub get && popd + pushd flutter && sed -i -e 's/extended_text: 14.0.0/extended_text: 13.0.0/g' pubspec.yaml && flutter pub get && popd - name: Run flutter rust bridge run: | - ~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart + case ${{ matrix.job.os }} in + ubuntu-20.04) + ~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart + ;; + macos-latest) + ~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart --c-output ./flutter/macos/Runner/bridge_generated.h + ~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart --c-output ./flutter/ios/Runner/bridge_generated.h + ;; + esac - - name: Upload Artifact + - name: Upload Artifact(ubuntu) + if: matrix.job.os == 'ubuntu-20.04' uses: actions/upload-artifact@master with: name: bridge-artifact @@ -89,3 +105,16 @@ jobs: ./src/bridge_generated.io.rs ./flutter/lib/generated_bridge.dart ./flutter/lib/generated_bridge.freezed.dart + + - name: Upload Artifact(macos) + if: matrix.job.os == 'macos-latest' + uses: actions/upload-artifact@master + with: + name: bridge-artifact-macos + path: | + ./src/bridge_generated.rs + ./src/bridge_generated.io.rs + ./flutter/lib/generated_bridge.dart + ./flutter/lib/generated_bridge.freezed.dart + ./flutter/macos/Runner/bridge_generated.h + ./flutter/ios/Runner/bridge_generated.h diff --git a/.github/workflows/flutter-build.yml b/.github/workflows/flutter-build.yml index 5c2c608a8..adfc14c86 100644 --- a/.github/workflows/flutter-build.yml +++ b/.github/workflows/flutter-build.yml @@ -24,9 +24,8 @@ env: SCITER_ARMV7_CMAKE_VERSION: "3.29.7" SCITER_NASM_DEBVERSION: "2.14-1" LLVM_VERSION: "15.0.6" - FLUTTER_VERSION: "3.19.6" - ANDROID_FLUTTER_VERSION: "3.13.9" # >= 3.16 is very slow on my android phone, but work well on most of others. We may switch to new flutter after changing to texture rendering (I believe it can solve my problem). - FLUTTER_RUST_BRIDGE_VERSION: "1.80.1" + FLUTTER_VERSION: "3.24.4" + ANDROID_FLUTTER_VERSION: "3.24.4" # for arm64 linux because official Dart SDK does not work FLUTTER_ELINUX_VERSION: "3.16.9" TAG_NAME: "${{ inputs.upload-tag }}" @@ -46,6 +45,9 @@ env: SIGN_BASE_URL: "${{ secrets.SIGN_BASE_URL }}" jobs: + generate-bridge: + uses: ./.github/workflows/bridge.yml + build-RustDeskTempTopMostWindow: uses: ./.github/workflows/third-party-RustDeskTempTopMostWindow.yml with: @@ -59,7 +61,7 @@ jobs: build-for-windows-flutter: name: ${{ matrix.job.target }} - needs: [build-RustDeskTempTopMostWindow] + needs: [build-RustDeskTempTopMostWindow, generate-bridge] runs-on: ${{ matrix.job.os }} strategy: fail-fast: false @@ -85,6 +87,12 @@ jobs: - name: Checkout source code uses: actions/checkout@v4 + - name: Restore bridge files + uses: actions/download-artifact@master + with: + name: bridge-artifact + path: ./ + - name: Install LLVM and Clang uses: KyleMayes/install-llvm-action@v1 with: @@ -97,6 +105,15 @@ jobs: flutter-version: ${{ env.FLUTTER_VERSION }} cache: true + # https://github.com/flutter/flutter/issues/155685 + - name: Replace engine with rustdesk custom flutter engine + run: | + flutter doctor -v + flutter precache --windows + Invoke-WebRequest -Uri https://github.com/rustdesk/engine/releases/download/main/windows-x64-release.zip -OutFile windows-x64-release.zip + Expand-Archive -Path windows-x64-release.zip -DestinationPath windows-x64-release + mv -Force windows-x64-release/*  C:/hostedtoolcache/windows/flutter/stable-${{ env.FLUTTER_VERSION }}-x64/bin/cache/artifacts/engine/windows-x64-release/ + - name: Install Rust toolchain uses: dtolnay/rust-toolchain@v1 with: @@ -108,13 +125,6 @@ jobs: with: prefix-key: ${{ matrix.job.os }} - - name: Install flutter rust bridge deps - run: | - git config --global core.longpaths true - cargo install flutter_rust_bridge_codegen --version ${{ env.FLUTTER_RUST_BRIDGE_VERSION }} --features "uuid" - Push-Location flutter ; flutter pub get ; Pop-Location - ~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart - - name: Setup vcpkg with Github Actions binary cache uses: lukka/run-vcpkg@v11 with: @@ -374,6 +384,7 @@ jobs: # use build-for-macOS instead if: false runs-on: [self-hosted, macOS, ARM64] + needs: [generate-bridge] steps: - name: Export GitHub Actions cache environment variables uses: actions/github-script@v6 @@ -385,12 +396,11 @@ jobs: - name: Checkout source code uses: actions/checkout@v4 - - name: Install flutter rust bridge deps - shell: bash - run: | - cargo install flutter_rust_bridge_codegen --version ${{ env.FLUTTER_RUST_BRIDGE_VERSION }} --features "uuid" - pushd flutter && flutter pub get && popd - ~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart --c-output ./flutter/macos/Runner/bridge_generated.h + - name: Restore bridge files + uses: actions/download-artifact@master + with: + name: bridge-artifact-macos + path: ./ - name: Build rustdesk run: | @@ -446,6 +456,7 @@ jobs: if: ${{ inputs.upload-artifact }} name: build rustdesk ios ipa runs-on: ${{ matrix.job.os }} + needs: [generate-bridge] strategy: fail-fast: false matrix: @@ -510,12 +521,11 @@ jobs: prefix-key: rustdesk-lib-cache-ios key: ${{ matrix.job.target }} - - name: Install flutter rust bridge deps - shell: bash - run: | - cargo install flutter_rust_bridge_codegen --version ${{ env.FLUTTER_RUST_BRIDGE_VERSION }} --features "uuid" - pushd flutter && flutter pub get && popd - ~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart --c-output ./flutter/ios/Runner/bridge_generated.h + - name: Restore bridge files + uses: actions/download-artifact@master + with: + name: bridge-artifact-macos + path: ./ - name: Build rustdesk lib run: | @@ -550,6 +560,7 @@ jobs: #if: ${{ inputs.upload-artifact }} if: false runs-on: [self-hosted, macOS, ARM64] + needs: [generate-bridge] strategy: fail-fast: false steps: @@ -565,12 +576,11 @@ jobs: # $VCPKG_ROOT/vcpkg install --triplet arm64-ios --x-install-root="$VCPKG_ROOT/installed" - - name: Install flutter rust bridge deps - shell: bash - run: | - cargo install flutter_rust_bridge_codegen --version ${{ env.FLUTTER_RUST_BRIDGE_VERSION }} --features "uuid" - pushd flutter && flutter pub get && popd - ~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart --c-output ./flutter/ios/Runner/bridge_generated.h + - name: Restore bridge files + uses: actions/download-artifact@master + with: + name: bridge-artifact-macos + path: ./ - name: Build rustdesk lib run: | @@ -605,6 +615,7 @@ jobs: build-for-macOS: name: ${{ matrix.job.target }} runs-on: ${{ matrix.job.os }} + needs: [generate-bridge] strategy: fail-fast: false matrix: @@ -695,12 +706,11 @@ jobs: with: prefix-key: ${{ matrix.job.os }} - - name: Install flutter rust bridge deps - shell: bash - run: | - cargo install flutter_rust_bridge_codegen --version ${{ env.FLUTTER_RUST_BRIDGE_VERSION }} --features "uuid" - pushd flutter && flutter pub get && popd - ~/.cargo/bin/flutter_rust_bridge_codegen --rust-input ./src/flutter_ffi.rs --dart-output ./flutter/lib/generated_bridge.dart --c-output ./flutter/macos/Runner/bridge_generated.h + - name: Restore bridge files + uses: actions/download-artifact@master + with: + name: bridge-artifact-macos + path: ./ - name: Setup vcpkg with Github Actions binary cache uses: lukka/run-vcpkg@v11 @@ -822,11 +832,8 @@ jobs: tag_name: ${{ env.TAG_NAME }} files: rustdesk-${{ env.VERSION }}-unsigned.tar.gz - generate-bridge-linux: - uses: ./.github/workflows/bridge.yml - build-rustdesk-android: - needs: [generate-bridge-linux] + needs: [generate-bridge] name: build rustdesk android apk ${{ matrix.job.target }} runs-on: ${{ matrix.job.os }} strategy: @@ -903,7 +910,7 @@ jobs: llvm-10-dev \ nasm \ ninja-build \ - openjdk-11-jdk-headless \ + openjdk-17-jdk-headless \ pkg-config \ tree \ wget @@ -974,7 +981,7 @@ jobs: key: ${{ matrix.job.target }} - name: fix android for flutter 3.13 - if: $${{ env.ANDROID_FLUTTER_VERSION == '3.13.9' }} + if: ${{ env.ANDROID_FLUTTER_VERSION == '3.13.9' }} run: | cd flutter sed -i 's/uni_links_desktop/#uni_links_desktop/g' pubspec.yaml @@ -1022,9 +1029,9 @@ jobs: - name: Build rustdesk shell: bash env: - JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64 + JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 run: | - export PATH=/usr/lib/jvm/java-11-openjdk-amd64/bin:$PATH + export PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH # temporary use debug sign config sed -i "s/signingConfigs.release/signingConfigs.debug/g" ./flutter/android/app/build.gradle case ${{ matrix.job.target }} in @@ -1166,7 +1173,7 @@ jobs: llvm-10-dev \ nasm \ ninja-build \ - openjdk-11-jdk-headless \ + openjdk-17-jdk-headless \ pkg-config \ tree \ wget @@ -1211,7 +1218,7 @@ jobs: path: ./flutter/android/app/src/main/jniLibs/x86 - name: fix android for flutter 3.13 - if: $${{ env.ANDROID_FLUTTER_VERSION == '3.13.9' }} + if: ${{ env.ANDROID_FLUTTER_VERSION == '3.13.9' }} run: | cd flutter sed -i 's/uni_links_desktop/#uni_links_desktop/g' pubspec.yaml @@ -1223,9 +1230,9 @@ jobs: - name: Build rustdesk shell: bash env: - JAVA_HOME: /usr/lib/jvm/java-11-openjdk-amd64 + JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64 run: | - export PATH=/usr/lib/jvm/java-11-openjdk-amd64/bin:$PATH + export PATH=/usr/lib/jvm/java-17-openjdk-amd64/bin:$PATH # temporary use debug sign config sed -i "s/signingConfigs.release/signingConfigs.debug/g" ./flutter/android/app/build.gradle mv ./flutter/android/app/src/main/jniLibs/arm64-v8a/liblibrustdesk.so ./flutter/android/app/src/main/jniLibs/arm64-v8a/librustdesk.so @@ -1285,7 +1292,7 @@ jobs: signed-apk/rustdesk-${{ env.VERSION }}-universal${{ env.suffix }}.apk build-rustdesk-linux: - needs: [generate-bridge-linux] + needs: [generate-bridge] name: build rustdesk linux ${{ matrix.job.target }} runs-on: ${{ matrix.job.on }} strategy: diff --git a/flutter/android/app/build.gradle b/flutter/android/app/build.gradle index 320eb3347..c55425165 100644 --- a/flutter/android/app/build.gradle +++ b/flutter/android/app/build.gradle @@ -1,6 +1,9 @@ import com.google.protobuf.gradle.* plugins { id "com.google.protobuf" version "0.9.4" + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" } def keystoreProperties = new Properties() @@ -17,11 +20,6 @@ if (localPropertiesFile.exists()) { } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} - def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' @@ -32,10 +30,6 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - dependencies { implementation 'com.google.protobuf:protobuf-javalite:3.20.1' } @@ -57,7 +51,7 @@ protobuf { } android { - compileSdkVersion 33 + compileSdkVersion 34 sourceSets { main.java.srcDirs += 'src/main/kotlin' @@ -105,7 +99,6 @@ flutter { dependencies { implementation "androidx.media:media:1.6.0" implementation 'com.github.getActivity:XXPermissions:18.5' - implementation("org.jetbrains.kotlin:kotlin-stdlib") { version { strictly("$kotlin_version") } } + implementation("org.jetbrains.kotlin:kotlin-stdlib") { version { strictly("1.9.10") } } implementation 'com.caverock:androidsvg-aar:1.4' } - diff --git a/flutter/android/build.gradle b/flutter/android/build.gradle index c6a77f36b..401bea009 100644 --- a/flutter/android/build.gradle +++ b/flutter/android/build.gradle @@ -1,18 +1,3 @@ -buildscript { - ext.kotlin_version = '1.9.10' - repositories { - google() - jcenter() - maven { url 'https://jitpack.io' } - } - - dependencies { - classpath 'com.android.tools.build:gradle:7.0.0' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'com.google.gms:google-services:4.3.14' - } -} - allprojects { repositories { google() @@ -24,6 +9,8 @@ allprojects { rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { project.evaluationDependsOn(':app') } diff --git a/flutter/android/gradle/wrapper/gradle-wrapper.properties b/flutter/android/gradle/wrapper/gradle-wrapper.properties index cc5527d78..cb576305f 100644 --- a/flutter/android/gradle/wrapper/gradle-wrapper.properties +++ b/flutter/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.4-all.zip diff --git a/flutter/android/settings.gradle b/flutter/android/settings.gradle index 44e62bcf0..c5fb685a1 100644 --- a/flutter/android/settings.gradle +++ b/flutter/android/settings.gradle @@ -1,11 +1,25 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "7.3.0" apply false + id "org.jetbrains.kotlin.android" version "1.9.10" apply false +} + +include ":app" diff --git a/flutter/lib/desktop/pages/connection_page.dart b/flutter/lib/desktop/pages/connection_page.dart index 744c05f9c..e2681bb37 100644 --- a/flutter/lib/desktop/pages/connection_page.dart +++ b/flutter/lib/desktop/pages/connection_page.dart @@ -203,6 +203,8 @@ class _ConnectionPageState extends State bool isPeersLoading = false; bool isPeersLoaded = false; + // https://github.com/flutter/flutter/issues/157244 + Iterable _autocompleteOpts = []; @override void initState() { @@ -330,7 +332,7 @@ class _ConnectionPageState extends State child: Autocomplete( optionsBuilder: (TextEditingValue textEditingValue) { if (textEditingValue.text == '') { - return const Iterable.empty(); + _autocompleteOpts = const Iterable.empty(); } else if (peers.isEmpty && !isPeersLoaded) { Peer emptyPeer = Peer( id: '', @@ -346,7 +348,7 @@ class _ConnectionPageState extends State rdpUsername: '', loginName: '', ); - return [emptyPeer]; + _autocompleteOpts = [emptyPeer]; } else { String textWithoutSpaces = textEditingValue.text.replaceAll(" ", ""); @@ -357,8 +359,7 @@ class _ConnectionPageState extends State ); } String textToFind = textEditingValue.text.toLowerCase(); - - return peers + _autocompleteOpts = peers .where((peer) => peer.id.toLowerCase().contains(textToFind) || peer.username @@ -370,6 +371,7 @@ class _ConnectionPageState extends State peer.alias.toLowerCase().contains(textToFind)) .toList(); } + return _autocompleteOpts; }, fieldViewBuilder: ( BuildContext context, @@ -430,6 +432,7 @@ class _ConnectionPageState extends State optionsViewBuilder: (BuildContext context, AutocompleteOnSelected onSelected, Iterable options) { + options = _autocompleteOpts; double maxHeight = options.length * 50; if (options.length == 1) { maxHeight = 52; diff --git a/flutter/pubspec.lock b/flutter/pubspec.lock index 1a8badd89..2f408f4eb 100644 --- a/flutter/pubspec.lock +++ b/flutter/pubspec.lock @@ -37,10 +37,10 @@ packages: dependency: transitive description: name: archive - sha256: "22600aa1e926be775fa5fe7e6894e7fb3df9efda8891c73f70fb3262399a432d" + sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d url: "https://pub.dev" source: hosted - version: "3.4.10" + version: "3.6.1" args: dependency: transitive description: @@ -384,10 +384,10 @@ packages: dependency: "direct main" description: name: extended_text - sha256: "7f382de3af12992e34bd72ddd36becf90c4720900af126cb9859f0189af71ffe" + sha256: "38c1cac571d6eaf406f4b80040c1f88561e7617ad90795aac6a1be0a8d0bb676" url: "https://pub.dev" source: hosted - version: "13.0.0" + version: "14.0.0" extended_text_library: dependency: transitive description: @@ -408,10 +408,10 @@ packages: dependency: "direct main" description: name: ffi - sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.3" ffigen: dependency: "direct dev" description: @@ -865,18 +865,18 @@ packages: dependency: transitive description: name: material_color_utilities - sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.8.0" + version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.15.0" mime: dependency: transitive description: @@ -1037,14 +1037,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.8" - pointycastle: - dependency: transitive - description: - name: pointycastle - sha256: "43ac87de6e10afabc85c445745a7b799e04de84cebaa4fd7bf55a5e1e9604d29" - url: "https://pub.dev" - source: hosted - version: "3.7.4" pool: dependency: transitive description: @@ -1325,10 +1317,11 @@ packages: uni_links: dependency: "direct main" description: - name: uni_links - sha256: "051098acfc9e26a9fde03b487bef5d3d228ca8f67693480c6f33fd4fbb8e2b6e" - url: "https://pub.dev" - source: hosted + path: uni_links + ref: f416118d843a7e9ed117c7bb7bdc2deda5a9e86f + resolved-ref: f416118d843a7e9ed117c7bb7bdc2deda5a9e86f + url: "https://github.com/rustdesk-org/uni_links" + source: git version: "0.5.1" uni_links_desktop: dependency: "direct main" @@ -1558,18 +1551,18 @@ packages: dependency: "direct main" description: name: win32 - sha256: "464f5674532865248444b4c3daca12bd9bf2d7c47f759ce2617986e7229494a8" + sha256: "68d1e89a91ed61ad9c370f9f8b6effed9ae5e0ede22a270bdfa6daf79fc2290a" url: "https://pub.dev" source: hosted - version: "5.2.0" + version: "5.5.4" win32_registry: dependency: transitive description: name: win32_registry - sha256: "41fd8a189940d8696b1b810efb9abcf60827b6cbfab90b0c43e8439e3a39d85a" + sha256: "21ec76dfc731550fd3e2ce7a33a9ea90b828fdf19a5c3bcf556fa992cfa99852" url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.1.5" window_manager: dependency: "direct main" description: @@ -1629,5 +1622,5 @@ packages: source: hosted version: "0.2.1" sdks: - dart: ">=3.3.0 <4.0.0" - flutter: ">=3.19.0" + dart: ">=3.5.0 <4.0.0" + flutter: ">=3.24.0" diff --git a/flutter/pubspec.yaml b/flutter/pubspec.yaml index 0f105d702..1855aebec 100644 --- a/flutter/pubspec.yaml +++ b/flutter/pubspec.yaml @@ -78,7 +78,11 @@ dependencies: # if build rustdesk by flutter >=3.3, please use our custom pub below (uncomment code below). git: url: https://github.com/rustdesk-org/flutter_improved_scrolling - uni_links: ^0.5.1 + uni_links: + git: + url: https://github.com/rustdesk-org/uni_links + path: uni_links + ref: f416118d843a7e9ed117c7bb7bdc2deda5a9e86f uni_links_desktop: ^0.1.6 # use 0.1.6 to make flutter 3.13 works path: ^1.8.1 auto_size_text: ^3.0.0 @@ -104,7 +108,7 @@ dependencies: pull_down_button: ^0.9.3 device_info_plus: ^9.1.0 qr_flutter: ^4.1.0 - extended_text: 13.0.0 + extended_text: 14.0.0 dev_dependencies: icons_launcher: ^2.0.4 @@ -186,3 +190,4 @@ flutter: # # For details regarding fonts from package dependencies, # see https://flutter.dev/custom-fonts/#from-packages +