You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Github Actions部署Flutter Web无法获取环境变量求助

Flutter Web部署到Github Pages时环境变量无法获取的解决方案

问题核心原因

String.fromEnvironment是编译时注入的环境变量读取方式,它不会自动读取你用SpicyPizza/create-envfile生成的.env文件。.env文件通常用于运行时读取环境变量(比如配合flutter_dotenv包),但不适用于String.fromEnvironment这种编译时变量注入场景。

解决方案

直接在Flutter Web构建命令中通过--dart-define参数注入环境变量,无需生成.env文件。修改你的Github Actions工作流配置如下:

修改后的.github/workflows/workflow.yml

name: gh-pages

on:
  push:
    branches: [main]
jobs:
  PROD:
    runs-on: ubuntu-latest
    environment: PROD
    steps:
      - uses: actions/checkout@v2
      - uses: subosito/flutter-action@v1
        with:
          flutter-version: '3.x' # 指定稳定版Flutter版本,避免兼容性问题
      - uses: bluefireteam/flutter-gh-pages@v7
        with:
          baseHref: /injicare-event/
          dart-defines: |
            envkey_SUPABASE_URL=${{ secrets.SUPABASE_URL }},
            envkey_SUPABASE_ANONKEY=${{ secrets.SUPABASE_ANONKEY }}

关键说明

  1. 移除Create environment file步骤:因为String.fromEnvironment不需要.env文件,该步骤完全多余。
  2. 使用dart-defines参数:bluefireteam/flutter-gh-pages action支持通过dart-defines传递编译时变量,多个变量用逗号分隔。
  3. 变量名严格匹配:确保dart-defines中的变量名和你Flutter代码里String.fromEnvironment的参数完全一致(包括大小写)。

验证方式

部署完成后,重新访问网站,应该会显示你在Github环境密钥中配置的真实值,而非默认的check1/check2。

如果仍有问题,可以在构建步骤中添加调试命令(调试完成后删除,避免泄露密钥):

- name: Debug environment variables
  run: |
    echo "envkey_SUPABASE_URL: ${{ secrets.SUPABASE_URL }}"
    echo "envkey_SUPABASE_ANONKEY: ${{ secrets.SUPABASE_ANONKEY }}"

内容的提问来源于stack exchange,提问作者Hyejung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 12:58:17