/// Created with Android Studio. /// User: 一晟 /// Date: 2018/12/31 /// Time: 下午2:27 /// email: zhu.yan@alibaba-inc.com /// target: ListView 的示例 import 'package:flutter/material.dart'; /// ListView 默认ListView的实例 class ListViewFullDefault extends StatefulWidget { const ListViewFullDefault() : super(); @override State createState() => _ListViewFullDefault(); } /// ListView 默认的实例,有状态 class _ListViewFullDefault extends State { @override Widget build(BuildContext context) { return ListView(); } } /// ListView 默认的实例,无状态 class ListViewLessDefault extends StatelessWidget { final widget; final parent; final index; const ListViewLessDefault([ this.index, this.widget, this.parent, ]) : super(); @override Widget build(BuildContext context) { switch (index) { case 0: return ListView( shrinkWrap: true, padding: EdgeInsets.all(20.0), children: [ Text('I\'m dedicating every day to you'), ListTile( leading: Icon(Icons.map), title: Text('Maps'), ), Text('Domestic life was never quite my style'), ListTile( leading: Icon(Icons.photo_album), title: Text('Album'), ), Text('When you smile, you knock me out, I fall apart'), ListTile( leading: Icon(Icons.phone), title: Text('Phone'), ), Text('And I thought I was so smart'), ], ); break; case 1: return SizedBox( height: 300.0, child: ListView.builder( scrollDirection: Axis.vertical, itemCount: 10, // item 的个数 itemExtent: 50.0, // 如果为非null,则强制子项在滚动方向上具有给定范围 itemBuilder: (BuildContext context, int index) { return ListTile( title: Text("title $index"), // item 标题 leading: Icon(Icons.keyboard), // item 前置图标 subtitle: Text("subtitle $index"), // item 副标题 trailing: Icon(Icons.keyboard_arrow_right), // item 后置图标 isThreeLine: false, // item 是否三行显示 dense: true, // item 直观感受是整体大小 contentPadding: EdgeInsets.all(10.0), // item 内容内边距 enabled: true, onTap: () { print('点击:$index'); }, // item onTap 点击事件 onLongPress: () { print('长按:$index'); }, // item onLongPress 长按事件 selected: false, // item 是否选中状态 ); }, ), ); break; case 2: return SizedBox( height: 300.0, child: ListView.separated( scrollDirection: Axis.vertical, itemCount: 100, // item 的个数 separatorBuilder: (BuildContext context, int index) => Divider(height: 1.0, color: Colors.blue), // 添加分割线 itemBuilder: (BuildContext context, int index) { return ListTile( title: Text("title $index"), // item 标题 leading: Icon(Icons.keyboard), // item 前置图标 subtitle: Text("subtitle $index"), // item 副标题 trailing: Icon(Icons.keyboard_arrow_right), // item 后置图标 isThreeLine: false, // item 是否三行显示 dense: true, // item 直观感受是整体大小 contentPadding: EdgeInsets.all(10.0), // item 内容内边距 enabled: true, onTap: () { print('点击:$index'); }, // item onTap 点击事件 onLongPress: () { print('长按:$index'); }, // item onLongPress 长按事件 selected: false, // item 是否选中状态 ); }, ), ); break; case 3: return SizedBox( height: 300.0, child: ListView.custom( scrollDirection: Axis.vertical, childrenDelegate: SliverChildBuilderDelegate((BuildContext context, int index) { return Container( height: 50.0, alignment: Alignment.center, color: Colors.lightBlue[100 * (index % 9)], child: Text('list item $index'), ); }, childCount: 10), ), ); break; default: return null; break; } } }