• flutter多渠道打包运行


    使用--dart-define的方式打包

    config.dart如下:

    // 环境配置
    class EnvConfig {
      final String appTitle;
      final String appDomain;
      EnvConfig({
        required this.appTitle,
        required this.appDomain,
      });
    }
    
    // 获取的配置信息
    class Env {
      // 获取到当前环境
      static const appEnv = String.fromEnvironment(EnvName.envKey);
    
      // 开发环境
      static final EnvConfig _debugConfig = EnvConfig(
        appTitle: "debugTitle",
        appDomain: "http://www.debugxxx.com",
      );
      // 发布环境
      static final EnvConfig _releaseConfig = EnvConfig(
        appTitle: "releaseTitle",
        appDomain: "http://www.releasexxx.com",
      );
      // 测试环境
      static final EnvConfig _testConfig = EnvConfig(
        appTitle: "testTitle",
        appDomain: "http://www.testxxx.com",
      );
    
      static EnvConfig get envConfig => _getEnvConfig();
    
    // 根据不同环境返回对应的环境配置
      static EnvConfig _getEnvConfig() {
        print("========appEnv:::$appEnv=============");
        switch (appEnv) {
          case EnvName.debug:
            return _debugConfig;
          case EnvName.release:
            return _releaseConfig;
          case EnvName.test:
            return _testConfig;
          default:
            return _debugConfig;
        }
      }
    }
    
    // 声明的环境
    abstract class EnvName {
      // 环境key
      static const String envKey = "MODE";
      // 环境value
      static const String debug = "debug";
      static const String release = "release";
      static const String test = "test";
    }
    

    代码中使用如下:

    @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text(Env.envConfig.appTitle),//显示envConfig.appTitle
          ),
          body: SingleChildScrollView(
            child: Center(
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  //显示envConfig.appDomain
                  Text(
                    Env.envConfig.appDomain,
                    style: const TextStyle(fontSize: 18, fontWeight: FontWeight.w700),
                  ),
                  Text(
                    '$_counter',
                    style: Theme.of(context).textTheme.headline4,
                  ),
                ],
              ),
            ),
          ),
          floatingActionButton: FloatingActionButton(
            onPressed: _incrementCounter,
            tooltip: 'Increment',
            child: const Icon(Icons.add),
          ),
        );
      }
    }

    默认运行后如下:

    方法1、通过Terminal命令来执行--dart-define

    输入flutter run --dart-define=MODE=test,回车(其中flutter run表示运行flutter程序,--dart-define=是固定写法,NODE=test对应于config.dart下的EnvName类中的envKey = "MODE"和test = "test")

    运行如下:Cannot run with sound null safety, because the following dependencies don't support null safety

     不支持空安全,添加输入代码如下:

    flutter run --dart-define=MODE=test --no-sound-null-safety

    运行成功如下:

     

    同理运行处release环境下如下:

    输入flutter run --dart-define=MODE=release --no-sound-null-safety 回车

    到此方法1结束。

    方法2、通过Edit Configurations

    1、点击这里选择Edit Configurations,点击进入

     2、点击+号

    3、选择flutter

     

    4、填写如下:

     依次为名字,启动路径,运行的args,最后点击Apply。 

    5、这里就会多一个test,如下选择test运行

     结果如下:

    到此结束。

     

     

  • 相关阅读:
    CUDA学习笔记8——GPU硬件资源
    亚马逊黑色星期五什么时候开始?
    Tang Capital宣布收购纳斯达克上市公司Rain Oncology100%股权
    CNN系列
    网站配置了Cloudflare代理后,如何配置Nginx获取的真实客户端IP地址?
    第三章-内存管理
    Java Interview 200 Questions —— Day01 —— 备战2022年秋招 —— 经典 200 问
    C#后缀表达式解析计算字符串公式
    技术质检员:接口的幂等性如何设计?
    R语言随机波动模型SV:马尔可夫蒙特卡罗法MCMC、正则化广义矩估计和准最大似然估计上证指数收益时间序列...
  • 原文地址:https://blog.csdn.net/qq_34707150/article/details/125910476