成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

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

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

網站建設哪家好,找創(chuàng)新互聯(lián)!專注于網頁設計、網站建設、微信開發(fā)、微信小程序、集團企業(yè)網站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了正藍免費建站歡迎大家使用!

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

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

overflow: auto;

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

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

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

ListView

ListView 是最簡單直接的方式,簡單,那么適用的場景也是簡單的。僅適用于內容較少的情形,因為它是一次性渲染所有的 items ,當 items 的數(shù)目較多時,很容易出現(xiàn)卡頓現(xiàn)象的,導致滑動不流暢。 你可以試試加大下面 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()

構造函數(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ù)。

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

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

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

最后

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

分享題目:android使用flutter的ListView實現(xiàn)滾動列表的示例代碼
URL地址:http://jinyejixie.com/article26/ipejcg.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供移動網站建設、App設計服務器托管、動態(tài)網站網站維護、商城網站

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
柏乡县| 江门市| 奉节县| 察隅县| 大埔县| 庆云县| 乌恰县| 广南县| 东乡县| 高清| 德化县| 县级市| 辽宁省| 丽水市| 雷州市| 宜章县| 梅州市| 巩义市| 梅州市| 扬州市| 玉田县| 玉屏| 改则县| 会泽县| 东丰县| 买车| 南丹县| 土默特右旗| 海伦市| 无为县| 五莲县| 互助| 惠水县| 洪洞县| 绥宁县| 中卫市| 仪征市| 偃师市| 孟州市| 海丰县| 博罗县|