Flutter學(xué)習(xí)筆記六——ListView Widget(二)橫向列表

ListView Widget橫向列表

在上一篇Flutter學(xué)習(xí)筆記五——ListView Widget中認(rèn)識(shí)了ListView Widget的基本使用,默認(rèn)情況下是豎向列表,這一篇來(lái)了解一下橫向列表的使用。
其實(shí)ListView實(shí)現(xiàn)橫向列表,只需要添加ScrollDirection屬性。

body: Center(
        child: Container(
          height: 200.0,
          child: ListView(
            scrollDirection: Axis.horizontal,
            children: <Widget>[
              Image.network("https://www.qq745.com/uploads/allimg/170416/17-1F4161H131Y9-lp.png"),
              Image.network("http://ww1.sinaimg.cn/thumb180/006am4TEgw1f3x8tq1gqrj31480qo7js.jpg"),
              Image.network("https://www.qq745.com/uploads/allimg/150907/2221003F2-0-lp.jpg"),
              Image.network("http://ww2.sinaimg.cn/thumb180/0066fqovgw1f75tu2nxhfj30ku0dvjtq.jpg"),
              Image.network("http://p5.sinaimg.cn/2782984404/180/14791407463112"),
            ],
          ),
        ),
      ),

效果如圖(GIF是用圖片生成的,不是很流暢,真機(jī)測(cè)試很流暢,無(wú)卡頓):


hori.gif

ScrollDirection屬性

ListView組件的scrollDirection屬性只有兩個(gè)值,一個(gè)是橫向滾動(dòng),一個(gè)是縱向滾動(dòng)。默認(rèn)的就是垂直滾動(dòng),所以如果是垂直滾動(dòng),我們一般都不進(jìn)行設(shè)置。

  • Axis.horizontal:橫向滾動(dòng)或者叫水平方向滾動(dòng)。
  • Axis.vertical:縱向滾動(dòng)或者叫垂直方向滾動(dòng)。

優(yōu)化代碼簡(jiǎn)介

上邊的代碼太多層嵌套,現(xiàn)在把ListView抽取出來(lái),定義一個(gè)類來(lái)實(shí)現(xiàn)。

class MyListView extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ListView(
      scrollDirection: Axis.horizontal,
      children: <Widget>[
        Image.network(
            "https://www.qq745.com/uploads/allimg/170416/17-1F4161H131Y9-lp.png"),
        Image.network(
            "http://ww1.sinaimg.cn/thumb180/006am4TEgw1f3x8tq1gqrj31480qo7js.jpg"),
        Image.network(
            "https://www.qq745.com/uploads/allimg/150907/2221003F2-0-lp.jpg"),
        Image.network(
            "http://ww2.sinaimg.cn/thumb180/0066fqovgw1f75tu2nxhfj30ku0dvjtq.jpg"),
        Image.network("http://p5.sinaimg.cn/2782984404/180/14791407463112"),
      ],
    );
  }
}

然后在在MyAPP類里直接調(diào)用MyListView,這樣減少了嵌套,增加了代碼的閱讀性,更加便于維護(hù)。

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: 'Hello Flutter',
        home: Scaffold(
          appBar: AppBar(
            title: Text("ListView Widget"),
            backgroundColor: Colors.indigoAccent,
            //標(biāo)題居中
            centerTitle: true,
          ),
          body: Center(
            child: Container(
              height: 200.0,
              child: MyListView()
            ),
          ),
        ));
  }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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