歷時三天,完成了Flutter版本的玩安卓

Zhujiang發表於2020-04-10

專案地址

前言

接觸Flutter其實已經很久了,從18年下半年就開始關注FLutter了,當時使用Flutter的人還非常少,我也只是大概看了看,寫了個小Demo就沒再深入了,短短不到兩年時間,各大部落格社群移動端的文章有一大部分都是關於FLutter的,可以看到,Flutter真的火起來了。

正文

關注泓洋大神已經許久,在玩安卓上也學習了很多的知識,看著很多人寫了很多版本的玩安卓客戶端,有Java的、有Kotlin的、還有Flutter的。其實很早就有自己也寫一個玩安卓來練練手的想法,但一直由於時間不夠沒有付諸實踐,這回抽了幾天時間,基本完成了常用的功能,比如:文章列表、專案列表、公眾號列表、收藏、積分、文章搜尋、登入註冊等等。

廢話不多說,直接來看一下專案的部分截圖吧:

image-20200402105301676 image-20200402105301676 image-20200402105301676
image-20200402105301676 image-20200402105301676 image-20200402105301676
image-20200402105301676 image-20200402105301676 image-20200402105301676
image-20200402105301676 image-20200402105301676 image-20200402105301676

依賴庫

看完了效果圖,這裡再來放一下用到的依賴庫吧:

  • flutter_screenutil 螢幕適配
  • fluttertoast 吐司
  • shard_preferences 類似安卓的sp
  • event_bus 和安卓的eventbus類似
  • image_picker 圖片選擇
  • http 網路請求
  • flutter_swiper 輪播圖
  • flutter_webview_plugin webview外掛
  • pull_to_refresh 下拉重新整理、上拉載入

上面的這些庫大家可以進https://pub.dev/來進行搜尋使用。

遇到的問題

三天時間,其實也沒有遇到多少問題,說幾個比較噁心的問題吧:

  • 首先是TabBar和TabView顯示公眾號的頁面,自己想的是直接獲取到公眾號資料的同時重新整理TabController並且直接請求當前公眾號的文章列表,這些操作全放在了一塊,當時就給我整懵逼了,然後TabView的滑動監聽還有問題?,後來直接不自己監聽了,直接交給TabBar來實現,我需要做的只有新建一個Widget,在裡面完成公眾號列表的實現,萬物皆Widget嘛!
  • 後來寫完了不需要cookie的介面後(無需登入的介面),在實現需要cookie的介面的時候差點把我弄崩潰,cookie在後臺使用較多,但寫安卓的時候也沒有用過cookie,看泓洋大神寫的用PostMan實現也能成功,但是我自己呼叫的時候給headers傳cookie時一直不對,後來想明白了,cookie只是header的一個引數,我把使用者名稱和密碼的key學著PostMan都寫成了cookie,後臺肯定獲取不到啊,改了之後就可以了。
  • 接下來這個應該屬於flutter_webview_plugin外掛的一個Bug吧,我在使用WebViewScaffold的時候,死活彈不出底部對話方塊,但是換成Scaffold的時候就可以彈出來,WebViewScaffold將我們的底部對話方塊給遮擋住了,所以彈不出來;然後就換了一個思路,直接在WebViewScaffold中的bottomNavigationBar中加上想彈出的頁面不得了,然後控制好顯示與否就行,具體實現專案中都有,這裡不做贅述。

總結

Flutter很好用,優點就是開發成本低、速度快、效率高,但缺點也很明顯,介面巢狀太多,後期維護很費勁。我也嘗試著將安卓中的MVP寫到Flutter中,但是效果並不是太好,所以就先放棄了,只能是多抽幾個Widget了。大家如果有空也可以自己照著弘揚大神的玩安卓的api寫寫試試(www.wanandroid.com/blog/show/2…

更新

  • WebView外掛由flutter_webview_plugin改為了webview_flutter
  • 為IOS新增了拍照許可權,可以進行拍照選取頭像。
  • 2020.4.13

相關文章