国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

flutter開(kāi)發(fā)實(shí)戰(zhàn)-Release環(huán)境與Debug調(diào)試環(huán)境配置實(shí)現(xiàn)

這篇具有很好參考價(jià)值的文章主要介紹了flutter開(kāi)發(fā)實(shí)戰(zhàn)-Release環(huán)境與Debug調(diào)試環(huán)境配置實(shí)現(xiàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

flutter開(kāi)發(fā)實(shí)戰(zhàn)-Release環(huán)境與Debug調(diào)試環(huán)境配置實(shí)現(xiàn)

在開(kāi)發(fā)中,我們經(jīng)常遇到Release與Debug相關(guān)請(qǐng)求等配置隔離。這里記錄之前的實(shí)現(xiàn)方案。
在實(shí)現(xiàn)之前,我們需要先看下git_it

一、get_it

在開(kāi)發(fā)過(guò)程中,需要App的部分邏輯與Widget分離。git_it和provider都可以用作狀態(tài)管理,這里使用的是git_it,我使用git_it緣由就是獲取時(shí)不強(qiáng)制依賴context。

GetIt是一個(gè)用于 Dart 和 Flutter 項(xiàng)目的簡(jiǎn)單服務(wù)定位器,其中包含一些受到 Splat 啟發(fā)的附加功能。 它可以用來(lái)代替 InheritedWidget 或 Provider 比如從你的用戶界面來(lái)訪問(wèn)對(duì)象。

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;

//重新自定義一個(gè)新的
GetIt getIt = GetIt.asNewInstance();

注冊(cè)

GetIt gitIt = GetIt.instance;

//在GetIt里注冊(cè)工廠類(lèi)TokenFetcher
gitIt.registerFactory<TokenFetcher>(() => TokenFetcherImpl());

調(diào)用獲取

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

這里簡(jiǎn)單介紹使用方式,Release與Debug相關(guān)請(qǐng)求需要用到git_it。

二、實(shí)現(xiàn)Config

Release與Debug相關(guān)請(qǐng)求配置進(jìn)行區(qū)分,我們需要實(shí)現(xiàn)一個(gè)CongfigManager

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

// 定義枚舉,網(wǎng)絡(luò)請(qǐng)求環(huán)境,DEV、PRE、PRO
enum ConfigEnv {
  dev, // Dev服務(wù)器環(huán)境
  pre, // Pre服務(wù)器環(huán)境 預(yù)發(fā)布環(huán)境
  pro, // Pre服務(wù)器環(huán)境 線上生產(chǎn)環(huán)境
}

/// 管理網(wǎng)絡(luò)請(qǐng)求相關(guān)服務(wù)
abstract class ConfigManager extends ChangeNotifier {
  void init();

  String get(String key);

  int getImAppId();
}

2.1、實(shí)現(xiàn)Release的配置ReleaseConfigMgr

實(shí)現(xiàn)Release環(huán)境的ConfigManager

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

  
  String get(String key) {
    // 根據(jù)key獲取請(qǐng)求的服務(wù)地址
    // 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、實(shí)現(xiàn)Debug的配置DebugConfigMgr

實(shí)現(xiàn)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
    // 從本地取出相應(yīng)的保存環(huán)境類(lèi)型
    if (ConfigEnv.dev == _env) {
      /// IM sdk appId  Dev環(huán)境
      return 111111111;
    } else if (ConfigEnv.pre == _env) {
      /// IM sdk appId  Pre環(huán)境
      return 111111112;
    } else if (ConfigEnv.pro == _env) {
      /// IM sdk appId  Pro環(huán)境
      return 111111113;
    }
    return 0;
  }

  
  void init() {
    // TODO: implement init
    // 初始化的時(shí)候從本地取出
  }

  // 設(shè)置環(huán)境
  setEnv(ConfigEnv env) {
    // TODO: implement setEnv
    _env = env;
    // 更新本地存儲(chǔ)的環(huán)境類(lèi)型
    notifyListeners();
  }
}

三、使用get_it設(shè)置Release、debug對(duì)應(yīng)的config

使用get_it設(shè)置Release、debug對(duì)應(yīng)的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();
  });

  // 設(shè)置請(qǐng)求地址及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();
  });

  // 設(shè)置請(qǐng)求地址及IM
  GetIt.instance.registerSingleton<ConfigManager>(debugConfigMgr,
      signalsReady: true);

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

3.3、代碼中具體使用獲取請(qǐng)求地址

代碼中具體使用獲取請(qǐng)求地址,可以直接使用GetIt.instance().get(ConfigConstant.kAppHost)獲取請(qǐng)求服務(wù)器地址

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

具體請(qǐng)求就可以使用

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);
  }

四、小結(jié)

flutter開(kāi)發(fā)實(shí)戰(zhàn)-Release環(huán)境與Debug調(diào)試環(huán)境配置實(shí)現(xiàn),使用的是GetIt進(jìn)行配置,不同環(huán)境實(shí)現(xiàn)不同的config配置即可,比如release請(qǐng)求地址固定的,如果是debug可以切換開(kāi)發(fā)環(huán)境來(lái)處理更多額外的操作。

學(xué)習(xí)記錄,每天不停進(jìn)步。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-561214.html

到了這里,關(guān)于flutter開(kāi)發(fā)實(shí)戰(zhàn)-Release環(huán)境與Debug調(diào)試環(huán)境配置實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Windows系統(tǒng)下5分鐘配置好PCL(debug和release)

    Windows系統(tǒng)下5分鐘配置好PCL(debug和release)

    PCL環(huán)境的配置總是令人頭疼,尤其是對(duì)新手來(lái)說(shuō),源碼的下載、編譯、安裝都顯得尤為復(fù)雜,本博客將提供自己編譯好的文件,5分鐘內(nèi)完成環(huán)境配置。經(jīng)測(cè)試,在 win7 、 win10 、 win11 ; VS2013 、 VS2017 、 VS2019 、 VS2022 上均配置成功(目前還沒(méi)失敗過(guò),只要你會(huì)使用鼠標(biāo)) 點(diǎn)云

    2024年01月24日
    瀏覽(22)
  • VSCode 開(kāi)發(fā)flutter 實(shí)現(xiàn)安卓設(shè)備遠(yuǎn)程調(diào)試

    VSCode 開(kāi)發(fā)flutter 實(shí)現(xiàn)安卓設(shè)備遠(yuǎn)程調(diào)試

    目前只找到了安卓的調(diào)試方案??。 1首先安裝 ADB Commanads for VSCode擴(kuò)展 并且必須確保ADB已經(jīng)添加到系統(tǒng)環(huán)境變量中 如未添加請(qǐng)按照下面的方式添加,如添加請(qǐng)直接跳到下面。 2添加環(huán)境變量(windows可參考,mac忽略此項(xiàng)) 我將ADB安裝到這個(gè)目錄下,請(qǐng)查找自己的安裝目錄。 將

    2024年02月02日
    瀏覽(43)
  • 1、Flutter移動(dòng)端App實(shí)戰(zhàn)教程【環(huán)境配置、模擬器配置】

    1、Flutter移動(dòng)端App實(shí)戰(zhàn)教程【環(huán)境配置、模擬器配置】

    Flutter是Google用以幫助開(kāi)發(fā)者在IOS和Android 兩個(gè)平臺(tái)開(kāi)發(fā)高質(zhì)量原生UI的移動(dòng)SDK,一份代碼可以同時(shí)生成IOS和Android兩個(gè)高性能、高保真的應(yīng)用程序。 之所以說(shuō)Flutter能夠達(dá)到可以媲美甚至超越原生的體驗(yàn),主要在于其擁有高性能的圖形渲染能力,首先對(duì)比下Flutter和原生Android及其

    2024年02月09日
    瀏覽(25)
  • flutter開(kāi)發(fā)實(shí)戰(zhàn)-build編譯macos環(huán)境可安裝dmg

    flutter開(kāi)發(fā)實(shí)戰(zhàn)-build編譯macos環(huán)境可安裝dmg

    flutter開(kāi)發(fā)實(shí)戰(zhàn)-build編譯macos環(huán)境可安裝dmg 之前開(kāi)發(fā)中需要變異Macos成dmg的需求,這里記錄一下build編譯macos環(huán)境可安裝dmg的過(guò)程。 目錄如下 如果工程沒(méi)有macos,需要增加macos支持的平臺(tái)。命令 運(yùn)行macos無(wú)法訪問(wèn)http請(qǐng)求 可以在macos目錄runner文件夾中 DebugProfile.entitlements和 Release

    2024年02月16日
    瀏覽(18)
  • flutter開(kāi)發(fā)實(shí)戰(zhàn)-常用的路由Route配置

    flutter開(kāi)發(fā)實(shí)戰(zhàn)-常用的路由Route配置 路由(Route)在移動(dòng)開(kāi)發(fā)中通常指頁(yè)面(Page),這跟 Web 開(kāi)發(fā)中單頁(yè)應(yīng)用的 Route 概念意義是相同的,Route 在 Android中 通常指一個(gè) Activity,在 iOS 中指一個(gè) ViewController。所謂路由管理,就是管理頁(yè)面之間如何跳轉(zhuǎn),通常也可被稱為導(dǎo)航管理。

    2024年02月13日
    瀏覽(22)
  • 【ETL工具】本地環(huán)境IDEA遠(yuǎn)程DEBUG調(diào)試Flume代碼

    【ETL工具】本地環(huán)境IDEA遠(yuǎn)程DEBUG調(diào)試Flume代碼

    ???????????????? 感謝點(diǎn)贊和關(guān)注 ,每天進(jìn)步一點(diǎn)點(diǎn)!加油! ???????????????? 目錄 ?? 個(gè)人主頁(yè)——??個(gè)人主頁(yè) ????? 一、問(wèn)題說(shuō)明 二、操作步驟 2.1 idea創(chuàng)建遠(yuǎn)程調(diào)試 Flume 自定義 HDFS-Sink,遠(yuǎn)程服務(wù)器進(jìn)行部署flume打包好后的代碼,本地監(jiān)控遠(yuǎn)程flume程序

    2024年02月08日
    瀏覽(27)
  • windows driver雙機(jī)調(diào)試環(huán)境搭建,用windbg或者debug view查看內(nèi)核調(diào)試輸出

    本地環(huán)境 本地開(kāi)發(fā)環(huán)境: win 10, visual studio installer(2022版), visual studio 2022, VMware player 目的:本地環(huán)境作為開(kāi)發(fā)環(huán)境,VM作為測(cè)試和調(diào)試環(huán)境 用debug view查看內(nèi)核調(diào)試輸出請(qǐng)直接看最后 debug view查看內(nèi)核打印信息 部分 開(kāi)發(fā)環(huán)境搭建 通過(guò) visual studio installer 下載安裝 visual studi

    2024年02月06日
    瀏覽(51)
  • 前端網(wǎng)頁(yè)開(kāi)發(fā)debug調(diào)試基礎(chǔ)技巧

    Google Chrome 瀏覽器提供了許多快捷鍵,以幫助用戶更高效地瀏覽網(wǎng)頁(yè)和使用瀏覽器功能。以下是一些常用的Chrome快捷鍵: 標(biāo)簽頁(yè)和窗口管理 Ctrl + T (Windows/Linux) / Cmd + T (Mac): 打開(kāi)新標(biāo)簽頁(yè) Ctrl + N (Windows/Linux) / Cmd + N (Mac): 打開(kāi)新窗口 Ctrl + Shift + N (Windows/Linux) / Cmd + Shift + N (Mac):

    2024年04月28日
    瀏覽(52)
  • 在 Windows 操作系統(tǒng)上安裝和配置 Flutter 開(kāi)發(fā)環(huán)境

    在 Windows 操作系統(tǒng)上安裝和配置 Flutter 開(kāi)發(fā)環(huán)境 系統(tǒng)配置要求 為了成功安裝和運(yùn)行 Flutter,確保您的開(kāi)發(fā)環(huán)境滿足以下基本需求: 操作系統(tǒng):Windows 7 SP1 或更高版本。 處理器:支持 64 位的架構(gòu)。 磁盤(pán)空間:至少預(yù)留 2GB 的磁盤(pán)空間用于安裝 Flutter SDK 及其依賴項(xiàng)。 工具與軟

    2024年01月22日
    瀏覽(35)
  • flutter開(kāi)發(fā)實(shí)戰(zhàn)-inappwebview實(shí)現(xiàn)flutter與Javascript方法調(diào)用

    flutter開(kāi)發(fā)實(shí)戰(zhàn)-inappwebview實(shí)現(xiàn)flutter與Javascript方法調(diào)用

    flutter開(kāi)發(fā)實(shí)戰(zhàn)-inappwebview實(shí)現(xiàn)flutter與Javascript方法調(diào)用 在使用inappwebview時(shí)候,需要flutter端與JS進(jìn)行交互,調(diào)用相應(yīng)的方法,在inappwebview中的JavaScript Handlers。 要添加JavaScript Handlers,可以使用InAppWebViewController.addJavaScriptHandler方法,在該方法中定義handlerName和JavaScript端調(diào)用它時(shí)要

    2024年02月03日
    瀏覽(30)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包