本系列同步發表在 個人部落格,歡迎大家關注~
現在各式各樣的資料都存放在雲端,App 本身不會存太多資訊,所以接 Web API 幾乎是現代 App 必然要作的事。
想當初高中的時候,聽個音樂都還要下載放到 MP3,現在都是各種串流阿...
--
其實這階段總共有三個 API 要串接。
首先既然是 GitHub App,就一定要串接 GitHub API 拉~
其他分別是 Hacker News API 和 GitHub Trending API
而且說是串接,不過你也知道,如果有別人作好的套件,為何不用呢?
很幸運的是,前兩個 API,我會分別使用 github 和 hnpwa_client 這兩個套件。
而 GitHub Trending API 方面看來是必須自己架構程式碼了 ...
所以 GitHub Trending API 這部份,我打算放到這階段最後再講。
--
好拉,話不多說!
我直接進入主題吧~
hnpwa_client 這個套件呢,其實它並不是直接整合官方的 Hacker News API,
而是連接 HNPWA api 這個 Project 的 API。
個人覺得原因在於:
HNPWA api 是專門為 PWA 或 Mobile App 設計的。先來看一下 Commit
我修改的步驟很簡單:
_HomePageState 裡寫 final HnpwaClient hnClient = HnpwaClient();,宣告 hnClient 這個變數方便在這個 State 裡面使用。initState() 方法,並調用我自己寫的異步任務 fetchHNData()
fetchHNData() 裡面調用 hnpwa_client 的方法 hnClient.news() 和 hnClient.newest()。_hnTops 和 _hnNews 這兩個變數。
_hnTops = hnNew.items;
_hnNews = hnNewest.items;
改完之後,在有連線狀態時一進到首頁就會讀取 Hacker News 囉~

這邊稍微再做一個簡易的功能,就是點擊 Hack News 的 ListTile 後會自動用瀏覽器開啟連結。
而達成此功能只須依賴另一個 Flutter Team 開發的套件 url_launcher。
它會幫你自動的用你手機系統(iOS 跟 Android 都支援)預設的方式開啟 URL,不論是 http(s) 、mailto、tel 跟 sms 都會處理喔~
lib/utils.dart
Future launchURL(url) async {
  if (await canLaunch(url)) {
    await launch(url);
  } else {
    throw 'Could not launch $url';
  }
}
程式上非常簡單,在 ListTile 的 onTap 調用 launchURL,這樣就可以囉~
--
今日成果

今天是進入第二階段的第一天,先小試身手,程式碼的部份並不難。
之後會慢慢進入最主要的 GitHub API 囉~