flutter_eyepetizer
- 這是一款基於 Google Flutter 實現的一款仿開眼視訊 App。
背景
從 Google 在 2018.02 的世界移動大會上正式推出首個 Flutter Beta 版,到 2018.12 的 Flutter Live 2018 上,釋出 1.0 穩定版,再到現在,也差不多有 18 個月的時間了。Flutter 在 Github 上的 star、fork 量也是一路飆升,可以說,出自 Google 的 Flutter,除了自帶光環,再加上它本身的眾多優勢,受到了眾多開發者的追捧,熱度只增不減。
作為一名不幹寂寞的小開發,我也在去年 7 月份,果斷入坑,開始 Flutter 的學習。也是略有斬獲,並輸出了一篇關於原生與 flutter 混合開發的文章:Kotlin + MVP + Flutter ,讓你可以在自己的專案中整合 Flutter 並使用。反響也還不錯,當然也有很多考慮不足的地方。
之後的很長一段時間,我也因為工作上的變動以及一些個人原因,擱置了 flutter 的學習計劃。這段時間,工作生活狀態逐漸穩定之後,也繼續開始了我的 flutter 學習之路。所以有了今天的主角 仿開眼視訊-flutter實現版。其實整個 App,現階段並沒有多麼複雜的東西,基本用的都是 flutter 自帶的 Widget,設計風格遵循 MD 規範,所以非常適合初學者學習。
掃碼下載
- 手機掃描下方二維碼,即可下載。
目前實現的功能
- 首頁每日精選
- 發現頁 - 推薦關注、熱門分類
- 熱門 - 周排行、月排行、總排行
- 我的(目前是靜態頁,後期完善)
- 搜尋頁
- 熱門關注列表
- 熱門分類列表
- 視訊詳情
說明
專案純屬個人愛好而寫,API 均來自開眼視訊,原始碼僅供學習交流。
專案截圖
- gif
執行方式
- 檢視分支
flutter channel
/// 如果當前分支不是 beta,請切換至 beta 分支
flutter channel beta
複製程式碼
- 切換分支過程中,會自動幫你更新至最新版。如果分支是在 beta 分支,請執行以下命令,檢查是否需要安裝其他依賴
flutter doctor
複製程式碼
- 執行啟動
flutter packages get
/// 確保裝置已連線
flutter run
複製程式碼
你能學到的東西?
- 大部分基礎控制元件的使用,諸如:Text、Image、Icon、Scaffold、ListView、GridView、CustomScrollView、Container、Padding、Expanded、Column、Row等等...
- 下拉重新整理、上拉載入。
- 佈局排版,以上控制元件會使用之後,進行佈局排版就很簡單了,原則:先上後下,先左後右。
- 三方庫的引入、圖片的引入。
- 使用者互動事件的響應。
- 頁面的跳轉,普通跳轉、攜參跳轉。
- json 解析。推薦一個外掛:FlutterJsonBeanFactory,使用方式自行百度吧,非常簡單~
- http 請求的使用。針對 dio,做了一點簡單封裝,程式碼如下:
/// 執行 get 請求
static doGet(
String url, {
queryParameters,
options,
Function success,
Function fail,
}) async {
print('http request url: $url');
try {
Response response = await buildDio().get(
url,
queryParameters: queryParameters,
options: _options,
);
success(response);
print('http response: $response');
} catch (exception) {
fail(exception);
print('http request fail: $url --- $exception');
}
}
複製程式碼
用到的三方庫
- dio 強大的 Http 請求庫。
- cached_network_image 更加靈活方便的圖片載入框架。
- fluttertoast 吐司。
- flustars 常用工具類。
- device_info Flutter 外掛。
- flutter_ijkplayer 視訊播放。
後續計劃
會有新功能的新增,更多的是針對現在專案的缺點,所進行的優化。
- 作者詳情資訊頁展示。
- 封裝一個更好用的 AppBar。
- 下拉重新整理、上拉載入封裝。
- 螢幕適配,非常有必要!。
- 事件匯流排引入。
- Bloc模式的引入,不瞭解Bloc?更多詳情請點選 Bloc。
- rxdart,都知道在 Android 中,RxJava 的地位舉足輕重,那麼,在 Flutter 開發中,要不要嘗試一下 rxdart 呢?
- 會考慮和Native混合開發,只能說有可能。
最後
附上專案下載地址 flutter_eyepetizer。
如果您和我一樣,喜歡技術,喜歡 Flutter,可以關注此專案,賞個star。我閒暇時間,也儘可能快的更新。