创建开发环境配置
在根目录下创建 .devcontainer, 里面包含flutter开发所需要的开发镜像和配置
// devcontainer.json
FROM debian:stretch
RUN apt-get update && apt-get -y install git curl unzip wget
RUN apt-get autoremove -y \
&& apt-get clean -y \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir /home/vscodespace
WORKDIR /home/vscodespace
ENV PUB_CACHE=/home/vscodespace/.pub_cache
ENV PATH="/home/vscodespace/flutter/bin:$PATH"
RUN git clone https://github.com/flutter/flutter && \
/home/vscodespace/flutter/bin/flutter config --enable-web
// devcontainer.json
{
"build": {
"dockerfile": "Dockerfile"
},
"settings":{
"terminal.integrated.shell.linux":"/bin/bash",
},
"name": "Flutter",
"extensions": ["Dart-Code.dart-code", "Dart-Code.flutter","auchenberg.vscode-browser-preview",],
"forwardPorts": [3000]
}
以后配置完成后, CodeSpace 会提醒重新 rebuild 该环境
We've noticed a change to the devcontainer configuration. Rebuild the container to apply them now.
Rebuilding recreates your codespace. Your code and any current changes will be preserved, but your codespace will be rebuilt using your working directory's devcontainer.
通过"terminal.integrated.shell.linux":"/bin/bash",
暴露可执行文件,可以在CodeSpace环境下使用命令行直接运行 flutter
Github Codespace 启动Flutter开发环境
目前并不支持模拟器, 仅支持 web 端的调试
flutter run -d web-server --web-hostname=0.0.0.0 --web-port=3000
Github Codespace 启动Flutter 报错
This codespace is currently running in recovery mode due to a container error. Review the creation logs, update your devcontainer configuration as needed, and run the "Rebuild Container" command to retry.
查看日志
2022-06-18 07:42:58.388Z: Configuration starting...
2022-06-18 07:42:59.134Z: @microsoft/vscode-dev-containers-cli 0.62.0.
2022-06-18 07:42:59.169Z: Start: Resolving Remote
2022-06-18 07:42:59.185Z: $ /usr/bin/node /usr/lib/node_modules/@microsoft/vscode-dev-containers-cli/dist/spec-node/devContainersSpecCLI.js up --user-data-folder /var/lib/docker/codespacemount/.persistedshare --container-data-folder .vscode-remote/data/Machine --container-system-data-folder /var/vscode-remote --workspace-folder /var/lib/docker/codespacemount/workspace/flower_flutter --id-label Type=codespaces --log-level info --log-format json --config /var/lib/docker/codespacemount/workspace/flower_flutter/.devcontainer/devcontainer.json --override-config /root/.codespaces/shared/merged_devcontainer.json --default-user-env-probe none --remove-existing-container --mount type=bind,source=/.codespaces/agent/mount/cache,target=/vscode --skip-post-create --update-remote-user-uid-default never --mount-workspace-git-root false
2022-06-18 07:42:59.246Z: @microsoft/vscode-dev-containers-cli 0.62.0.
2022-06-18 07:42:59.261Z: Start: Resolving Remote
2022-06-18 07:42:59.276Z: $ docker ps -q -a --filter label=Type=codespaces
2022-06-18 07:42:59.302Z: Stop (37 ms): Run: docker ps -q -a --filter label=Type=codespaces
2022-06-18 07:42:59.317Z: $ docker build -f /var/lib/docker/codespacemount/workspace/flower_flutter/.devcontainer/Dockerfile -t vsc-flower_flutter-af8f805687818d527316e9c15f8b912f /var/lib/docker/codespacemount/workspace/flower_flutter/.devcontainer
2022-06-18 07:42:59.498Z: #2 [internal] load .dockerignore
2022-06-18 07:42:59.524Z: #2 sha256:972fb0b353a1788a2a79d0106f913edb5ecf24db689a30584bdcb56f286edbb0
2022-06-18 07:42:59.639Z: #2 ...
2022-06-18 07:42:59.664Z:
2022-06-18 07:42:59.687Z: #1 [internal] load build definition from Dockerfile
2022-06-18 07:42:59.710Z: #1 sha256:6f3273087f7b42704ef1ea934fe773eeeea456a36305064502058634a0bfebca
2022-06-18 07:42:59.733Z: #1 transferring dockerfile: 2B done
2022-06-18 07:42:59.756Z: #1 DONE 0.3s
2022-06-18 07:42:59.780Z:
2022-06-18 07:42:59.804Z: #2 [internal] load .dockerignore
2022-06-18 07:42:59.826Z: #2 sha256:972fb0b353a1788a2a79d0106f913edb5ecf24db689a30584bdcb56f286edbb0
2022-06-18 07:42:59.848Z: #2 transferring context: 2B done
2022-06-18 07:42:59.872Z: #2 DONE 0.3s
2022-06-18 07:42:59.893Z:
2022-06-18 07:42:59.915Z: failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount321912434/Dockerfile: no such file or directory
2022-06-18 07:42:59.938Z: Stop (493 ms): Run: docker build -f /var/lib/docker/codespacemount/workspace/flower_flutter/.devcontainer/Dockerfile -t vsc-flower_flutter-af8f805687818d527316e9c15f8b912f /var/lib/docker/codespacemount/workspace/flower_flutter/.devcontainer
2022-06-18 07:42:59.959Z: Error: Command failed: docker build -f /var/lib/docker/codespacemount/workspace/flower_flutter/.devcontainer/Dockerfile -t vsc-flower_flutter-af8f805687818d527316e9c15f8b912f /var/lib/docker/codespacemount/workspace/flower_flutter/.devcontainer
2022-06-18 07:42:59.983Z: at Tu (/usr/lib/node_modules/@microsoft/vscode-dev-containers-cli/dist/spec-node/devContainersSpecCLI.js:221:3219)
2022-06-18 07:43:00.008Z: at processTicksAndRejections (internal/process/task_queues.js:95:5)
2022-06-18 07:43:00.030Z: at async LR (/usr/lib/node_modules/@microsoft/vscode-dev-containers-cli/dist/spec-node/devContainersSpecCLI.js:221:1567)
2022-06-18 07:43:00.053Z: at async zy (/usr/lib/node_modules/@microsoft/vscode-dev-containers-cli/dist/spec-node/devContainersSpecCLI.js:221:594)
2022-06-18 07:43:00.075Z: at async $R (/usr/lib/node_modules/@microsoft/vscode-dev-containers-cli/dist/spec-node/devContainersSpecCLI.js:226:2007)
2022-06-18 07:43:00.097Z: at async Zy (/usr/lib/node_modules/@microsoft/vscode-dev-containers-cli/dist/spec-node/devContainersSpecCLI.js:226:3112)
2022-06-18 07:43:00.118Z: at async BR (/usr/lib/node_modules/@microsoft/vscode-dev-containers-cli/dist/spec-node/devContainersSpecCLI.js:226:12448)
2022-06-18 07:43:00.139Z: at async qR (/usr/lib/node_modules/@microsoft/vscode-dev-containers-cli/dist/spec-node/devContainersSpecCLI.js:226:12204)
2022-06-18 07:43:00.161Z: Stop (652 ms): Run: /usr/bin/node /usr/lib/node_modules/@microsoft/vscode-dev-containers-cli/dist/spec-node/devContainersSpecCLI.js up --user-data-folder /var/lib/docker/codespacemount/.persistedshare --container-data-folder .vscode-remote/data/Machine --container-system-data-folder /var/vscode-remote --workspace-folder /var/lib/docker/codespacemount/workspace/flower_flutter --id-label Type=codespaces --log-level info --log-format json --config /var/lib/docker/codespacemount/workspace/flower_flutter/.devcontainer/devcontainer.json --override-config /root/.codespaces/shared/merged_devcontainer.json --default-user-env-probe none --remove-existing-container --mount type=bind,source=/.codespaces/agent/mount/cache,target=/vscode --skip-post-create --update-remote-user-uid-default never --mount-workspace-git-root false
2022-06-18 07:43:00.183Z: Exit code 1
2022-06-18 07:43:00.204Z: Failed to create container.
2022-06-18 07:43:00.224Z: Error: Command failed: /usr/bin/node /usr/lib/node_modules/@microsoft/vscode-dev-containers-cli/dist/spec-node/devContainersSpecCLI.js up --user-data-folder /var/lib/docker/codespacemount/.persistedshare --container-data-folder .vscode-remote/data/Machine --container-system-data-folder /var/vscode-remote --workspace-folder /var/lib/docker/codespacemount/workspace/flower_flutter --id-label Type=codespaces --log-level info --log-format json --config /var/lib/docker/codespacemount/workspace/flower_flutter/.devcontainer/devcontainer.json --override-config /root/.codespaces/shared/merged_devcontainer.json --default-user-env-probe none --remove-existing-container --mount type=bind,source=/.codespaces/agent/mount/cache,target=/vscode --skip-post-create --update-remote-user-uid-default never --mount-workspace-git-root false
2022-06-18 07:43:00.240Z: Error Code: 1302
2022-06-18 07:43:00.256Z: Container creation failed.
2022-06-18 07:43:00.271Z:
2022-06-18 07:43:00.287Z: Creating recovery container.
上述报错大意是 Dockerifle 文件没有找到, 重写 Dockerfile 文件同,按照控制台输出的方法 rebuild 开发环境
This codespace is currently running in recovery mode due to a container error.
- Use Cmd/Ctrl + Shift + P -> "Codespaces: View Creation Log" to see full logs
- Update your devcontainer configuration as needed
- Use Cmd/Ctrl + Shift + P -> "Codespaces: Rebuild Container" to retry
- For help, read more about custom configuration: https://aka.ms/ghcs-custom-configuration
切换到 Flutter 的指定版本
老版本
Tag | Flutter Version | Flutter Channel |
---|---|---|
2.0.1 | 2.0.1 | stable |
1.22.5 | 1.22.5 | stable |
1.22.4 | 1.22.4 | stable |
1.22.3 | 1.22.3 | stable |
1.22.2 | 1.22.2 | stable |
1.22.1 | 1.22.1 | stable |
1.22.0 | 1.22.0 | stable |
1.20.4 | 1.20.4 | stable |
1.20.3 | 1.20.3 | stable |
1.20.2 | 1.20.2 | stable |
1.20.1 | 1.20.1 | stable |
1.20.0 | 1.20.0 | stable |
1.17.5 | 1.17.5 | stable |
1.17.4 | 1.17.4 | stable |
1.17.3 | 1.17.3 | stable |
1.17.2 | 1.17.2 | stable |
1.17.1 | 1.17.1 | stable |
1.17.0 | 1.17.0 | stable |
v1.12.13-hotfix.9 | v1.12.13+hotfix.9 | stable |
v1.12.13-hotfix.8 | v1.12.13+hotfix.8 | stable |
v1.12.13-hotfix.7 | v1.12.13+hotfix.7 | stable |
v1.12.13-hotfix.5 | v1.12.13+hotfix.5 | stable |
v1.9.1-hotfix.6 | v1.9.1+hotfix.6 | stable |
v1.9.1-hotfix.5 | v1.9.1+hotfix.5 | stable |
v1.9.1-hotfix.4 | v1.9.1+hotfix.4 | stable |
v1.9.1-hotfix.2 | v1.9.1+hotfix.2 | stable |
v1.7.8-hotfix.4 | v1.7.8+hotfix.4 | stable |
创建 Flutter 对应版本的镜像
FROM debian:stretch
RUN apt-get update && apt-get -y install git curl unzip wget
RUN apt-get autoremove -y \
&& apt-get clean -y \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir /home/vscodespace
WORKDIR /home/vscodespace
ENV PUB_CACHE=/home/vscodespace/.pub_cache
ENV PATH="/home/vscodespace/flutter/bin:$PATH"
RUN git clone https://github.com/flutter/flutter && \
cd flutter && \
git checkout 1.22.6 && \
/home/vscodespace/flutter/bin/flutter config --enable-web
通过命令行来指定 Flutter 版本
查看版本: flutter --version
检查环境:flutter doctor
查看渠道:flutter channel
切换渠道(stable, beta, dev, master):flutter channel stable
升级到最新版本:flutter upgrade
升级到指定版本:flutter upgrade v2.2.3
回退到指定版本:flutter downgrade v2.0.3