在 Flutter 中,你可以使用循环来生成一组相似的 Widget。这在需要动态生成列表、网格或其他重复元素时非常有用。以下是一些常见的场景和示例代码,展示如何在 Flutter 中使用循环生成 Widget。
ListView.builder
生成列表ListView.builder
是一个高效的方式来生成长列表,因为它只会在需要时构建可见的子项。
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('ListView.builder Example')),
body: MyListView(),
),
);
}
}
class MyListView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: 20, // Number of items
itemBuilder: (context, index) {
return ListTile(
title: Text('Item $index'),
);
},
);
}
}
GridView.builder
生成网格GridView.builder
类似于 ListView.builder
,但用于生成网格布局。
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('GridView.builder Example')),
body: MyGridView(),
),
);
}
}
class MyGridView extends StatelessWidget {
@override
Widget build(BuildContext context) {
return GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2, // Number of columns
),
itemCount: 20, // Number of items
itemBuilder: (context, index) {
return Card(
child: Center(
child: Text('Item $index'),
),
);
},
);
}
}
for
循环生成 Widget 列表你可以在 Dart 中使用 for
循环来生成 Widget 列表,然后将其传递给 Column
、Row
或其他容器 Widget。
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('For Loop Example')),
body: MyColumn(),
),
);
}
}
class MyColumn extends StatelessWidget {
@override
Widget build(BuildContext context) {
List<Widget> items = [];
for (int i = 0; i < 10; i++) {
items.add(
ListTile(
title: Text('Item $i'),
),
);
}
return SingleChildScrollView(
child: Column(
children: items,
),
);
}
}
map
方法生成 Widget 列表如果你有一个数据列表,可以使用 map
方法将其转换为 Widget 列表。
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Map Method Example')),
body: MyColumn(),
),
);
}
}
class MyColumn extends StatelessWidget {
@override
Widget build(BuildContext context) {
List<String> data = ['Item 1', 'Item 2', 'Item 3', 'Item 4'];
return SingleChildScrollView(
child: Column(
children: data.map((item) {
return ListTile(
title: Text(item),
);
}).toList(),
),
);
}
}
领取专属 10元无门槛券
手把手带您无忧上云