news 2026/5/27 15:28:20

Flutter Widget组件学习(专为 Uniapp 转 Flutter 定制)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Flutter Widget组件学习(专为 Uniapp 转 Flutter 定制)

一、页面结构 / 根容器(最常用)

Flutter WidgetUniapp 对应组件说明
Scaffoldpage 根节点Flutter 页面标配,自带导航栏、状态栏、背景、抽屉
AppBarnavigation-bar页面顶部导航栏(标题、返回、按钮)
SafeArea自动安全区适配

避开刘海、底部小黑条,必须套在页面外层

二、布局组件(最核心!)

Flutter WidgetUniapp 对应核心用途
Container<view>+ 样式万能容器,支持宽高、边距、背景、圆角、阴影
Column<view style="flex-direction:column">垂直布局(从上到下)
Row<view style="flex-direction:row">水平布局(从左到右)
Stack<view style="position:relative">子元素 absolute层叠布局(悬浮、遮罩、徽章)
Positionedposition:absolute配合 Stack 定位子元素
Expandedflex:1填充剩余空间(必须放在 Row/Column 里)
SizedBox<view style="width:xx;height:xx"></view>固定宽高、间距占位
Paddingpadding专门做内边距(比 Container 更轻量)
Alignalign/ 居中控制子元素对齐方式
Center居中快速让子元素居中

三、文本 / 图标

Flutter WidgetUniapp 对应说明
Text<text>显示文本(必用)
RichText富文本一段文字多种样式
Icon<icon>系统图标
IconButton<button icon>图标按钮

四、按钮 / 交互

Flutter WidgetUniapp 对应说明
ElevatedButton<button type="primary">凸起按钮(常用)
TextButton<text>点击文字按钮(无背景)
OutlinedButton镂空按钮边框按钮
GestureDetector@click/@tap任何组件添加点击、长按、双击(万能点击)
InkWell带水波纹点击带 Material 点击效果(比 GestureDetector 好看)

五、输入框 / 表单

Flutter WidgetUniapp 对应说明
TextField<input>输入框(文本、密码、数字)
Checkbox<checkbox>复选框
Radio<radio>单选框
Switch<switch>开关
Slider<slider>滑块
Form+TextFormField表单校验表单统一校验(登录、注册必用)

六、列表(最常用!)

Flutter WidgetUniapp 对应说明
ListView<scroll-view>+<view v-for>垂直 / 水平长列表(自带滚动、复用)
ListView.builder高性能长列表按需渲染,海量数据不卡顿
GridView<grid>网格布局
SingleChildScrollView<scroll-view>可滚动容器(适合少量内容)

七、图片 / 资源

Flutter WidgetUniapp 对应说明
Image<image>本地 / 网络图片
CircleAvatar圆形头像快速实现圆形头像
FadeInImage图片占位 + 淡入优化网络图片体验

八、弹窗 / 提示

Flutter WidgetUniapp 对应说明
AlertDialoguni.showModal确认弹窗
BottomSheetuni.showActionSheet底部弹出菜单
SnackBaruni.showToast底部轻提示
Drawer侧滑抽屉侧边栏菜单

九、导航 / 路由

Flutter 类 / WidgetUniapp 对应说明
Navigatoruni.navigateTo页面跳转、返回
MaterialPageRoute路由页面页面跳转动画
TabBar+TabBarView<tab-bar>底部 / 顶部 tab 切换

十、样式增强(高频小部件)

Flutter WidgetUniapp 对应用途
DecoratedBox背景 / 边框加背景、边框、渐变(比 Container 轻)
Opacityopacity透明度
ClipRRectborder-radius圆角裁剪
ClipOval圆形裁剪圆形图片 / 按钮
Card卡片容器带阴影、圆角的卡片

快速记忆口诀(专为 Uniapp 转 Flutter 定制)

  1. 页面 = Scaffold(替代 Uniapp 页面根节点)
  2. 容器 = Container(替代 view)
  3. 排版 = Row + Column(flex 布局)
  4. 占空间 = Expanded(flex:1)
  5. 点击 = InkWell / GestureDetector(@click)
  6. 列表 = ListView(scroll-view)
  7. 输入 = TextField(input)
  8. 文字 = Text(text)
  9. 图片 = Image(image)
  10. 层叠 = Stack(relative + absolute)

最精简 “必背 15 个”(你 90% 时间只用这些)

  1. Scaffold
  2. Container
  3. Row
  4. Column
  5. Expanded
  6. Stack
  7. Text
  8. TextField
  9. Image
  10. ListView
  11. ElevatedButton
  12. InkWell/GestureDetector
  13. Padding
  14. SizedBox
  15. SafeArea

Flutter 常用组件属性速查表

组件名称精细属性 + 具体取值
ScaffoldappBar: AppBar (title: Text ("标题"))body: 页面内容floatingActionButton: 悬浮按钮bottomNavigationBar: 底部导航drawer: 左侧抽屉backgroundColor: Colors.whiteresizeToAvoidBottomInset: true / false
Containerwidth: 200height: 200alignment: Alignment.center / topLeft / bottomRightpadding: EdgeInsets.all(10) / symmetric(horizontal:10,vertical:5) / only(left:10)margin: EdgeInsets.all(10) / symmetric(horizontal:10,vertical:5) / only(top:5)color: Colors.bluedecoration: BoxDecoration (颜色、圆角、边框、阴影)child: 子组件
RowmainAxisAlignment: start / center / end / spaceBetween / spaceAround / spaceEvenlycrossAxisAlignment: start / center / end / stretchmainAxisSize: max / minchildren: 子组件列表
ColumnmainAxisAlignment: start / center / end / spaceBetween / spaceAround / spaceEvenlycrossAxisAlignment: start / center / end / stretchmainAxisSize: max / minchildren: 子组件列表
Expandedflex: 1 / 2 / 3child: 子组件必须放在 Row/Column 内
Stackalignment: center / topLeft / topRight / bottomCenterfit: StackFit.loose / expandclipBehavior: Clip.none / hardEdgechildren: 层叠子组件
Textdata: "显示文字"style: TextStyle(fontSize: 16,color: Colors.black,fontWeight: normal / bold,fontStyle: normal / italic,letterSpacing: 1,height: 1.5,decoration: none / underline / lineThrough)textAlign: left / center / rightmaxLines: 1overflow: ellipsissoftWrap: true
TextFieldcontroller: TextEditingController()decoration: InputDecoration (hintText:"提示",labelText:"标签",border:OutlineInputBorder ())keyboardType: text / number / emailobscureText: true (密码) /falsemaxLength: 20enabled: true / falseonChanged: (value){}
Imageimage: NetworkImage(url) / AssetImage(path)width: 100height: 100fit: cover / contain / fill / scaleDownalignment: centercolor: 混合色
ListViewscrollDirection: vertical / horizontalpadding: EdgeInsets.all(10)shrinkWrap: true / falsephysics: AlwaysScrollable / NeverScrollableitemCount: 数量itemBuilder: 构建列表
ElevatedButtononPressed: (){}onLongPress: (){}child: Text ("按钮")style: 背景色、文字色、圆角、padding
InkWellonTap: 点击onDoubleTap: 双击onLongPress: 长按splashColor: 水波纹颜色child: 子组件
GestureDetectoronTap: 点击onDoubleTap: 双击onLongPress: 长按onPanUpdate: 拖拽child: 子组件
Paddingpadding: EdgeInsets.all(10)padding: EdgeInsets.symmetric(horizontal:10, vertical:5)padding: EdgeInsets.only(left:10, top:5)child: 子组件
SizedBoxwidth: 100height: 50SizedBox (width:20) 水平间距SizedBox (height:10) 垂直间距child: 子组件
SafeAreatop: true / falsebottom: true / falseleft: true / falseright: true / falsechild: 子组件
GridViewGridView.count () 固定列数crossAxisCount: 2 (列数)mainAxisSpacing: 10 (行间距)crossAxisSpacing: 10 (列间距)padding: EdgeInsets.all(10)childAspectRatio: 1 (宽高比)shrinkWrap: true / falsephysics: AlwaysScrollable / NeverScrollablechildren: 子组件列表GridView.builder () 动态构建(高效)crossAxisCount: 2 /gridDelegate 配置itemCount: 总数itemBuilder: 构建条目padding: EdgeInsets.all(10)mainAxisSpacing: 10crossAxisSpacing: 10
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/27 15:26:06

高并发场景下体验Taotoken平台提供的低延迟与容灾路由能力

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 高并发场景下体验Taotoken平台提供的低延迟与容灾路由能力 在线上营销活动这类对系统稳定性和响应速度要求极高的场景中&#xff0…

作者头像 李华
网站建设 2026/5/27 15:25:07

自动机处理器:基于DRAM架构的并行模式匹配硬件加速方案

1. 项目概述&#xff1a;为什么我们需要一个“非冯”的自动机处理器&#xff1f;干了十几年硬件和系统架构&#xff0c;我见过太多项目在“通用”和“专用”之间摇摆。通用CPU&#xff08;冯诺依曼架构&#xff09;就像瑞士军刀&#xff0c;什么都能干&#xff0c;但干精细活效…

作者头像 李华
网站建设 2026/5/27 15:23:04

100次问AI的代价:你的脑子,正在被悄悄“架空”

这届AI&#xff0c;到底是谁在“养”谁&#xff1f;最近被AI整得有点分裂。一边是朋友圈里铺天盖地的“AI要取代人类了”&#xff0c;吓得我差点把电脑砸了。另一边呢&#xff0c;我凌晨三点写稿写到想吐&#xff0c;打开ChatGPT让它帮我憋个开头&#xff0c;它给我整了一堆“在…

作者头像 李华
网站建设 2026/5/27 15:23:04

LTE同频组网实战:从干扰挑战到PCI规划的全链路解析

1. LTE同频组网的核心挑战与应对策略 第一次接触LTE同频组网时&#xff0c;我被它的大胆设计震惊了——所有小区居然使用相同的频点&#xff01;这就像在同一个房间里让多组人用相同的频率同时讲话&#xff0c;干扰问题可想而知。但深入理解后才发现&#xff0c;这种设计背后有…

作者头像 李华
网站建设 2026/5/27 15:19:59

基于向量数据库与LLM构建代码库智能问答系统

1. 项目概述&#xff1a;为你的代码库构建专属的“谷歌地图”如果你曾面对一个庞大、陌生的代码库感到无从下手&#xff0c;那么你一定能理解那种“迷失在代码丛林”的无力感。文档可能过时&#xff0c;核心逻辑散落在十几个不同的文件里&#xff0c;想找一个特定功能的实现&am…

作者头像 李华
网站建设 2026/5/27 15:16:15

磨料水射流曲面抛光冲蚀机理及加工工艺优化算法【附算法】

✨ 长期致力于磨料水射流抛光、计算流体动力学、塑性挤压机理、工艺优化研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 (1) 三相耦合K-e湍流喷嘴优化模型: 构建了基于欧拉-拉格…

作者头像 李华