最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

android使用flutter的ListView實現(xiàn)滾動列表的示例代碼

 更新時間:2018年12月29日 09:14:23   作者:流汗去  
現(xiàn)如今打開一個 App,比如頭條、微博,都會有長列表,那么android使用flutter的ListView滾動列表如何實現(xiàn),本文就來詳細的介紹一下,感興趣的同學(xué)可以來了解一下

現(xiàn)如今打開一個 App,比如頭條、微博,都會有長列表,隨著我們不斷地滑動,視窗內(nèi)的內(nèi)容也會不斷地更新。今天就用 Flutter 實現(xiàn)一下這種效果。

這里的表現(xiàn)其實就相當于有一個固定長度的容器,然后超出的內(nèi)容是不可見的,只有當你向上或向下滑動屏幕時,視窗外看不見的內(nèi)容才會出現(xiàn)在視窗中。如果在 web 開發(fā)時,是需要容器加上樣式

overflow: auto;

要想用 Flutter 實現(xiàn),其實也是很簡單的,因為 Flutter 為我們提供了 ListView 組件。

ListView 主要有以下幾種使用方式

  • ListView
  • ListView.builder
  • ListView.separated
  • ListView.custom

ListView

ListView 是最簡單直接的方式,簡單,那么適用的場景也是簡單的。僅適用于內(nèi)容較少的情形,因為它是一次性渲染所有的 items ,當 items 的數(shù)目較多時,很容易出現(xiàn)卡頓現(xiàn)象的,導(dǎo)致滑動不流暢。 你可以試試加大下面 items 的大小,然后對比一下體驗效果。

class ListViewDemo extends StatelessWidget {
 final _items = List<Widget>.generate(10,
   (i) => Container(padding: EdgeInsets.all(16.0), child: Text("Item $i")));

 @override
 Widget build(BuildContext context) {
  return ListView(
   children: _items,
  );
 }
}

ListView.builder()

構(gòu)造函數(shù) builder 要求傳入兩個參數(shù), itemCountitemBuilder 。前者規(guī)定列表數(shù)目的多少,后者決定了每個列表如何渲染。跟 ListView 不同的點在于,這是懶加載的,假如有 1000 個列表,初始渲染時并不會所有都渲染,而只會特定數(shù)量的 item ,這對于性能和用戶體驗來說,是很好的提升。 你可以對比用 ListView 和用 ListView.builder 渲染 1000 個列表時,體驗是否有差別。

class ListViewDemo extends StatelessWidget {
 final _items = List<String>.generate(1000, (i) => "Item $i");

 @override
 Widget build(BuildContext context) {
  return ListView.builder(
   itemCount: 1000,
   itemBuilder: (context, idx) {
    return Container(
     padding: EdgeInsets.all(16.0),
     child: Text(_items[idx]),
    );
   },
  );
 }
}

ListView.separated()

separated 相比較于 builder,又多了一個參數(shù) separatorBuilder ,用于控制列表各個元素的間隔如何渲染。比如,我們需要列表的每個 item 之間有一個分割線,就可以跟下面那樣,加一個 Divider 組件。

class ListViewDemo extends StatelessWidget {
 final _items = List<String>.generate(1000, (i) => "Item $i");

 @override
 Widget build(BuildContext context) {
  return ListView.separated(
   itemCount: 1000,
   itemBuilder: (context, idx) {
    return Container(
     padding: EdgeInsets.all(16.0),
     child: Text(_items[idx]),
    );
   },
   separatorBuilder: (context, idx) {
    return Divider();
   },
  );
 }
}

ListView.custom()

custom,就跟名字一樣,讓我們自定義。必須的參數(shù)就是 childrenDelegate , 然后傳入一個 實現(xiàn)了 SliverChildDelegate 的組件,如 SliverChildListDelegateSliverChildBuilderDelegate 。

SliverChildListDelegate 接收跟 ListView 一樣的 children ,而 SliverChildBuilderDelegate 接收跟 ListView.builder 的 itemBuilder 一樣類型的函數(shù)。

正常來說,前面三個已經(jīng)可以滿足我們的日常使用需求了,無需自定義。

總結(jié),上面主要討論了 ListView 的幾個構(gòu)造函數(shù)及用法,討論如何實現(xiàn)常見的滾動列表。

完成的代碼,可見list_view.dart 。

最后

筆者最近在學(xué)習(xí)flutter,會持續(xù)地記錄自己的學(xué)習(xí)過程,并放在 github 上。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android Studio4.0導(dǎo)入OpenCv4.3.0的方法步驟

    Android Studio4.0導(dǎo)入OpenCv4.3.0的方法步驟

    這篇文章主要介紹了Android Studio4.0導(dǎo)入OpenCv4.3.0的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Android  檢查更新、下載、安裝功能的實現(xiàn)

    Android 檢查更新、下載、安裝功能的實現(xiàn)

    這篇文章主要介紹了Android 檢查更新、下載、安裝功能的實現(xiàn)的相關(guān)資料,這里附有實例代碼,具有一定的參考價值,需要的朋友可以參考下
    2017-01-01
  • RecyclerView實現(xiàn)仿支付寶應(yīng)用管理

    RecyclerView實現(xiàn)仿支付寶應(yīng)用管理

    這篇文章主要為大家詳細介紹了RecyclerView實現(xiàn)仿支付寶應(yīng)用管理的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Android Menu詳解及示例代碼

    Android Menu詳解及示例代碼

    本文主要介紹Android Menu,這里對Android菜單(menu)進行了詳細的介紹,并給出示例代碼和實現(xiàn)效果圖,有需要的小伙伴可以參考下
    2016-08-08
  • Android開發(fā)使用Handler實現(xiàn)圖片輪播功能示例

    Android開發(fā)使用Handler實現(xiàn)圖片輪播功能示例

    這篇文章主要介紹了Android開發(fā)使用Handler實現(xiàn)圖片輪播功能,涉及Android基于Handler操作圖片的相關(guān)實現(xiàn)技巧與操作注意事項,需要的朋友可以參考下
    2017-09-09
  • Android開發(fā)中聽筒無法播放音樂的解決方法

    Android開發(fā)中聽筒無法播放音樂的解決方法

    這篇文章主要介紹了Android開發(fā)中聽筒無法播放音樂的解決方法,涉及Android權(quán)限控制中的相關(guān)屬性設(shè)置技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-10-10
  • Android實現(xiàn)簡單QQ登錄頁面

    Android實現(xiàn)簡單QQ登錄頁面

    這篇文章主要為大家詳細介紹了Android實現(xiàn)簡單QQ登錄頁面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Android實現(xiàn)IP地址輸入框的方法示例代碼

    Android實現(xiàn)IP地址輸入框的方法示例代碼

    輸入框是我們?nèi)粘i_發(fā)中經(jīng)常遇到的一個控件,如果更好的控制輸入框是對用戶體驗很重要的一步,所以下面這篇文章主要給大家介紹了關(guān)于Android如何實現(xiàn)IP輸入框的相關(guān)資料,需要的朋友可以參考下。
    2017-10-10
  • 深入解析Android App開發(fā)中Context的用法

    深入解析Android App開發(fā)中Context的用法

    這篇文章主要介紹了深入解析Android App開發(fā)中Context的用法,包括Context的創(chuàng)建場景和Context對資源的訪問等內(nèi)容,需要的朋友可以參考下
    2016-02-02
  • Android實現(xiàn)圖片一邊的三角形邊框效果

    Android實現(xiàn)圖片一邊的三角形邊框效果

    這篇文章主要介紹了Android實現(xiàn)圖片一邊的三角形邊框效果,本文圖文并茂通過實例代碼講解的非常詳細,需要的朋友可以參考下
    2019-12-12

最新評論

东海县| 石泉县| 香格里拉县| 陈巴尔虎旗| 临沧市| 安阳市| 漯河市| 河源市| 城固县| 竹北市| 环江| 延长县| 虎林市| 浙江省| 宜都市| 临海市| 张家口市| 游戏| 永济市| 大新县| 道真| 清丰县| 镇宁| 冷水江市| 石楼县| 重庆市| 成武县| 东乌| 江安县| 新民市| 万宁市| 阿拉善左旗| 青海省| 沂水县| 剑河县| 曲水县| 北辰区| 长子县| 全南县| 德钦县| 尚义县|