日更(三十二)-Flutter-列表.ListView

2019-02-01  本文已影响0人  Jlanglang

瞎扯

一个APP最常用的大控件是什么?
当然是列表控件了.
app正常来说50%以上的页面是列表

列表的写的越快越利索,app开发越简单.

ListView

  Key key, 
    Axis scrollDirection = Axis.vertical, //滑动方向
    bool reverse = false, //是否倒序显示 正序 false  倒序true
    ScrollController controller, //滑动控制器,比如用这个定位到某一个位置
    bool primary, //如果内容不足,则用户无法滚动 而如果为true,它们总是可以尝试滚动。
    ScrollPhysics physics,// 滑动属性
    bool shrinkWrap = false, //子条目内容自适配
    EdgeInsetsGeometry padding,// 内间距
    this.itemExtent,
    bool addAutomaticKeepAlives = true,
    bool addRepaintBoundaries = true,
    double cacheExtent, //设置预加载的区域 
    List<Widget> children = const <Widget>[], // 具体条目.

可以看到,这里是需要一个weight集合,而这明显不是我想要的。因为这意味着我需要先把所有的weight都创建出来,或者动态往里面添加删除的是weight。

按照android的思维,我应该是传入bean数组,通过bean来动态生成weight。

这明显不是我想要的


ListView.builder

  ListView.builder({
    Key key,
    Axis scrollDirection = Axis.vertical,
    bool reverse = false,
    ScrollController controller,
    bool primary,
    ScrollPhysics physics,
    bool shrinkWrap = false,
    EdgeInsetsGeometry padding,
    this.itemExtent,
    @required IndexedWidgetBuilder itemBuilder,
    int itemCount,
    bool addAutomaticKeepAlives = true,
    bool addRepaintBoundaries = true,
    double cacheExtent,
  }) : childrenDelegate = new SliverChildBuilderDelegate(

这个就比较像了.

其中的
@required IndexedWidgetBuilder itemBuilder,方法

例如:

 new ListView.builder(
        itemCount: 20,
        itemBuilder: (context, i) => this.getItem(i),
      ),
 Widget getItem(int i) {
    return new Card(
      margin: EdgeInsets.fromLTRB(10.0, 10.0, 10.0, 0.0),
      child: Padding(
          padding: EdgeInsets.all(10.0),
          child: Row(
            children: <Widget>[
              Column(
                children: <Widget>[Text("菜${i}")],
              ),
            ],
          )),
    );
  }

这样一个列表就出来了.


交流群:493180098,这是个很少吹水,交流学习的群.
APP开发维护咨询群 : 492685472 ,承接APP迭代.开发维护.咨询业务,付费快速解决问题.

上一篇 下一篇

猜你喜欢

热点阅读