博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flutter的教程:ListView
阅读量:7012 次
发布时间:2019-06-28

本文共 4264 字,大约阅读时间需要 14 分钟。

本文学习一下列表widget,是最常见的需求 

在Flutter中,用ListView来显示列表项,支持垂直和水平方向展示,通过一个属性我们就可以控制其方向 
1.水平的列表 
2.垂直的列表 
3.数据量非常大的列表 
4.内置的ListTile(挺好用的)

4.内置的ListTile(挺好用的),先看下这个widget,在下面的listView中将直接使用

/** * ListTile */import 'package:flutter/material.dart'; void main() {  runApp(new MyApp());} class MyApp extends StatelessWidget {  @override  Widget build(BuildContext context) {    return new MaterialApp(      title: "ListTile",      home: new Scaffold(        appBar: new AppBar(          title: new Text("ListTile"),        ),        body: new MyCard(),      ),    );  }} class MyCard extends StatefulWidget {  @override  State
createState() { return new MyCardState(); }} class MyCardState extends State
{ var _throwShotAway = false; @override Widget build(BuildContext context) { return new Card( child: new ListTile( title: new Text("duo_shine"), subtitle: new Text("duo_shine@163.com"), //之前显示icon leading: new Icon(Icons.email, color: Colors.blueAccent), //之后显示checkBox trailing: new Checkbox( value: _throwShotAway, onChanged: (bool newValue) { setState(() { _throwShotAway = newValue; }); })), ); }}

我们只关注ListTile即可,虽然组合了Card(Android的cardView)还有checkBox等widget,包括列表的点击事件等(ps:ListTile中有点击的监听onTap),这些后续我们将单独学习,当前我们在学习列表项展示 

运行: 
这里写图片描述

 2.垂直的列表

import 'package:flutter/material.dart';import 'package:meta/meta.dart'; void main() {  runApp(new MyApp());} /** * 垂直listView */class MyApp extends StatelessWidget {  @override  Widget build(BuildContext context) {    final title = 'list';    return new MaterialApp(      title: title,      home: new Scaffold(        appBar: new AppBar(          title: new Text(title),        ),        body: new Center(          child: new ListView(            //控制方向 默认是垂直的//           scrollDirection: Axis.horizontal,            children: 
[ _getContainer('Maps', Icons.map), _getContainer('phone', Icons.phone), _getContainer('Maps', Icons.map), ], ), ), ), ); } /** * 抽取item项 */ Widget _getContainer(String test, IconData icon) { return new Container( width: 160.0,// ListTile child: new ListTile(// 显示在title之前 leading: new Icon(icon),// 显示在title之后 trailing: new Icon(icon), title: new Text(test), subtitle:new Text("我是subtitle") , ), ); }}

运行: 

这里写图片描述

1.水平的列表

void main() {  runApp(new MyApp());} /** * 垂直listView */class MyApp extends StatelessWidget {  @override  Widget build(BuildContext context) {    final title = 'list';    return new MaterialApp(      title: title,      home: new Scaffold(        appBar: new AppBar(          title: new Text(title),        ),        body: new Center(          child: new ListView(            //控制方向 默认是垂直的           scrollDirection: Axis.horizontal,            children: 
[ _getContainer('Maps', Icons.map), _getContainer('phone', Icons.phone), _getContainer('Maps', Icons.map), ], ), ), ), ); } /** * 抽取item项 */ Widget _getContainer(String test, IconData icon) { return new Container( width: 160.0,// ListTile child: new ListTile(// 显示在title之前 leading: new Icon(icon), title: new Text(test), ), ); }}

运行: 

这里写图片描述

3.数据量非常大的列表

import 'package:flutter/material.dart';import 'package:meta/meta.dart'; void main() {  runApp(new MyApp( items: new List
.generate(10000, (i) => "Item $i"),));} /** *大量的item 比如上万个 */class MyApp extends StatelessWidget { final List
items; MyApp({Key key, @required this.items}) : super(key: key); @override Widget build(BuildContext context) { final title = 'Long List'; return new MaterialApp( title: title, home: new Scaffold( appBar: new AppBar( title: new Text(title), ), body: new ListView.builder( itemCount: items.length, itemBuilder: (context, index) { return new ListTile( title: new Text('${items[index]}'), ); }, ), ), ); }}

 

你可能感兴趣的文章
设置grid行填充颜色为红色
查看>>
url参数中有+、空格、=、%、&、#等特殊符号的问题解决
查看>>
servlet方式通过Cookie记住登录时的用户名和密码
查看>>
Cisco无线AP上联口为trunk时无法注册故障处理
查看>>
c语言学习之基础知识点介绍(十八):几个修饰关键字和内存分区
查看>>
【Unity3D实战】摇摆直升机开发实战(二)
查看>>
DataContract
查看>>
53、 什么是反射?以及应用场景?
查看>>
iPhone更新失败后如何恢复数据
查看>>
rpm命令如何打印调试信息?
查看>>
数据访问查询实例 租房子
查看>>
解决bootstrapvalidator配合select2插件不能正常校验的问题
查看>>
【网新1】
查看>>
以前的随笔已移至日记
查看>>
android 使用style修饰内容
查看>>
面向对象程序设计第五次作业
查看>>
Mac入门教程之: Command键5个隐藏功能
查看>>
cp命令
查看>>
[C#]XML操作类
查看>>
计算机网络基础
查看>>