有时候,你可能希望用网格来展示内容,而不是一条接着一条的普通列表来展示。在本文当中,我们将采用 GridView Widget。

用网格展示数据最简单的方式,就是通过使用 GridView.count 构造方法,因为它允许我们指定有多少行多少列。

在这个例子中,我们将创建一个包含有 100 个 Widget 的 List,每个 Widget 将展示它在 List 中的索引。这将帮助我们想象 GridView 是如何工作的。

  1. GridView.count(
  2. // 创建一个两列的网格。如果你把 scrollDirection 改成了 horizontal,(Create a grid with 2 columns. If you change the scrollDirection to)
  3. // 则展示成两行。(horizontal, this would produce 2 rows.)
  4. crossAxisCount: 2,
  5. // 创建 100 个展示了索引的 Widget(Generate 100 Widgets that display their index in the List)
  6. children: List.generate(100, (index) {
  7. return Center(
  8. child: Text(
  9. 'Item $index',
  10. style: Theme.of(context).textTheme.headline,
  11. ),
  12. );
  13. }),
  14. );

完整示例

  1. import 'package:flutter/material.dart';
  2. void main() {
  3. runApp(MyApp());
  4. }
  5. class MyApp extends StatelessWidget {
  6. @override
  7. Widget build(BuildContext context) {
  8. final title = 'Grid List';
  9. return MaterialApp(
  10. title: title,
  11. home: Scaffold(
  12. appBar: AppBar(
  13. title: Text(title),
  14. ),
  15. body: GridView.count(
  16. // 创建一个两列的网格。如果你把 scrollDirection 改成了 horizontal,(Create a grid with 2 columns. If you change the scrollDirection to)
  17. // 则展示成两行。(horizontal, this would produce 2 rows.)
  18. crossAxisCount: 2,
  19. // 创建 100 个展示了索引的 Widget(Generate 100 Widgets that display their index in the List)
  20. children: List.generate(100, (index) {
  21. return Center(
  22. child: Text(
  23. 'Item $index',
  24. style: Theme.of(context).textTheme.headline,
  25. ),
  26. );
  27. }),
  28. ),
  29. ),
  30. );
  31. }
  32. }