iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0
自我挑戰組

Kotlin & Flutter App 開發比較思考日誌系列 第 9

[鐵人賽 Day 9] Kotlin & Flutter 元件比較(二) - ListView 元件用法概要

  • 分享至 

  • xImage
  •  

討論範圍

Kotlin & Flutter ListView 元件使用方式

目的

比較 Kotlin & Flutter ListView 元件使用方式差異

Kotlin

ListView 元件簡要建立步驟:

  1. 建立 xml 檔案:
    • 建立頁面 layout 放入 ListView 元件
    • 建立 ListView 每個 item 的 layout
  2. 建立 Adapter 檔案:控制傳給 ListView 的 item 資料和 layout ,以及監聽點擊事件。
  3. Activity / Fragment:設定 AdapterListView,就完成了。

如果 ListView 的 item layout 要更多變化(EX: 加圖片或按鈕之類的就要用 RecyclerView)


Flutter

Flutter 的 ListView 元件主要只會分需要顯示的資料數量來選擇使用的方法,ListView 元件的 item 的 layout 都可以加圖片或按鈕。

依需要顯示的資料數量與顯示畫面要求,有以下四種 ListView 建立方法:

 建立方法  適用時機
ListView 較少資料
ListView.builder 多到爆炸的資料
ListView.separated 固定長度的資料且要用分隔線分隔
ListView.custom 自己調整頁面看不到的資料要怎麼處理

ListView 元件簡要建立步驟:

  • StatefulWidget 元件中,依需求使用其中一種 ListView 建立方法,傳入 ListView item 相關必要相關參數,這樣就完成了。

補充:

  • ListView(children:List<Widget>[]) 較少資料適用(如頁面不滑動即可顯示所有資料的時候)原因:
    因為無論是不是這一頁看得到的資料,會把所有資料都套用到元件 item,所以建立元件時會比較花時間,推薦使用在少少資料的時候。

  • ListView.builder 多到爆炸的資料適用原因:
    因為只把這一頁看得到的資料套用到元件item,會比較省時間。

ListView child 元件(每個 item) lifecycle :

  • 滑到看不到就被 destroyed,滑回來又被 create。

  • 如果要保存頁面尚不會顯示的元件 item 資料,可由以下方法儲存資料:

    • 存資料到其他暫存位置
    • 設定 KeepAlive 保存 child 元件 狀態
    • child 元件 使用 AutomaticKeepAlive 元件 會自動保存 child 元件 狀態

統整 Kotlin & Flutter ListView 元件用法差異

比較項目 Kotlin Flutter
元件名稱 ListView ListView
元件建立方法 透過 xml layout 設定畫面排版 & 建立 Adapter 監控 ListView item 資料與觸發事件 依需要顯示的資料數量與顯示畫面要求,由四個元件建立方法選一個,選完傳入建立方法所需參數
是否有 layout 限制 有,要多變化的 layout 要改用 RecyclerView 元件

上一篇
[鐵人賽 Day 8] 統整 Kotlin & Flutter 基礎元件比較表格
下一篇
[鐵人賽 Day 10] Kotlin & Flutter 元件比較(二) - Kotlin ListView 實例
系列文
Kotlin & Flutter App 開發比較思考日誌30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言