ThinkPHP与Laravel双框架构建生鲜电商系统实战
2026/9/23 5:09:54
在上一篇中,我们彻底搞懂了:
从这一篇开始,我们进入Flutter 业务开发的核心场景:
列表页面
几乎所有 App,80% 的页面都是“列表”。
真实 App 中常见的页面:
📌 它们本质上都是:
一列可以滚动的 Widget
在 Flutter 中:
ListView 是一个可滚动的 Widget 列表
特点:
ListView(children:[Text('第一项'),Text('第二项'),Text('第三项'),],)效果:
ListTile是 Flutter 提供的标准列表项组件。
ListTile( title: Text('标题'), )ListTile( leading: Icon(Icons.person), title: Text('用户名'), subtitle: Text('这是副标题'), trailing: Icon(Icons.arrow_forward_ios), )这是非常标准、非常常见的列表样式。
ListView( children: [ ListTile(title: Text('设置')), ListTile(title: Text('账号')), ListTile(title: Text('关于')), ], )当数据很多时:
❌ children 一次性创建所有 Widget
✅ builder 按需创建(性能更好)
ListView.builder( itemCount: 20, itemBuilder: (context, index) { return ListTile( title: Text('第 $index 项'), ); }, )📌 记住一句话:
builder 是“用一个模板,生成很多项”
(BuildContext context, int index)final List<String> items = ['苹果', '香蕉', '橘子']; ListView.builder( itemCount: items.length, itemBuilder: (context, index) { return ListTile( title: Text(items[index]), ); }, )📌 这是数据驱动 UI 的第一步。
ListView.builder( itemCount: items.length, itemBuilder: (context, index) { return InkWell( onTap: () { print('点击了 ${items[index]}'); }, child: ListTile( title: Text(items[index]), ), ); }, )Divider()ListView.separated( itemCount: items.length, itemBuilder: (context, index) { return ListTile( title: Text(items[index]), ); }, separatorBuilder: (context, index) { return Divider(); }, )📌分割线逻辑更清晰
Column( children: [ ListView(...), ], )❗ 报错原因:
ListView 没有高度约束
Column( children: [ Expanded( child: ListView(...), ), ], )初学阶段建议:
一个页面只用一个 ListView
class ListDemoPage extends StatelessWidget { final List<String> items = [ '个人信息', '账号设置', '隐私', '关于我们', ]; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('设置')), body: ListView.separated( itemCount: items.length, itemBuilder: (context, index) { return ListTile( title: Text(items[index]), trailing: Icon(Icons.arrow_forward_ios, size: 16), onTap: () { print(items[index]); }, ); }, separatorBuilder: (_, __) => Divider(), ), ); } }❌ 不会用 builder
❌ children 写死大量数据
❌ ListView 嵌套 Column 不加 Expanded
❌ 列表项布局混乱
你已经掌握了:
你现在已经能写出:
真正的业务页面列表结构
本篇你学会了:
《Flutter 零基础入门(二十九):ListView 进阶 —— 自定义列表项与复杂布局》
下一篇我们将学习:
从下一篇开始:
你的 Flutter 页面将“无限接近真实商业 App” 🚀