Full Stack Developer

flutter ListView

2019-02-06  本文已影响94人  samtake
ListView class, flutter里面的滚动列表,用它可以代替我们常用的scrollView,实现tableView效果也是首选。后续文章会结合GridView class来实现一个首页顶部的广告栏横向轮播,以及商品瀑布流的展示。
文档中,给出了下面三种调用方式
import 'package:flutter/material.dart';

class Home extends StatelessWidget {
  @override

  Widget build(BuildContext context) {
    // TODO: implement build
    return new Scaffold(
      backgroundColor: Colors.white,
      body: Center(
        child:Container(
          height: 200.0,
          child: TopAd(
              items:new List<String>.generate(10, (i)=>"Item $i")
          ),
        ),

      )
    );
  }
}


class TopAd  extends StatelessWidget{
  @override
  final List<String> items;
  TopAd({key,@required this.items}):super(key:key); //重写构造方法

  Widget build(BuildContext context) {
    // TODO: implement build
    return ListView.builder(
         padding: EdgeInsets.all(8.0),
        itemBuilder: (context,index){
          return new ListTile(
            title:  new Text('${items[index]}'),
          );
        },
      itemCount: items.length,
    );
  }
}
ListView(
  shrinkWrap: true,
  padding: const EdgeInsets.all(20.0),
  children: <Widget>[
    const Text('I\'m dedicating every day to you'),
    const Text('Domestic life was never quite my style'),
    const Text('When you smile, you knock me out, I fall apart'),
    const Text('And I thought I was so smart'),
  ],
)

CustomScrollView(
  shrinkWrap: true,
  slivers: <Widget>[
    SliverPadding(
      padding: const EdgeInsets.all(20.0),
      sliver: SliverList(
        delegate: SliverChildListDelegate(
          <Widget>[
            const Text('I\'m dedicating every day to you'),
            const Text('Domestic life was never quite my style'),
            const Text('When you smile, you knock me out, I fall apart'),
            const Text('And I thought I was so smart'),
          ],
        ),
      ),
    ),
  ],
)
我们可以发觉ListView是默认纵向滑动的,那我们如何设置它为横向滑动呢?设置scrollDirection !
import 'package:flutter/material.dart';
import 'dart:ui';
import 'dart:math';

class Home extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return new Scaffold(
      backgroundColor: Colors.white,
      body:
      Center(
        child:Container(
          height: 200.0,
          child: TopAd(),
        ),

      )
    );
  }
}


class TopAd  extends StatelessWidget{
  @override

  var random = Random();
  Widget build(BuildContext context) {
    // TODO: implement build
    return ListView(
      scrollDirection: Axis.horizontal,
      children: <Widget>[
        Container(
          width: window.physicalSize.width,
          color: Color.fromARGB(random.nextInt(256), random.nextInt(256), random.nextInt(256), 1),
        ),
        Container(
          width: 150.0,
          color: Color.fromARGB(random.nextInt(256), random.nextInt(256), random.nextInt(256), 1),
        ),
      ],
    );
  }
}
上一篇 下一篇

猜你喜欢

热点阅读