Flutter仿京東客戶端

背景

從Flutter發(fā)布beta版本就一直在關(guān)注Flutter、很多大廠也都在使用Flutter比如字節(jié)跳動(dòng)今日頭條、西瓜視頻、阿里爸爸的閑魚(yú)、毒APP,包括我們公司(一個(gè)賣菜的公司)也在部分非主流程頁(yè)面使用Flutter。都說(shuō)Flutter極其流暢漂亮,本著再不學(xué)習(xí)就老了的心態(tài),于是準(zhǔn)備抽些閑暇時(shí)間來(lái)嘗試下Flutter。最近小端午放假APP的幾個(gè)頁(yè)面也搭建的差不多了,本著人人為我、我為人人的精神決定寫(xiě)個(gè)blog給大家分享一下。

為什么仿JD APP?

因?yàn)橄馢D這種電商APP無(wú)論是業(yè)務(wù)邏輯還是頁(yè)面復(fù)雜度都是比較復(fù)雜的,一來(lái)可以體驗(yàn)一下Flutter在復(fù)雜頁(yè)面流暢度的表現(xiàn),二來(lái)也可以看下到底Flutter是否能真正投入生產(chǎn)環(huán)境中。

首頁(yè)

Simulator Screen Shot - iPhone 11 Pro Max - 2020-06-26 at 17.33.25.png
功能 方案
搜索滾動(dòng)吸頂 SliverAppBar + FlexibleSpaceBar
Banner輪播 flutter_swiper
貨架 PageView+GridView
推薦列表 flutter_swiper

分類

image.png
功能 方案
banner flutter_swipper
掃一掃 barcode_scan

購(gòu)物車

image.png
功能 方案
商品選擇
倒計(jì)時(shí) Timer.periodic
商品數(shù)量增減 自定義組件

我的

image.png
功能 方案
header滾動(dòng)漸變 監(jiān)聽(tīng)滾動(dòng)位置設(shè)置Appbar opacity
其它 頁(yè)面效果還原

商詳

I love China, love huawei

image.png

image.png
功能 方案 備注
header滾動(dòng)漸變 無(wú)
商品輪播圖 flutter_swiper 無(wú)
地址選擇 city_pickers 無(wú)
規(guī)格選擇 showCupertinoModalPopup 無(wú)
商品詳情圖 webview_flutter TODO Android 超過(guò)5500高度會(huì)黑屏崩潰 需要等待網(wǎng)頁(yè)加載結(jié)束獲取網(wǎng)頁(yè)高度后重新設(shè)置webview高度否則會(huì)內(nèi)存溢出

設(shè)置

image.png

注冊(cè)登錄

image.png
功能 方案 備注
登錄注冊(cè) leancloud 注冊(cè)登錄圖省事,整了一個(gè)頁(yè)面(點(diǎn)注冊(cè)按鈕即使用當(dāng)前輸入的用戶名密碼注冊(cè))
賬密 賬號(hào) admin 密碼 admin 無(wú)

GIT倉(cāng)庫(kù)地址

APP端:

https://github.com/DiscoverForever/learn_flutter

Server端:

https://github.com/DiscoverForever/flutter_mock_server

??歡迎PR 覺(jué)得不錯(cuò)的可以給個(gè)star?

?????? 警告:真機(jī)運(yùn)行 lib/api/api.dart中的baseUrl需要修改為你的本機(jī)IP ??????

項(xiàng)目目錄結(jié)構(gòu)

image.png

項(xiàng)目使用第三方庫(kù)一覽

name: learn_flutter
description: A new Flutter project.
version: 1.0.0+1

environment:
  sdk: ">=2.2.2 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^0.1.2
  # 輪播插件
  flutter_swiper: ^1.1.6
  # toast
  fluttertoast: ^4.0.1
  # 網(wǎng)絡(luò)請(qǐng)求
  dio: ^3.0.8
  # webview
  # flutter_webview_plugin: ^0.3.5
  # webview
  webview_flutter: ^0.3.19
  json_annotation: ^3.0.0
  # 城市選擇器
  city_pickers: ^0.1.30
  # 掃描插件
  barcode_scan: ^2.0.1
  # Leancloud
  leancloud_storage: ^0.2.3
  # 官方緩存插件
  shared_preferences: ^0.5.6
  # provide
  provide: ^1.0.2
dev_dependencies:
  flutter_test:
    sdk: flutter
  # json generator
  build_runner: ^1.0.0
  json_serializable: ^3.3.0

  uses-material-design: true


  assets:
    - lib/assets/json/movie.json
 
  fonts:
  - family: FlamanteRoma
    fonts:
    - asset: lib/assets/fonts/Flamante-Roma-Medium.ttf
    - asset: lib/assets/fonts/Flamante-Roma-MediumItalic.ttf

  - family: LatoBold
    fonts:
    - asset: lib/assets/fonts/Lato-Bold.ttf

  - family: PingFang
    fonts:
    - asset: lib/assets/fonts/PingFang.ttf

免責(zé)聲明

??本APP僅限于學(xué)習(xí)交流使用,項(xiàng)目中使用的圖片及字體等資源如有侵權(quán)請(qǐng)聯(lián)系作者刪除
??本APP接口數(shù)據(jù)均為mock,請(qǐng)勿用于其它商業(yè)目的
??如使用本項(xiàng)目代碼造成侵權(quán)與作者無(wú)關(guān)
我這求生欲??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容