快轉到主要內容

Flutter 心得 和 URL 網址無法打開之踩雷

·127 字·1 分鐘·
ChengHao Yang
作者
ChengHao Yang
SRE / CNCF Ambassador
目錄

又是一種踩雷日常,想看看開發自己的 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 問題啊!

相關文章