📜  Flutter – 灵活的小部件(1)

📅  最后修改于: 2023-12-03 15:30:49.322000             🧑  作者: Mango

Flutter – 灵活的小部件

Flutter 是一个跨平台的移动应用程序开发框架,其最大的优势在于其自带的丰富的小部件库。通过使用这些小部件,我们可以轻松地构建应用程序 UI,而无需手动编写复杂的布局代码。本文将介绍 Flutter 中的一些灵活的小部件以及它们的用途。

Scaffold

Scaffold 是 Flutter 中最常用的小部件之一,它提供了一个基本的应用程序布局结构,包括一个 AppBar、一个 Drawer(可选)和一个可滚动的主体部分。它是一个非常灵活的小部件,可以通过配置属性进行自定义。以下是一个常见的 Scaffold 的示例代码:

Scaffold(
  appBar: AppBar(
    title: Text('Scaffold Example'),
  ),
  drawer: Drawer(
    child: ListView(
      children: [
        ListTile(
          title: Text('Menu Item 1'),
        ),
        ListTile(
          title: Text('Menu Item 2'),
        ),
      ],
    ),
  ),
  body: Center(
    child: Text('Hello World!'),
  ),
);

在上面的代码中,我们定义了一个包含 AppBar、Drawer 和主体文本的 Scaffold。我们可以通过更改属性值来修改这些小部件的行为和外观。

ListView

ListView 是一个可滚动的小部件,用于在屏幕上显示具有相同布局的多个项目。我们可以使用 ListView.builder 构造函数来动态生成列表项。以下是一个简单的 ListView 示例:

ListView.builder(
  itemBuilder: (context, index) {
    return ListTile(
      leading: Icon(Icons.person),
      title: Text('Person $index'),
    );
  },
  itemCount: 10,
);

在上面的代码中,我们定义了一个带有一个图标和一个标题的列表项,用于显示10个 "Person ",并使用 ListView.builder 将它们动态构建出来。

GridView

GridView 是一个可滚动的小部件,用于在屏幕上显示多个具有相同布局的项目。与 ListView 不同,GridView 可以按行或列进行排列。以下是一个简单的网格视图示例:

GridView.builder(
  gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
    crossAxisCount: 2,
    crossAxisSpacing: 10,
    mainAxisSpacing: 10,
  ),
  itemBuilder: (context, index) {
    return Container(
      color: Colors.blue,
      child: Center(
        child: Text('Item $index'),
      ),
    );
  },
  itemCount: 10,
);

在上面的代码中,我们定义了一个 2x5 的网格,其中每个项目都是一个包含文本的蓝色容器,用于显示10个项目。

TextField

TextField 是一个常见的用于获取用户文本输入的小部件,它允许用户通过键盘输入文本,并可以自动验证和格式化输入。以下是一个简单的 TextField 示例:

TextField(
  decoration: InputDecoration(
    labelText: 'Username',
    hintText: 'Enter your username',
    border: OutlineInputBorder(),
  ),
);

在上面的代码中,我们定义了一个带有标签、提示文本和边框的文本框,用于输入用户名。

Image

Image 是用于在屏幕上显示图像的小部件,它支持从本地文件系统或网络加载图像。以下是一个简单的 Image 示例:

Image.network('https://example.com/image.png');

在上面的代码中,我们从示例 URL 中加载图像,并使用 Image 将其显示在 UI 中。