Flutter 基础组件 Scaffold 详解

目录

[1. 引言](#1. 引言)

[2. Scaffold 主要属性](#2. Scaffold 主要属性)

[2.1 基本结构](#2.1 基本结构)

[2.2 主要属性解析](#2.2 主要属性解析)

[3. Scaffold 组件示例](#3. Scaffold 组件示例)

[3.1 appBar(应用顶栏)](#3.1 appBar(应用顶栏))

[3.2 body(主体内容)](#3.2 body(主体内容))

[3.3 floatingActionButton(悬浮按钮)](#3.3 floatingActionButton(悬浮按钮))

[3.4 drawer(左侧抽屉)](#3.4 drawer(左侧抽屉))

[3.5 bottomNavigationBar(底部导航栏)](#3.5 bottomNavigationBar(底部导航栏))

[4. 结论](#4. 结论)

相关推荐


1. 引言

Scaffold 主要在 MaterialApp 主题下使用,它是实现Material Design基本视觉布局结构的Widget,它为应用提供了一个可定制的结构,包括 AppBar(应用栏)Drawer(侧边栏)FloatingActionButton(浮动按钮)BottomNavigationBar(底部导航栏) 等。本文将详细解析 Scaffold 的功能和使用方法。


2. Scaffold 主要属性

2.1 基本结构

Scaffold 组件的基本结构如下:

Dart 复制代码
import 'package:flutter/material.dart';

class ScScaffoldPage extends StatefulWidget {
  const ScScaffoldPage({super.key});

  @override
  State<ScScaffoldPage> createState() => _ScScaffoldPageState();
}

class _ScScaffoldPageState extends State<ScScaffoldPage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
          backgroundColor: Theme.of(context).colorScheme.inversePrimary,
          title: Text('Scaffold 示例')
      ),
      body: Center(child: Text('Hello, Flutter!')),
      floatingActionButton: FloatingActionButton(
        onPressed: () {},
        child: Icon(Icons.add),
      ),
      bottomNavigationBar: BottomNavigationBar(
        items: [
          BottomNavigationBarItem(icon: Icon(Icons.home), label: '首页'),
          BottomNavigationBarItem(icon: Icon(Icons.account_circle_rounded), label: '我的'),
        ],
      ),
    );
  }
}

2.2 主要属性解析

属性 说明
appBar 顶部应用栏,通常使用 AppBar 组件
body 主体内容区域
floatingActionButton 浮动操作按钮(FAB)
drawer 侧边抽屉菜单
bottomNavigationBar 底部导航栏
backgroundColor 背景颜色
resizeToAvoidBottomInset 控制键盘弹出时是否调整 body 高度

3. Scaffold 组件示例

3.1 appBar(应用顶栏)

  • 类型AppBar

  • 功能:显示页面标题、导航按钮和操作项

  • 代码示例

Dart 复制代码
appBar: AppBar(
  title: Text('首页'),
  actions: [
    IconButton(icon: Icon(Icons.search), onPressed: () {}),
    IconButton(icon: Icon(Icons.settings), onPressed: () {})
  ],
)

3.2 body(主体内容)

  • 类型Widget

  • 功能:承载页面主要内容区域

  • 最佳实践 :通常使用 ContainerListViewColumn 等布局组件包裹内容

3.3 floatingActionButton(悬浮按钮)

  • 类型FloatingActionButton

  • 功能:执行主要操作(如新建、发布等)

  • 定位控制 :通过 floatingActionButtonLocation 调整位置

Dart 复制代码
floatingActionButton: FloatingActionButton(
  onPressed: () {},
  child: Icon(Icons.add),
  tooltip: '新建',
)

3.4 drawer(左侧抽屉)

  • 类型Drawer

  • 功能:侧滑显示导航菜单

  • 打开方式:手指从左侧边缘右滑或点击 AppBar 导航图标

Dart 复制代码
drawer: Drawer(
  child: ListView(
    children: [
      ListTile(title: Text('菜单项1'), onTap: () {}),
      ListTile(title: Text('菜单项2'), onTap: () {})
    ],
  ),
)

3.5 bottomNavigationBar(底部导航栏)

  • 类型BottomNavigationBar

  • 功能:实现多页面切换导航

Dart 复制代码
bottomNavigationBar: BottomNavigationBar(
  items: [
    BottomNavigationBarItem(icon: Icon(Icons.home), label: '首页'),
    BottomNavigationBarItem(icon: Icon(Icons.person), label: '我的')
  ],
  currentIndex: _selectedIndex,
  onTap: (index) => setState(() => _selectedIndex = index),
)

4. 结论

Scaffold 是 Flutter 布局的核心组件,为应用提供了标准的 UI 结构。合理使用 Scaffold 及其属性,可以快速构建常见的应用界面。

相关推荐

Flutter Widget 体系结构解析-CSDN博客文章浏览阅读709次,点赞23次,收藏15次。Flutter 是 Google 开发的一款跨平台 UI 框架,它基于 Dart 语言,能够在 iOS、Android、Web、桌面等多个平台运行。Flutter 采用 声明式 UI,并依赖其强大的 Widget 体系来构建界面。本文将深入解析 Flutter 的 Widget 体系结构,帮助开发者理解其运行原理,并掌握构建高效 UI 的方法。https://shuaici.blog.csdn.net/article/details/146066531Flutter:StatelessWidget vs StatefulWidget 深度解析-CSDN博客文章浏览阅读629次,点赞44次,收藏29次。在 Flutter 中,所有的 UI 组件都是由 Widget 组成,而 Widget 又分为两大类:StatelessWidget(无状态组件) 和 StatefulWidget(有状态组件)。StatelessWidget 适用于不会随时间变化的 UI,如文本、图标等静态内容;StatefulWidget 则适用于需要动态更新的 UI,如用户交互、动画、网络请求等。本文将深入解析这两种 Widget 的本质区别、适用场景以及生命周期,帮助开发者更好地理解 Flutter 组件的运行机制。https://shuaici.blog.csdn.net/article/details/146066840

相关推荐
ilawsonlu1 小时前
如何正确处理 CoreBluetooth 超时与 Task Cancellation
ios
00后程序员张2 小时前
SSL Pinning 抓包抓不到明文?绕过证书固定的几种方案
网络协议·计算机网络·网络安全·ios·adb·https·udp
阿巴斯甜2 小时前
Android SharedMemory 详细使用
android
sun0077003 小时前
android的dns的常见错误resolv
android
恋猫de小郭3 小时前
Flutter A2UI 的正确用法,怎么把 AI 和动态 UI 结合有效生产
android·前端·flutter
余额瞒着我当琳3 小时前
C++--vector第二讲:手写 C++ STL:vector 源码剖析与迭代器失效分析
android·java·c++
程序员-珍3 小时前
安卓开发:同名 styles.xml 在不同分支/文件夹的合并规则
android·xml·前端
我命由我123454 小时前
Compose Codelab 学习 - Compose 中的基本布局
android·java·java-ee·kotlin·android studio·android-studio·android runtime
ii_best4 小时前
手机自动化脚本按键精灵实战:随机布局安全数字键盘的自动化输入方案
android·运维·ios·自动化·手机
2601_965798474 小时前
Boutique Business Consulting WordPress Architecture & SEO Setup
android·theme·wordpress