麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統 > Android > 正文

android使用flutter的ListView實現滾動列表的示例代碼

2019-10-21 21:31:31
字體:
來源:轉載
供稿:網友

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

 

 
android,flutter,ListView,滾動列表,代碼

 

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

overflow: auto;

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

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

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

ListView

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

構造函數 builder 要求傳入兩個參數, itemCount 和 itemBuilder 。前者規定列表數目的多少,后者決定了每個列表如何渲染。跟 ListView 不同的點在于,這是懶加載的,假如有 1000 個列表,初始渲染時并不會所有都渲染,而只會特定數量的 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,又多了一個參數 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,就跟名字一樣,讓我們自定義。必須的參數就是 childrenDelegate , 然后傳入一個 實現了 SliverChildDelegate 的組件,如 SliverChildListDelegate 和 SliverChildBuilderDelegate 。

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

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

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

完成的代碼,可見list_view.dart 

最后

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 午色影院 | 在线a视频 | 国产亚洲精品久久久久久久久 | 欧美xxxxx视频 | 久久精品视频首页 | 亚洲国产资源 | 欧美性色黄大片www 操碰网 | 国产黄色录像片 | 91精品国产综合久久婷婷香 | 欧美成人精品欧美一级 | 国产精品成人免费一区久久羞羞 | xnxx 美女19| 超碰在线97国产 | 亚洲国产美女视频 | 男人的天堂色偷偷 | 亚洲码无人客一区二区三区 | 4480午夜 | 8x成人在线电影 | 色淫影院 | 日本视频在线免费观看 | 高清中文字幕在线 | 中日韩乱码一二新区 | www.91sao | 成人永久免费视频 | 国产午夜免费不卡精品理论片 | 日韩视频中文 | 本站只有精品 | 久久久av影视 | 国产亚洲精品久久午夜玫瑰园 | 中日韩乱码一二新区 | 黄色免费小视频网站 | 国产一及毛片 | 精品国产乱码久久久久久丨区2区 | 久久久久久久久久久综合 | 免费毛片儿 | 欧美日韩在线免费观看 | 免费国产在线视频 | 99在线在线视频免费视频观看 | av电影网在线观看 | 中文字幕线观看 | 成人一区久久 |