如何为 Flutter 应用程序创建环境变量

我们为什么需要环境变量?

主要用于存储高级机密数据,如果泄露可能会危及您产品的安全性。这些变量本地存储在每个用户的本地系统中,不应该签入存储库。每个用户都有这些变量的副本。

配置

  • 在根项目中创建一个名为 .env 的文件夹(文件夹名称由您选择)

  • .gitignore 中添加 .env 文件夹路径为 .env/

  • .env 文件夹中添加环境文件,如 dev.jsonstaging.jsonprod.jsontesting.json 或任何你想创建的环境。

步骤

通过 CLI 设置环境变量

  • 运行命令: flutter run --dart-define-from-file=.env/dev.json

设置 VSCode 运行环境变量

  • .vscode/ 文件夹中创建 launch.json 文件,从而创建启动配置。

  • 为每个环境创建配置,并在 toolArgs 字段中添加选项 --dart-define-from-file=.env/dev.json,如下所示:

{"version": "0.2.0","configurations": [{"name": "mobile_app dev","request": "launch","type": "dart","toolArgs": ["--dart-define-from-file=.env/dev.json"]},{"name": "mobile_app staging","request": "launch","type": "dart","toolArgs": ["--dart-define-from-file=.env/staging.json"]},{"name": "mobile_app prod","request": "launch","type": "dart","toolArgs": ["--dart-define-from-file=.env/prod.json"]},{"name": "mobile_app testing","request": "launch","type": "dart","toolArgs": ["--dart-define-from-file=.env/testing.json"]}]
}

设置从Android Studio运行的环境变量

  • 单击edit configurations打开配置

  • 单击左上角的 + 并从下拉列表中选择 flutter 以添加多个 flutter 配置

  • 在“Dart entrypoint”中,将值设置为main.dart文件的路径

  • 在“Additional run args”字段中添加 --dart-define-from-file=.env/dev.json

  • 重复上述第 2、3 和 4 步,为多个环境创建多个配置

使用环境变量

要使用环境变量,请使用 String.fromEnvironment('clientId');

您可以创建一个返回静态环境变量的类(或者您也可以用自己的方法来实现),它看起来像这样

class Environment {static const String env = String.fromEnvironment('env');static const String clientId = String.fromEnvironment('clientId');static const String clientSecret = String.fromEnvironment('clientSecret');static const String callbackUrl = String.fromEnvironment('callbackUrl');
}

并在代码中作为 Environment.clientId 使用

您的机密数据现在安全了!🎉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/99054.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

『PyQt5-Qt Designer篇』| 08 Qt Designer中容器布局和绝对布局的使用

08 Qt Designer中容器布局和绝对布局的使用 1 容器布局1.1 设计容器布局1.2 保存文件并执行2 绝对布局2.1 设计绝对布局2.2 保存文件并执行1 容器布局 1.1 设计容器布局 先拖入一个容器Frame容器,然后拖入几个控件: 把拖入的控件拖入容器中: 选中容器,右键-布局-栅格布局:…

基于OpenCV+LPR模型端对端智能车牌识别——深度学习和目标检测算法应用(含Python+Andriod全部工程源码)+CCPD数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境OpenCV环境Android环境1. 开发软件和开发包2. JDK设置3. NDK设置 模块实现1. 数据预处理2. 模型训练1)训练级联分类器2)训练无分割车牌字符识别模型 3. APP构建1)导入OpenCV库…

把一般数据转换成因子数据格式,做单因子、债券对历史数据回测+获取curl命令+垃圾数据转换成标准行情数据(bardata)

下载curl软件,地址: curl for Windows for 64-bit下载好后解压到文件夹,将里面的bin文件添加到环境变量中,bon文件地址为:C:\Users\59980\curl-8.2.1_7-win64-mingw\bin 打开cmd,输入curl --help,出现下…

博流RISC-V芯片JTAG debug配置与运行

文章目录 1、Windows下安装与配置2、Linux下安装与配置3、芯片默认 JTAG PIN 列表4、命令行运行JTAG5、Eclipse下使用JTAG 1、Windows下安装与配置 CKLink 驱动安装 Windows版驱动下载地址: https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1666331…

华为OD机试 - MELON的难题 - 动态规划(Java 2023 B卷 100分)

目录 一、题目描述二、输入描述三、输出描述四、动态规划五、解题思路六、Java算法源码七、效果展示1、输入2、输出3、说明华为OD机试 2023B卷题库疯狂收录中,刷题点这里 一、题目描述 MELON有一堆精美的雨花石(数量为n,重量各异),准备送给S和W。MELON希望送给俩人的雨花石…

9.2 消息对话框 画板 定时器

#include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//设置定时器timernew QTimer(this);timeidthis->startTimer(1000);connect(timer,&QTimer::timeout,this,&Widget::timeout_slot);speechernew QTextToSpeech(this);//边框this-&…

【前端】CSS-Flex弹性盒模型布局

目录 一、前言二、Flex布局是什么1、任何一个容器都可以指定为Flex布局2、行内元素也可以使用Flex布局3、Webkit内核的浏览器,必须加上-webkit前缀 三、基本概念四、flex常用的两种属性1、容器属性2、项目属性 五、容器属性1、flex-direction①、定义②、语句1&…

使用环境中的视觉地标和扩展卡尔曼滤波器定位移动机器人研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

开始MySQL之路——MySQL存储引擎概念

一、存储引擎概念 MySQL数据库和大多数的数据库不同, MySQL数据库中有一个存储引擎的概念, 针对不同的存储需求可以选择最优的存储引擎。 ​ 存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式 。存储引擎是基于表的,而不是基…

倒排表的压缩算法

For压缩算法 这是倒排表的一种压缩算法。 还是那个问题,如果"小米" 这个词项,在多文档里都有,则就会导致倒排表很大,这时候就会设计到了压缩算法,这里说的是,倒排表。 那末我们来看看 for压缩…

南方科技大学博士研究生奖助学金,深圳大学

目录 南方科技大学 中南大学 南京大学 厦门大学 苏州大学 中南财经政法大学 深圳大学 南方科技大学 https://ocean.sustech.edu.cn/ocean/public/upload/download/3/2.pdf 南方科技大学的在读研究生,每人每年都会得到40000元的补助,这40000块钱分…

【FreeRTOS】【应用篇】消息队列【下篇】

前言 本篇文章主要对 FreeRTOS 中消息队列的概念和相关函数进行了详解消息队列【下篇】详细剖析了消息队列中发送、接收时队列消息控制块中各种指针的行为,以及几个发送消息和接收消息的函数的运作流程笔者有关于 【FreeRTOS】【应用篇】消息队列【上篇】——队列基…