Dynamic Widget 1.0.4版本已經支持web application

隨着Flutter1.9版本在上海宣佈發佈,Flutter對web的支持也合併到Flutter主倉庫。終於不需要修改包名了。 現在是完全基於同一份codebase。Flutter1.9的其他一些新特性可以看這裏:https://developers.googleblog.com/2019/09/flutter-news-from-gdd-china-flutter1.9.html

Dynamic Widget 是一個後端驅動的動態UI庫,通過json描述你的Flutter頁面,這個json基本上跟flutter widget代碼是一樣的,所以如果你知道Flutter widget怎麼寫,你也就知道json怎麼寫。很久沒有看了,現在發現已經有了250個星星。這次Flutter1.9對web支持了,自然會想讓Dynamic widget也支持web。

首先需要讓dynamic widget項目支持web application,你需要按照https://flutter.dev/docs/get-started/web步驟一步一步來。
1、切到flutter master channel分支,執行以下命令:

flutter channel master
flutter upgrade

這裏要注意,需要翻牆纔行。

2、激活flutter對web的支持,執行以下命令:

flutter config --enable-web

3、進入項目工程目錄,讓項目支持web,執行以下命令:

 cd <into project directory>
 flutter create .

4、運行web項目。

flutter run -d chrome

到第四步的時候,你會覺得原來世界這麼美好,這麼簡單的4步就加上對web的支持。當你帶着微笑在command上按下flutter run -d chrome這一刻,Google chrome起來的時候,你內心肯定是非常愉悅的。但是在等待一兩分鐘之後你會發現Google Chrome還是一片白屏,然後切到command,你發現有打印如下的log:

WTF!說好的幸福呢,看這個log,應該是我們代碼依賴在web平臺上不支持,所以停止了編譯。具體哪個依賴並沒有直接支持,只是告訴了我們下面的幾個dart文件裏面有。沒有關係,把這個log貼到google上,做了一些排查後發現,原來是import 'dart:io';在web平臺不支持,我的代碼裏面只是用到dart:io發了網絡請求而已,dart自己的內部的庫都不支持,看了flutter的這個issue說是要用http package來做網絡請求。

改成使用http庫來做網絡請求後,趕緊切到command上,小心翼翼的打上flutter run -d chrome,懷着忐忑的心慢慢的按下Enter。靜靜的看了command上的log。我操,log沒打印出錯誤呀,怎麼還是白屏?

在command上按下ctrl + c,然後輸入flutter run -d chrome -v。多加個-v看看詳細日誌。好了,這次知道爲什麼是白屏了,原來是404,但是我怎麼知道爲什麼404呀,我又不清楚dart編譯成js是怎樣的過程,沒辦法繼續Google,廢了一杯咖啡的時間,終於找到一個類似的兄弟報了類似的問題。https://github.com/flutter/flutter/issues/40151,直接按照有點讚的兄弟方法搞一下。執行flutter run --release -d chrome -v,其實就加了個--release,這個是編譯成release包?

yeah!沒有404了,終於跑起來了。


Flutter支持web後,可以說目前來說已經幾乎就是全端了,對桌面端的支持目前也在發力中。給大家看看同時運行在Android,iPhone和Web端情況,帥,再次希望Flutter能一統江湖。


代碼已經commit到https://github.com/dengyin2000/dynamic_widgetflutter-web-support分支,有興趣的同學可以fork下。

Warning:目前flutter 1.9版本對web的支持還是處於非常早期階段,會缺失一些功能,還有性能方面的問題,不建議用在生產環境。

Reference:
https://github.com/dengyin2000/dynamic_widget 大家高擡貴手star下唄

https://developers.googleblog.com/2019/09/flutter-news-from-gdd-china-flutter1.9.html

https://flutter.dev/docs/get-started/web

https://github.com/flutter/flutter/issues/32430

https://github.com/flutter/flutter/issues/40151

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章