news 2026/6/15 17:17:53

Flutter for OpenHarmony核心组件学习: MaterialApp、Scaffold 两大基础组件以及有无状态组件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Flutter for OpenHarmony核心组件学习: MaterialApp、Scaffold 两大基础组件以及有无状态组件

Flutter for OpenHarmony核心组件学习: MaterialApp、Scaffold 两大基础组件以及有无状态组件


作者:爱吃大芒果

个人主页 爱吃大芒果

本文所属专栏Flutter

更多专栏
Ascend C 算子开发教程(进阶)
鸿蒙集成
OpenAgents
openJiuwen
从0到1自学C++


前言

本次学习主要掌握 Flutter 中MaterialAppScaffold两大基础组件的用法,以及无状态组件(StatelessWidget)和有状态组件(StatefulWidget)的定义与区别。


核心知识点梳理

1. 根组件MaterialApp

  • 作用:作为 Flutter 应用的入口,是 Material Design 风格应用的全局配置中心。
  • 核心配置项
    • title:应用标题,会显示在任务管理器或应用切换列表中。
    • theme:全局主题配置,可统一设置scaffoldBackgroundColor等样式。
    • home:应用启动后显示的第一个页面,通常是Scaffold组件。
  • 踩坑记录
    最初错误地用Color(const Color.fromARGB(...))设置主题色,导致类型不匹配。
    正确做法是直接使用Color.fromARGB(255, 173, 186, 189)Colors.blue

2. 页面骨架Scaffold

  • 作用:封装了常见的页面结构元素,快速搭建符合 Material Design 规范的页面。
  • 常用属性
    • appBar:顶部导航栏,可设置标题、图标和操作按钮。
    • body:页面主体内容区域,承载主要业务组件。
    • bottomNavigationBar:底部导航栏,适合实现多页面切换。
  • 实践效果
    通过Scaffold快速搭建了包含顶部标题栏、居中内容和底部导航的完整页面,开发效率显著提升。

3. 无状态组件StatelessWidget

  • 特点:组件内容固定,初始化后数据不可变,仅依赖传入的final类型参数构建。
  • 适用场景:静态展示类组件,如标题、文本标签。
  • 核心方法:仅需实现build方法,返回要渲染的 Widget 树。
  • 示例代码
    classmainpageextendsStatelessWidget{@overrideWidgetbuild(BuildContextcontext){returnMaterialApp(home:Scaffold(appBar:AppBar(title:Text('爱吃大芒果')),body:Center(child:Text('爱吃大西瓜')),),);}}

4. 有状态组件StatefulWidget

  • 特点:包含可变状态(State),状态变化时会触发组件重新构建,实现动态交互。
  • 适用场景:需要动态更新的组件,如计数器、表单输入。
  • 核心结构
    分为StatefulWidget类和对应的State类,前者负责创建State,后者管理状态和构建 UI。
  • 示例代码
    classmainpageextendsStatefulWidget{@overrideState<mainpage>createState()=>_mainpagestate();}class_mainpagestateextendsState<mainpage>{@overrideWidgetbuild(BuildContextcontext){returnMaterialApp(home:Scaffold(appBar:AppBar(title:Text('爱吃大芒果')),body:Center(child:Text('爱吃大西瓜')),),);}}


总结

  1. 组件关系MaterialApp是应用的根,Scaffold是页面的骨架,二者结合构成了 Flutter 应用的基础结构。
  2. 组件选型:静态内容用StatelessWidget,动态交互用StatefulWidget,可有效提升性能和代码可维护性。
  3. 避坑提示:使用Color时,直接调用Color.fromARGB()Colors.xxx即可,无需额外用Color()包裹。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 15:12:04

22-5. PLC的程序控制指令(子程序)

22-5. PLC的程序控制指令&#xff08;子程序&#xff09;在 PLC&#xff08;可编程逻辑控制器&#xff09;编程中&#xff0c;子程序指令是一种用于结构化编程的核心指令。它的核心思想是“模块化”&#xff1a;将复杂的程序分解成若干个独立的功能块&#xff0c;按需调用。简单…

作者头像 李华
网站建设 2026/6/15 16:40:22

基于STM32的智能停车场系统设计(实物设计)

基于STM32的智能停车场系统设计摘要随着城市化进程加快与汽车保有量激增&#xff0c;传统停车场管理c效率低下、信息不透明、安全隐患突出等问题日益显著。为解决上述痛点&#xff0c;本文设计了一套基于STM32微控制器的智能停车场系统&#xff0c;实现车辆出入计数、环境参数监…

作者头像 李华
网站建设 2026/6/10 12:42:14

求多个乘法逆元(模板)

线性算法 用于求一连串数字对于一个modp的逆元。洛谷P3811 只能用这种方法&#xff0c;别的算法都比这些要求一串要慢。 首先我们有一个,1−1≡1(modp) 然后设 pk∗ir,(1<r<i<p) 也就是 k 是 p/i 的商&#xff0c;r 是余数 。 再将这个式子放到(modp)意义下就会得…

作者头像 李华
网站建设 2026/6/10 0:24:57

STM32F0实战:基于HAL库开发【2.3】

9.2.1 事件线概述 在EXTI中引入了“事件”这一概念。与中断相比,事件的产生不会中断主程序的进程,但可以让处于功耗管理模式下的微控制器唤醒。EXTI管理的异步事件和中断包括以下两类。 来自引脚的外部中断/事件:这类中断和事件大多与GPIO相关联,涉及端口引脚的输入或输出…

作者头像 李华