flutter开发实战-Release环境与Debug调试环境配置实现

这篇具有很好参考价值的文章主要介绍了flutter开发实战-Release环境与Debug调试环境配置实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

flutter开发实战-Release环境与Debug调试环境配置实现

在开发中,我们经常遇到Release与Debug相关请求等配置隔离。这里记录之前的实现方案。
在实现之前,我们需要先看下git_it

一、get_it

在开发过程中,需要App的部分逻辑与Widget分离。git_it和provider都可以用作状态管理,这里使用的是git_it,我使用git_it缘由就是获取时不强制依赖context。

GetIt是一个用于 Dart 和 Flutter 项目的简单服务定位器,其中包含一些受到 Splat 启发的附加功能。 它可以用来代替 InheritedWidget 或 Provider 比如从你的用户界面来访问对象。

1.1 引入git_it

pubspec.yaml引入git_it

get_it: ^7.6.0

1.2 使用git_it

GetIt getIt = GetIt.instance;
// 或者
GetIt getIt = GetIt.I;

//重新自定义一个新的
GetIt getIt = GetIt.asNewInstance();

注册

GetIt gitIt = GetIt.instance;

//在GetIt里注册工厂类TokenFetcher
gitIt.registerFactory<TokenFetcher>(() => TokenFetcherImpl());

调用获取

var tokenFetcher = gitIt.get<TokenFetcher>();

这里简单介绍使用方式,Release与Debug相关请求需要用到git_it。

二、实现Config

Release与Debug相关请求配置进行区分,我们需要实现一个CongfigManager

/// 定义config配置的key常量
class ConfigConstant {
  static String kAppHost = "appHost";
}

// 定义枚举,网络请求环境,DEV、PRE、PRO
enum ConfigEnv {
  dev, // Dev服务器环境
  pre, // Pre服务器环境 预发布环境
  pro, // Pre服务器环境 线上生产环境
}

/// 管理网络请求相关服务
abstract class ConfigManager extends ChangeNotifier {
  void init();

  String get(String key);

  int getImAppId();
}

2.1、实现Release的配置ReleaseConfigMgr

实现Release环境的ConfigManager

class ReleaseConfigMgr extends ConfigManager {
  ReleaseConfigMgr() {
    init();
  }

  
  String get(String key) {
    // 根据key获取请求的服务地址
    // TODO: implement get
    if (ConfigConstant. kAppHost == key) {
      return "https://app-s.ifour.cn/";
    }

    return "";
  }

  
  void init() {
    // TODO: implement init
  }

  
  int getImAppId() {
    // TODO: implement getImAppId
    return 111111111;
  }
}

2.2、实现Debug的配置DebugConfigMgr

实现Debug的配置DebugConfigMgr

class DebugConfigMgr extends ConfigManager {
  ConfigEnv _env = ConfigEnv.dev;

  DebugConfigMgr() {
    init();
  }

  
  String get(String key) {
    // TODO: implement get
    if (ConfigEnv.dev == _env) {
      if (ConfigConstant. kAppHost == key) {
         return "https://app-dev.ifour.cn/";
      }
    } else if (ConfigEnv.pre == _env) {
      if (ConfigConstant. kAppHost == key) {
         return "https://app-pre.ifour.cn/";
      }
    } else if (ConfigEnv.pro == _env) {
      if (ConfigConstant. kAppHost == key) {
         return "https://app-s.ifour.cn/";
      }
    }
    return "";
  }

  
  int getImAppId() {
    // TODO: implement getImAppId
    // 从本地取出相应的保存环境类型
    if (ConfigEnv.dev == _env) {
      /// IM sdk appId  Dev环境
      return 111111111;
    } else if (ConfigEnv.pre == _env) {
      /// IM sdk appId  Pre环境
      return 111111112;
    } else if (ConfigEnv.pro == _env) {
      /// IM sdk appId  Pro环境
      return 111111113;
    }
    return 0;
  }

  
  void init() {
    // TODO: implement init
    // 初始化的时候从本地取出
  }

  // 设置环境
  setEnv(ConfigEnv env) {
    // TODO: implement setEnv
    _env = env;
    // 更新本地存储的环境类型
    notifyListeners();
  }
}

三、使用get_it设置Release、debug对应的config

使用get_it设置Release、debug对应的config。
由于我们debug与release配置不同,我这里使用的是main.dart与main_debug.dart表示不同的入口

3.1、在main.dart配置

// release

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  Global.init().then((e) {
    OnePlatform.app = () => const MyApp();
  });

  // 设置请求地址及IM
  GetIt.instance.registerSingleton<ConfigManager>(ReleaseConfigMgr(),
      signalsReady: true);

  // 初始化IM配置
  IMManager().configIM(imSDKAppId: GetIt.instance<ConfigManager>().getImAppId());
}

3.2、在main_debug.dart配置

// debug

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  Global.init().then((e) {
    OnePlatform.app = () => const MyApp();
  });

  // 设置请求地址及IM
  GetIt.instance.registerSingleton<ConfigManager>(debugConfigMgr,
      signalsReady: true);

  // 初始化IM配置
  IMManager().configIM(imSDKAppId: GetIt.instance<ConfigManager>().getImAppId());
}

3.3、代码中具体使用获取请求地址

代码中具体使用获取请求地址,可以直接使用GetIt.instance().get(ConfigConstant.kAppHost)获取请求服务器地址

String requestUrl = GetIt.instance().get(ConfigConstant.kAppHost) + url;

具体请求就可以使用

static Future<ResponseData?> getAppInfo(String url, {required AppInfoReq req}) async {
    Map<String, dynamic>? params;
    if (req != null) {
      params = req.toJson();
    }
    String requestUrl = GetIt.instance<ConfigManager>().get(ConfigConstant.kAppHost) + url;
    return await SDHttp.getInstance().get(requestUrl, params: params);
  }

四、小结

flutter开发实战-Release环境与Debug调试环境配置实现,使用的是GetIt进行配置,不同环境实现不同的config配置即可,比如release请求地址固定的,如果是debug可以切换开发环境来处理更多额外的操作。

学习记录,每天不停进步。文章来源地址https://www.toymoban.com/news/detail-561214.html

到了这里,关于flutter开发实战-Release环境与Debug调试环境配置实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows系统下5分钟配置好PCL(debug和release)

    PCL环境的配置总是令人头疼,尤其是对新手来说,源码的下载、编译、安装都显得尤为复杂,本博客将提供自己编译好的文件,5分钟内完成环境配置。经测试,在 win7 、 win10 、 win11 ; VS2013 、 VS2017 、 VS2019 、 VS2022 上均配置成功(目前还没失败过,只要你会使用鼠标) 点云

    2024年01月24日
    浏览(43)
  • VSCode 开发flutter 实现安卓设备远程调试

    目前只找到了安卓的调试方案😬。 1首先安装 ADB Commanads for VSCode扩展 并且必须确保ADB已经添加到系统环境变量中 如未添加请按照下面的方式添加,如添加请直接跳到下面。 2添加环境变量(windows可参考,mac忽略此项) 我将ADB安装到这个目录下,请查找自己的安装目录。 将

    2024年02月02日
    浏览(38)
  • 1、Flutter移动端App实战教程【环境配置、模拟器配置】

    Flutter是Google用以帮助开发者在IOS和Android 两个平台开发高质量原生UI的移动SDK,一份代码可以同时生成IOS和Android两个高性能、高保真的应用程序。 之所以说Flutter能够达到可以媲美甚至超越原生的体验,主要在于其拥有高性能的图形渲染能力,首先对比下Flutter和原生Android及其

    2024年02月09日
    浏览(34)
  • flutter开发实战-build编译macos环境可安装dmg

    flutter开发实战-build编译macos环境可安装dmg 之前开发中需要变异Macos成dmg的需求,这里记录一下build编译macos环境可安装dmg的过程。 目录如下 如果工程没有macos,需要增加macos支持的平台。命令 运行macos无法访问http请求 可以在macos目录runner文件夹中 DebugProfile.entitlements和 Release

    2024年02月16日
    浏览(43)
  • flutter开发实战-常用的路由Route配置

    flutter开发实战-常用的路由Route配置 路由(Route)在移动开发中通常指页面(Page),这跟 Web 开发中单页应用的 Route 概念意义是相同的,Route 在 Android中 通常指一个 Activity,在 iOS 中指一个 ViewController。所谓路由管理,就是管理页面之间如何跳转,通常也可被称为导航管理。

    2024年02月13日
    浏览(47)
  • 【ETL工具】本地环境IDEA远程DEBUG调试Flume代码

    🪁🍁🪁🍁🪁🍁🪁🍁 感谢点赞和关注 ,每天进步一点点!加油! 🪁🍁🪁🍁🪁🍁🪁🍁 目录 🦄 个人主页——🎐个人主页 🎐✨🍁 一、问题说明 二、操作步骤 2.1 idea创建远程调试 Flume 自定义 HDFS-Sink,远程服务器进行部署flume打包好后的代码,本地监控远程flume程序

    2024年02月08日
    浏览(41)
  • windows driver双机调试环境搭建,用windbg或者debug view查看内核调试输出

    本地环境 本地开发环境: win 10, visual studio installer(2022版), visual studio 2022, VMware player 目的:本地环境作为开发环境,VM作为测试和调试环境 用debug view查看内核调试输出请直接看最后 debug view查看内核打印信息 部分 开发环境搭建 通过 visual studio installer 下载安装 visual studi

    2024年02月06日
    浏览(47)
  • 前端网页开发debug调试基础技巧

    Google Chrome 浏览器提供了许多快捷键,以帮助用户更高效地浏览网页和使用浏览器功能。以下是一些常用的Chrome快捷键: 标签页和窗口管理 Ctrl + T (Windows/Linux) / Cmd + T (Mac): 打开新标签页 Ctrl + N (Windows/Linux) / Cmd + N (Mac): 打开新窗口 Ctrl + Shift + N (Windows/Linux) / Cmd + Shift + N (Mac):

    2024年04月28日
    浏览(34)
  • 在 Windows 操作系统上安装和配置 Flutter 开发环境

    在 Windows 操作系统上安装和配置 Flutter 开发环境 系统配置要求 为了成功安装和运行 Flutter,确保您的开发环境满足以下基本需求: 操作系统:Windows 7 SP1 或更高版本。 处理器:支持 64 位的架构。 磁盘空间:至少预留 2GB 的磁盘空间用于安装 Flutter SDK 及其依赖项。 工具与软

    2024年01月22日
    浏览(57)
  • flutter开发实战-inappwebview实现flutter与Javascript方法调用

    flutter开发实战-inappwebview实现flutter与Javascript方法调用 在使用inappwebview时候,需要flutter端与JS进行交互,调用相应的方法,在inappwebview中的JavaScript Handlers。 要添加JavaScript Handlers,可以使用InAppWebViewController.addJavaScriptHandler方法,在该方法中定义handlerName和JavaScript端调用它时要

    2024年02月03日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包