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

相关推荐
诸神黄昏EX17 分钟前
Android Google KEY
android
一起搞IT吧23 分钟前
Android性能系列专题理论之十一:block IO问题分析思路
android·嵌入式硬件·智能手机·性能优化
小妖6661 小时前
怎么用 tauri 创建编译 android 应用程序
android·tauri
懋学的前端攻城狮2 小时前
iOS 列表性能优化实战:从 45fps 到 60fps 的蜕变
ios·性能优化·ui kit
小白64022 小时前
AI辅助设计Flutter蓝牙自动连接系统
人工智能·flutter
xmdy58662 小时前
Flutter+开源鸿蒙实战|智联邻里Day6 引入GetX全局架构+升级版下拉刷新+Toast弹窗+网络状态监听
flutter·开源·harmonyos
鸟儿不吃草2 小时前
安卓实现左右布局聊天界面
android·开发语言·python
斯班奇的好朋友阿法法2 小时前
鸿蒙 vs iOS vs 微信小程序:开发平台全面对比
ios·微信小程序·harmonyos
xmdy58663 小时前
Flutter+开源鸿蒙实战|智联邻里Day5 闲置详情页+删除功能+下拉刷新+交互优化
flutter·开源·harmonyos
maaath3 小时前
【maaath】Flutter for OpenHarmony 媒体工具应用开发实战
flutter·华为·harmonyos