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 }}
关键说明
- 移除
Create environment file步骤:因为String.fromEnvironment不需要.env文件,该步骤完全多余。 - 使用
dart-defines参数:bluefireteam/flutter-gh-pagesaction支持通过dart-defines传递编译时变量,多个变量用逗号分隔。 - 变量名严格匹配:确保
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
相关产品推荐
相关产品推荐

