10、listview組件

ListView組件用于顯示一個列表,在基于Flutter的開源中國客戶端App中,新聞列表、動彈列表等都需要用到ListView,一個最簡單的ListView可以用如下代碼實現(xiàn):

import 'package:flutter/material.dart';

void main() {
  List<Widget> items = new List();
  for (var i = 0; i < 20; i++) {
    items.add(new Text("List Item $i"));
  }
  runApp(new MaterialApp(
    title: "Text Demo",
    home: new Scaffold(
      appBar: new AppBar(
        title: new Text("Text Demo"),
      ),
      body: new Center(
          child: new ListView(children: items)
      ),
    ),
  ));
}

運(yùn)行上面的代碼,結(jié)果如下圖所示:


image.png

這樣的ListView顯示不是我們需要的,太難看,每個item沒有邊距而且沒有分割線,所以我們用下面的代碼改造一下:

import 'package:flutter/material.dart';

void main() {
  // 裝有ListView中所有item的集合
  List<Widget> items = new List();
  for (var i = 0; i < 20; i++) {
    var text = new Text("List Item $i");
    // Padding也是一個Widget,是一個有內(nèi)邊距的容器,可以裝其他Widget
    items.add(new Padding(
      // 內(nèi)邊距設(shè)置為15.0,上下左右四邊都是15.0
      padding: const EdgeInsets.all(15.0),
      // Padding容器中裝的是Text組件
      child: text
    ));
  }
  runApp(new MaterialApp(
    title: "Text Demo",
    home: new Scaffold(
      appBar: new AppBar(
        title: new Text("Text Demo"),
      ),
      body: new Center(
        // build是ListView提供的靜態(tài)方法,用于創(chuàng)建ListView
        child: new ListView.builder(
          // itemCount是ListView的item個數(shù),這里之所以是items.length * 2是因為將分割線也算進(jìn)去了
          itemCount: items.length * 2,
          itemBuilder: (context, index) {
            // 如果index為奇數(shù),則返回分割線
            if (index.isOdd) {
              return new Divider(height: 1.0);
            }
            // 這里index為偶數(shù),為了根據(jù)下標(biāo)取items中的元素,需要對index做取整
            index = index ~/ 2;
            return items[index];
          },
        )
      )
    ),
  ));
}

此時再次運(yùn)行上面的代碼,UI就好看多了:


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

相關(guān)閱讀更多精彩內(nèi)容

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