Flutter
的快速發展,如今
Flutter
生態也日漸壯大,偶然打開
Flutter
的
官方文檔發現已經支持了
Web
開發,因而便前去探探路,給你們分享點乾貨。
首先咱們這裏以默認Flutter
建立的項目爲例,也就是New
一個Flutter Project
,有的同窗會發現目錄下並無Web
這個目錄,因此在參考官網進行flutter run -d chrome
命令的時候是無效的。html
第一步先檢查當前的Flutter
分支是否處在master
上面。執行命令python
flutter channel
複製代碼
若是在master
分支上Terminal
內會打印以下。android
flutter channels:
beta
dev
* master
stable
複製代碼
若是沒在master
分支上則切換至master
上.ios
flutter channel master
複製代碼
隨後對Flutter
的SDK進行更新,執行以下命令。至此咱們的SDK就具有構建Web的能力了。web
flutter upgrade
複製代碼
更新完SDK的同窗們確定都想躍躍欲試,遂照着官網敲下flutter run -d chrome
,隨後發現SDK報錯~此處仍是埋了一坑,其緣由是SDK沒有啓用Web工具
構建項目,目前Web
開發還處於發育階段。執行以下命令啓用項目。chrome
flutter config --enable-web
複製代碼
而後再執行json
flutter create .
複製代碼
當你看到Flutter
在終端給你的彩蛋就說明已經搭建成功了,而且會告訴你如今Web工具
處於試錯階段,生產環境仍是要慎用。此時你會發現你的項目存在了一個Web
的目錄。瀏覽器
執行完上述命令事後咱們就可使用Chrome
來調試咱們的頁面了,在Android Studio
中設備選擇會多了幾個選項 bash
Chrome(web)
會直接運行在
Chrome
瀏覽器上,當選擇
Server(web)
的時候會在終端輸出一個地址如
http://localhost:54125/
將地址輸入到瀏覽器中便可訪問。也可用過命令工具進行
Debug
flutter run -d chrome
複製代碼
Android Studio
默認會使用dhttpd
來搭建HTTP服務,關於dhttpd
我就不過多贅述,官方文檔有詳細的描述,實際上相似於python -m SimpleHTTPServer 80
。服務器
當咱們嘗試發佈的時候,先對Web
項目進行構建,在項目根目錄下執行
flutter build web
複製代碼
在build目錄下產生對應的文件,結構以下。
/build/web
assets
AssetManifest.json
FontManifest.json
LICENSE
fonts
MaterialIcons-Regular.ttf
<other font files>
<image files>
index.html
main.dart.js
main.dart.js.map
複製代碼
在打包的時候則需將build目錄總體打包,去除ios
及android
目錄,上傳到服務器便可。
隨後在服務器下對其進行解壓,CD
到/build/web
目錄下開啓Http服務
,別人就能夠看到你的網站啦,官網的例子是dhttp
和python
,我試用Nginx
也徹底沒有問題。
若是想使用本地服務調試,也能夠CD
到/build/web
執行
flutter pub global run dhttpd
複製代碼
端口默認是8080
,在瀏覽器中輸入localhost:8080
便可查看頁面。 沒有dhttpd
話用pub
安裝一下便可。
從Flutter
的進展能夠看出Google
在跨平臺上下的決心,一份代碼如今能夠產出三端,不過我我的以爲一個項目有了IOS
和Android
兩端後,沒人會去用Web App
吧,並且我以爲頁面初始化加載速率略慢。不過對於咱們客戶端的同窗來講沒事還能寫寫網頁仍是不錯的了。