当前位置: 首页 > article >正文

Flutte ListView 列表组件

目录

1、垂直列表

         1.1 实现用户中心的垂直列表

2、垂直图文列表

        2.1 动态配置列表

        2.2 for循环生成一个动态列表

        2.3 ListView.builder配置列表


列表布局是我们项目开发中最常用的一种布局方式。Flutter中我们可以通过ListView来定义列表项,支持垂直和水平方向展示。通过一个属性就可以控制列表的显示方向。列表有以下分类:

1、垂直列表
2、垂直图文列表
3、水平列表
4、动态列表

1、垂直列表

import 'package:flutter/material.dart';
import 'package:wyze_app_live/test1/test11.dart';
import 'package:wyze_app_live/test2/main.dart';void main() {runApp(MyTestApp());
}class MyTestApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(theme: ThemeData(primarySwatch: Colors.yellow),home: Scaffold(appBar: AppBar(title: Text("App")),body: MyTestHomePage(),),);}
}//Material Design官方Icons图标
class MyTestHomePage extends StatelessWidget {@overrideWidget build(BuildContext context) {return ListView(children: <Widget>[ListTile(title: Text("我是一个列表")),Divider(),ListTile(title: Text("我是一个列表")),Divider(),ListTile(title: Text("我是一个列表")),Divider(),ListTile(title: Text("我是一个列表")),Divider(),ListTile(title: Text("我是一个列表")),Divider(),ListTile(title: Text("我是一个列表")),],);}
}

         1.1 实现用户中心的垂直列表

import 'package:flutter/material.dart';
import 'package:wyze_app_live/test1/test11.dart';
import 'package:wyze_app_live/test2/main.dart';void main() {runApp(MyTestApp());
}class MyTestApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(theme: ThemeData(primarySwatch: Colors.yellow),home: Scaffold(appBar: AppBar(title: Text("App")),body: MyTestHomePage(),),);}
}//Material Design官方Icons图标
class MyTestHomePage extends StatelessWidget {@overrideWidget build(BuildContext context) {return ListView(children: <Widget>[ListTile(leading: Icon(Icons.home, color: Colors.red),title: Text("首页"),),Divider(),ListTile(leading: Icon(Icons.dangerous, color: Colors.yellow),title: Text("全部订单"),),Divider(),ListTile(leading: Icon(Icons.h_mobiledata),title: Text("我的收藏"),trailing: Icon(Icons.chevron_right),),Divider(),ListTile(leading: Icon(Icons.wallet),title: Text("在线客服"),trailing: Icon(Icons.chevron_right),),],);}
}

2、垂直图文列表

import 'package:flutter/material.dart';
import 'package:wyze_app_live/test1/test11.dart';
import 'package:wyze_app_live/test2/main.dart';void main() {runApp(MyTestApp());
}class MyTestApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(theme: ThemeData(primarySwatch: Colors.yellow),home: Scaffold(appBar: AppBar(title: Text("App")),body: MyTestHomePage(),),);}
}//Material Design官方Icons图标
class MyTestHomePage extends StatelessWidget {@overrideWidget build(BuildContext context) {return ListView(// padding: EdgeInsets.all(10),padding: EdgeInsets.fromLTRB(0,40,0,0),children: <Widget>[ListTile(leading: Image.network("https://p4.img.cctvpic.com/photoAlbum/photo/2025/05/26/PHOT5Lpc218n1dZ8adgabOGU250526_1000x2000.jpg"),title: Text("初夏乡村田园色块分明"),subtitle: Text("甘肃省酒泉市肃州区银达镇,多彩的田园、农房、道路和水库相映成景"),),Divider(),ListTile(leading: Image.network("https://p4.img.cctvpic.com/photoAlbum/photo/2025/05/27/PHOT1cFfxozsH6VncGwLpViz250527_1000x2000.jpg"),title: Text("初夏乡村田园色块分明"),subtitle: Text("甘肃省酒泉市肃州区银达镇,多彩的田园、农房、道路和水库相映成景"),),Divider(),ListTile(leading: Image.network("https://p4.img.cctvpic.com/photoAlbum/photo/2025/05/26/PHOT5Lpc218n1dZ8adgabOGU250526_1000x2000.jpg"),title: Text("初夏乡村田园色块分明"),subtitle: Text("甘肃省酒泉市肃州区银达镇,多彩的田园、农房、道路和水库相映成景"),trailing: Image.network("https://p4.img.cctvpic.com/photoAlbum/photo/2025/05/27/PHOT1cFfxozsH6VncGwLpViz250527_1000x2000.jpg"),),Divider(),ListTile(title: Text("初夏乡村田园色块分明"),subtitle: Text("甘肃省酒泉市肃州区银达镇,多彩的田园、农房、道路和水库相映成景"),trailing: Image.network("https://p4.img.cctvpic.com/photoAlbum/photo/2025/05/27/PHOT1cFfxozsH6VncGwLpViz250527_1000x2000.jpg"),),Divider(),],);}
}

        2.1 动态配置列表

import 'package:flutter/material.dart';
import 'package:wyze_app_live/test1/test11.dart';
import 'package:wyze_app_live/test2/main.dart';void main() {runApp(MyTestApp());
}class MyTestApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(theme: ThemeData(primarySwatch: Colors.yellow),home: Scaffold(appBar: AppBar(title: Text("App")),body: MyTestHomePage(),),);}
}//Material Design官方Icons图标
class MyTestHomePage extends StatelessWidget {//自定义方法List<Widget> initList() {List<Widget> list = [];for (var i = 0; i < 20; i++) {list.add(ListTile(leading: Image.network("https://p4.img.cctvpic.com/photoAlbum/photo/2025/05/27/PHOT1cFfxozsH6VncGwLpViz250527_1000x2000.jpg",),title: Text("初夏乡村田园色块分明"),subtitle: Text("甘肃省酒泉市肃州区银达镇,多彩的田园、农房、道路和水库相映成景"),),);}return list;}@overrideWidget build(BuildContext context) {return ListView(// padding: EdgeInsets.all(10),padding: EdgeInsets.fromLTRB(0, 40, 0, 0),children: initList());}
}

        2.2 for循环生成一个动态列表

import 'package:flutter/material.dart';void main() {runApp(MyTestApp());
}class MyTestApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(theme: ThemeData(primarySwatch: Colors.yellow), home: Scaffold(appBar: AppBar(title: Text("App")),body: MyTestHomePage(),),);}
}//Material Design官方Icons图标
class MyTestHomePage extends StatelessWidget {//自定义方法List<Widget> initList() {List<Widget> list = [];for (var i = 0; i < 20; i++) {list.add(ListTile(leading: Image.network("https://p4.img.cctvpic.com/photoAlbum/photo/2025/05/27/PHOT1cFfxozsH6VncGwLpViz250527_1000x2000.jpg",),title: Text("初夏乡村田园色块分明"),subtitle: Text("甘肃省酒泉市肃州区银达镇,多彩的田园、农房、道路和水库相映成景"),),);}return list;}List list = [{"title": "Candy Shop","imageUrl":"https://p4.img.cctvpic.com/photoAlbum/photo/2025/05/27/PHOT1cFfxozsH6VncGwLpViz250527_1000x2000.jpg","author": "Mohamed Chahin",},{"title": "Candy Shop","imageUrl":"https://p4.img.cctvpic.com/photoAlbum/photo/2025/05/27/PHOT1cFfxozsH6VncGwLpViz250527_1000x2000.jpg","author": "Mohamed Chahin",},];//自定义方法 map方式遍历List<Widget> initList1() {//map方式遍历var template = list.map((value) {return ListTile(leading: Image.network("${value["imageUrl"]}"),title: Text("${value["title"]}"),subtitle: Text("${value["author"]}"),);});return template.toList();}//自定义方法 for方式遍历List<Widget> initList2() {List<Widget> template = [];for (var i = 0; i < list.length; i++) {template.add(ListTile(leading: Image.network("${list[i]["imageUrl"]}"),title: Text("${list[i]["title"]}"),subtitle: Text("${list[i]["author"]}"),),);}return template;}@overrideWidget build(BuildContext context) {return ListView(// padding: EdgeInsets.all(10),padding: EdgeInsets.fromLTRB(0, 40, 0, 0),children: initList2(),);}
}

        2.3 ListView.builder配置列表

import 'package:flutter/material.dart';void main() {runApp(MyTestApp());
}class MyTestApp extends StatelessWidget {@overrideWidget build(BuildContext context) {return MaterialApp(theme: ThemeData(primarySwatch: Colors.yellow),home: Scaffold(appBar: AppBar(title: Text("App")),body: MyTestHomePage(),),);}
}//Material Design官方Icons图标
class MyTestHomePage extends StatelessWidget {List list = [{"title": "Candy Shop","imageUrl":"https://p4.img.cctvpic.com/photoAlbum/photo/2025/05/27/PHOT1cFfxozsH6VncGwLpViz250527_1000x2000.jpg","author": "Mohamed Chahin",},{"title": "Candy Shop1","imageUrl":"https://p4.img.cctvpic.com/photoAlbum/photo/2025/05/27/PHOT1cFfxozsH6VncGwLpViz250527_1000x2000.jpg","author": "Mohamed Chahin",},];@overrideWidget build(BuildContext context) {return ListView.builder(itemCount: list.length,//循环的次数itemBuilder: (context, index) { //itemBuilderreturn ListTile( //item Infoleading: Image.network(list[index]["imageUrl"]),title: Text(list[index]["title"]),subtitle: Text(list[index]["author"]),);},);}
}

http://www.lryc.cn/news/2392865.html

相关文章:

  • muduo库的初步认识和基本使用,创建一个简单查询单词服务系统
  • 电脑如何保养才能用得更久
  • Oracle的NVL函数
  • 【HTML/CSS面经】
  • git查看commit属于那个tag
  • 如何从ISO镜像直接制作Docker容器基础镜像
  • 网站缓存入门与实战:浏览器与Nginx/Apache服务器端缓存,让网站速度起飞!(2025)
  • mysql-mysql源码本地调试
  • PCIe— Legacy PCI
  • PostgreSQL数据库配置SSL操作说明书
  • MySQL 的 super_read_only 和 read_only 参数
  • 低碳理念在道路工程中的应用-预制路面
  • 12-后端Web实战(登录认证)
  • TIDB创建索引失败 mkdir /tmp/tidb/tmp_ddl-4000/1370: no such file or directory.
  • Redis 插入中文乱码键
  • Mac OS 使用说明
  • 4.2.2 Spark SQL 默认数据源
  • 234. Palindrome Linked List
  • 广州邮科高频开关电源:以创新科技赋能通信能源绿色未来
  • day41 python图像识别任务
  • 无人机报警器探测模块技术解析!
  • Docker 替换宿主与容器的映射端口和文件路径
  • 我的3种AI写作节奏搭配模型,适合不同类型写作者
  • Bonjour
  • 华为云Flexus+DeepSeek征文 | 基于Dify和DeepSeek-R1开发企业级AI Agent全流程指南
  • HarmonyOS-ArkUI固定样式弹窗(1)
  • 痉挛性斜颈相关内容说明
  • C语言| 函数参数传递指针
  • 【25-cv-05917】HSP律所代理Le Petit Prince 小王子商标维权案
  • MyBatis 动态 SQL 详解:灵活构建强大查询