Flutter +攜程=?

目錄

  • 主要頁面,包括首頁、搜索、旅拍和我的四個主頁面
  • 依賴庫
  • 實際效果

主要頁面

  • 整體框架採用PageView + BottomNavigationBar ,每個頁面的狀態保存採用AutomaticKeepAliveClientMixin

  • 首頁

    • 全面屏適配,體現在頂部搜索框距離狀態欄的距離,項目內筆者採用的是 MediaQueryData.fromWindow(window).padding.top 得到狀態欄高度進行適配,當然也可以使用SafeArea來包裹頁面。(使用了Scaffold的appbar與bottomNavigationBar是不需要適配的,因爲Scaffold框架會自動幫我們完成這些適配工作)
    • 輪播圖主要採用的是Swiper控件
    • 列表採用ListView控件,如果數據過多,需要上拉加載建議使用ListView的Builder方法進行服用View
    • 主頁整體佈局採用了Stack + MediaQuery.removePadding + RefreshIndicator + appBar
    • 通過對Container進行alpha設置實現appBar的顏色漸變
  • 搜索

    • 語音識別採用百度API,native接入百度語音識別API,這裏需要注意build.gradle的設置,由於筆者是通過新建android模塊,所以需要仿照主app的build.gradle對fltter引入,才能導入MethodChannel相關類。此處涉及Flutter與native通信,兩端方法名需要一致。
    • 語音識別後自動跳轉就行搜索,利用ListView顯示數據,用到FractionallySizedBox控件撐滿屏幕寬度,利用Expand設置權重,個人感覺Expand等價於LinearLayout,flex屬性和weight屬性類似
  • 旅拍

    • TabBar + Flexible+ TabBarView
    • RefreshIndicator + StaggeredGridView + Stack + Card + PhysicalModel 實現下拉刷新 上拉加載
    • 文字固定寬度 LimitedBox
    • 圓形圖片使用 PhysicalModel 圓角設置爲控件長/寬一半
  • 我的

    • WebView
  • 網頁加載

    • 所有點擊功能採用GestureDetector控件實現,網頁使用WebView(利用FlutterWebviewPlugin控件自定義)控件加載
    • 當然也可以利用webview_flutter插件替代上述自定義WebView
  • 網絡

    • 採用Http get和post請求,json解析
    • 接口在項目內

依賴庫

  • flutter_swiper: ^1.1.4
  • http: ^0.12.0+4
  • flutter_webview_plugin: ^0.3.10+1
  • flutter_staggered_grid_view: ^0.3.0
  • flutter_splash_screen: ^0.1.0
  • Flutter插件開發 Flutter插件庫

實際效果


推薦閱讀:2017-2020歷年字節跳動Android面試真題解析(累計下載1082萬次,持續更新中)

作者:Tenderness4
鏈接:https://juejin.im/post/5e650b72518825492f771f5a
來源:掘金

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章