diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 5a161d6aeeaddf8d59f143720307ca8af3650ee0..0a826b61d113d408478bd00e266e42084c741983 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -16,7 +16,6 @@ include:
 "3.24.5":
   extends: .build_flutter_base
   variables:
-    DOCKER_BUILDX_PLATFORMS: linux/amd64
     IMAGE_BASENAME: ${IMAGE_PREFIX}/flutter
     VERSION: 3.24.5
     IMAGE_NAME: ${IMAGE_BASENAME}:${VERSION},${IMAGE_BASENAME}:3.24,${IMAGE_BASENAME}:3
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index bc6ca787f9bbf59ed82cfcfbcc20b87e6df4195d..d45ac0c80973473146a2940a0a47b15907852167 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -13,6 +13,19 @@
                 ".",
             ],
         },
+        {
+            "label": "buildx build",
+            "command": "docker",
+            "args": [
+                "buildx",
+                "build",
+                "--build-arg",
+                "FLUTTER_VERSION=${input:flutterVersion}",
+                "--platform",
+                "linux/arm64,linux/amd64",
+                ".",
+            ],
+        },
     ],
     "inputs": [
         {
diff --git a/Dockerfile b/Dockerfile
index dab5002bd39bf3c1d2894b6a4731b7850bd8d020..44840d046faa7cc6259397acc3b4130b8b702536 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -13,11 +13,32 @@ ARG FLUTTER_DIR="$DEPENDENCY_DIR/${FLUTTER_DIR}"
 ARG FLUTTER_DOWNLOAD_FILE="flutter.tar.xz"
 
 RUN apt update \
-    && apt install -y wget xz-utils
+    && apt install -y wget xz-utils git unzip
 
-RUN mkdir -p ${FLUTTER_DIR} \
-    && wget https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${FLUTTER_VERSION}-stable.tar.xz -O ${FLUTTER_DOWNLOAD_FILE} \
-    && tar -xf ${FLUTTER_DOWNLOAD_FILE} --strip-components=1 --directory $FLUTTER_DIR
+RUN mkdir -p ${FLUTTER_DIR}
+
+RUN if [ "$(uname -m)" = "x86_64" ]; then \
+    wget https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${FLUTTER_VERSION}-stable.tar.xz -O ${FLUTTER_DOWNLOAD_FILE} \
+    && tar -xf ${FLUTTER_DOWNLOAD_FILE} --strip-components=1 --directory $FLUTTER_DIR; \
+    fi
+
+# There is no official flutter arm64 release, so we must use the github repo
+# Flutter on arch currently has warnings because channel and repository source are not set
+RUN if [ "$(uname -m)" = "aarch64" ]; then \
+    git clone --depth 1 https://github.com/flutter/flutter.git ${FLUTTER_DIR} \
+    && cd ${FLUTTER_DIR} \
+    && git fetch origin tag ${FLUTTER_VERSION} \
+    && git checkout tags/${FLUTTER_VERSION} \
+    && DART_SDK_PATH="${FLUTTER_DIR}/bin/cache/dart-sdk" \
+    && ENGINE_REALM=$(cat "${FLUTTER_DIR}/bin/internal/engine.realm" | tr -d '[:space:]') \
+    && ENGINE_VERSION=$(cat "${FLUTTER_DIR}/bin/internal/engine.version") \
+    && DART_ZIP_NAME="dart-sdk-linux-arm64.zip" \
+    && wget "https://storage.googleapis.com/flutter_infra_release/flutter/${ENGINE_VERSION}/${DART_ZIP_NAME}" -O ${DART_ZIP_NAME} \
+    && unzip -o -q "${DART_ZIP_NAME}" -d "${FLUTTER_DIR}/bin/cache" \
+    && /usr/bin/find "${DART_SDK_PATH}" -type d -exec chmod 755 {} \; \
+    && /usr/bin/find "${DART_SDK_PATH}" -type f -perm /u+x -exec chmod a+x,a+r {} \; \
+    && echo "${ENGINE_VERSION}" > "${FLUTTER_DIR}/bin/cache/engine-dart-sdk.stamp"; \
+    fi
 
 
 FROM alpine:3.20.3