news 2026/3/18 3:39:50

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/3/14 22:29:00

深入理解Linux套接字(Socket)编程:从原理到实践

深入理解Linux套接字Socket编程&#xff1a;从原理到实践1. 套接字基础概念1.1 什么是套接字&#xff1f;1.2 套接字类型对比2. Linux套接字编程核心2.1 套接字创建与配置2.2 关键数据结构2.3 字节序转换3. 高级套接字特性3.1 I/O多路复用3.2 套接字选项4. 实战案例&#xff1a…

作者头像 李华
网站建设 2026/3/14 11:08:03

ollama本地安装与大模型与DeepSeek模型调用

Ollama 本地部署 Deepseek R1 模型 概念 Ollama是在Github上的一个开源项目&#xff0c;其项目定位是&#xff1a;一个本地运行大模型的集成框架&#xff1b;目前主要针对主流的LLaMA架构的开源大模型设计&#xff0c;通过将模型权重、配置文件和必要数据封装进由Modelfile定义…

作者头像 李华
网站建设 2026/3/14 3:30:34

【BUG】【Python】【爬虫】爬取加载中的数据

示例网页链接&#xff1a;https://movie.douban.com/subject/36907263/ BUG 浏览器开发者模式可以看到所需信息有对应的HTML显式结构 但代码爬取时发现结构被hidden&#xff0c;需要二次加载 import requestsurl https://movie.douban.com/subject/36907263/ headers {Us…

作者头像 李华
网站建设 2026/3/14 17:03:41

Flutter for OpenHarmony 剧本杀组队App实战22:快速匹配功能实现

引言 快速匹配功能帮助用户自动寻找合适的队伍&#xff0c;无需手动浏览组队列表。本篇将实现带有匹配动画的快速匹配页面。快速匹配是现代社交应用的重要功能&#xff0c;通过算法自动配对用户&#xff0c;大大提升了用户体验和应用的活跃度。这个功能特别适合剧本杀组队场景…

作者头像 李华
网站建设 2026/3/16 15:05:54

云端VS本地 RFID资产管理系统怎么选?优缺点大揭秘

一、开篇&#xff1a;资产 “迷路”&#xff1f;RFID 系统部署抉择是关键 1.1 传统资产管理的 “老大难” 痛点 家人们&#xff0c;在企业的日常运营里&#xff0c;资产管理要是没做好&#xff0c;那可真是麻烦不断&#xff01;就说传统的人工盘点方式&#xff0c;简直就是一…

作者头像 李华