又是一種踩雷日常,想看看開發自己的 App 是什麼感覺
可是我又不想兩個平台語言都學 Android 陣營就是 Kotlin、Java iOS 陣營就是 Swift、Objective-C
於是就選了 Google 旗下最新的框架 —— Flutter
心得#
整體架構有點自由,自由到我都不知道 model 要放哪 LUL UI 也很好編排,除非你要改一些位置 相關的 Code 也可以去 Google 找找看 我原本只想寫 UI 結果不小心就把資料一起 Get 進來了
而且整體 Code 也沒有不多
URL 網址無法打開之踩雷#
前陣子才到的雷就是網址問題
cURL 拿到的是網址含有中文字
但是呢!瀏覽器會很有“智慧”的幫你轉成 URL Encode
但在 Dart 裡面就沒有這種“智慧”東西了
前面要求我們要先 canLaunch
才可以 launch 網址
_launchURL(String url) async {
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
可是寫完之後要呼叫網址檔案時,就會 throw exception
結果後來觀察到用 PHP cURL 拿到的網址,全數字沒問題,但出現中文就會 throw exception
我還在想是不是中文問題,還去 Google url_launcher flutter chinese
但發現根本沒有相關結果
直到我看到有個結果是網址有空格,要轉成 URL Encode
我才想到,要先轉成 URL Encode 瀏覽器才知道
於是就改成這樣
_launchURL(String url) async {
url = Uri.encodeFull(url); // url to url encode.
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
這個坑,害我想了一整晚,原來是 Encode 問題啊!