??早上好~
??這文章總是越寫越來勁,以前總感覺寫一篇技文,要花太多時(shí)間,想想都難,不肯動(dòng)手。其實(shí)后來寫著寫著發(fā)現(xiàn),并不是所有的文章都需要寫很多篇幅。可能短短幾段話就寫完了。關(guān)鍵是要落實(shí)行動(dòng),萬事開頭難,動(dòng)起來就好了。keep..
老規(guī)矩,上酸菜~
《Flutter的撥云見日》系列文章如下:
1、Flutter中指定字體(全局或者局部,自有字庫或第三方)
2、Flutter發(fā)布Package(Pub.dev或私有Pub倉庫)
3、Flutter中解決輸入框(TextField)被鍵盤遮擋問題
4、Flutter 如何在不同環(huán)境上運(yùn)行和打包
??今天,我們要聊聊開發(fā)移動(dòng)App很重要的一環(huán),如何在flutter中配置多環(huán)境,如我們開發(fā)過程中有dev環(huán)境、stage環(huán)境、testing環(huán)境和live生產(chǎn)環(huán)境。這里每個(gè)環(huán)境的url、firebase配置文件(下一節(jié)講解如何配置不同環(huán)境的firebase工程)等等都有所不同,我們?nèi)绾畏指舡h(huán)境呢?
下面開始娓娓道來~
一、配置不同的main.dart文件
1.1 首先我們需要根據(jù)我們不同的環(huán)境定義不同的main.dart文件
其實(shí)也就是比如說你有四個(gè)環(huán)境:dev、stage、testing和live
你需要將main.dart文件復(fù)制為四份,分別給他們命名為main_dev.dart、main_stage.dart、main_testing.dart和main_live.dart。
這其實(shí)就是四個(gè)環(huán)境所對應(yīng)的main文件入口。
目錄如下圖1.1所示

二、根據(jù)main.dart文件反饋出的Channel,配置不同參數(shù)
2.1 因?yàn)楝F(xiàn)在我們有四個(gè)環(huán)境的main.dart文件,我們?nèi)绾螀^(qū)分不同環(huán)境的url或者說不同環(huán)境的配置信息呢?
其實(shí)我們區(qū)分了不同環(huán)境的main.dart文件就很容易做到這些了。
我們可以定義一個(gè)channel渠道目錄,并在其下面新建一個(gè)channel.dart的渠道文件,在此文件中我們可以定義不同環(huán)境的枚舉,然后定義每個(gè)枚舉的不同環(huán)境Url、配置等。如下面代碼:
enum APPChannel {
DEV,
STAGE,
TESTING,
LIVE,
}
class Channel {
static APPChannel currentChannel;
static String get baseURL {
switch (currentChannel) {
case APPChannel.DEV:
return 'https://dev.com';
case APPChannel.STAGE:
return 'https://stage.com';
case APPChannel.TESTING:
return 'https://testing.com;
case APPChannel.LIVE:
return 'https://live.com';
default:
return 'https://dev.com';
}
}
}
2.2 定義好了渠道枚舉之后,我們就可以在不同環(huán)境main.dart中添加不同的環(huán)境渠道值了。
如下代碼所示:
例如在main_dev.dart文件中
void main() {
Channel.currentChannel = APPChannel.DEV;
runApp(FlutterAPP());
}
2.3 最后我們在程序中就可以,根據(jù)現(xiàn)在的渠道獲取相應(yīng)的渠道信息
如下代碼所以,我們根據(jù)渠道獲取不同的Url:
static String baseUrl = Channel.baseURL;
三、如何運(yùn)行不同環(huán)境的main.dart工程
運(yùn)行不同環(huán)境的main.dart文件有兩種方式
3.1 在Android Studio上使用圖形化編輯
3.1.1 首先,在android studio工具欄上選擇下圖3.1所示

3.1.2 再點(diǎn)擊Edit Configurations,在打開的對話框中選擇Flutter,并點(diǎn)擊+,如圖3.2

3.1.3 點(diǎn)擊+號后,選擇Flutter Task,如圖3.3

3.1.4 然后為生成的Flutter Task編輯名稱,選取main.dart文件路徑,再保存,如圖3.4

3.1.5 我們添加好幾個(gè)環(huán)境的task后,就可以在工具欄下拉選項(xiàng)中選擇不同環(huán)境的main.dart運(yùn)行了
2. 使用命令行運(yùn)行不同環(huán)境main.dart
3.2.1 運(yùn)行Apk
flutter run lib/main_dev.dart
3.2.2 打包應(yīng)用包
flutter build apk lib/main_dev.dart
四、結(jié)語
這一節(jié)講的是Flutter開發(fā)App過程中區(qū)分不同環(huán)境的問題,其實(shí)挺簡單的,就是拆分不同環(huán)境的main.dart文件,配置Channel.dart環(huán)境文件就可以了,其實(shí)這一節(jié)是為一下節(jié)打基礎(chǔ)的,下一節(jié)將會(huì)探討一下如何在使用Firebase進(jìn)行Crash捕獲,Notification等功能中,區(qū)分開發(fā)環(huán)境和生產(chǎn)環(huán)境。盡情期待~_
申明:禁用于商業(yè)用途,如若轉(zhuǎn)載,請附帶原文鏈接。http://www.itdecent.cn/p/04afcbb4c8bb蟹蟹~
PS: 寫文不易,覺得沒有浪費(fèi)你時(shí)間,請給個(gè)點(diǎn)贊~ ??