Flutter入门:Dart基础与核心组件速成

对于入门 Flutter 开发(含 Flutter for OpenHarmony),Dart 语言 是基础,Flutter 组件、布局、状态管理是核心。本文用 "表格归纳 + 极简代码" 的形式,帮你快速抓重点、少踩坑,高效打通入门关键环节。

Dart 语言基础

变量与数据类型

  • Dart 的基本数据类型:int、double、String、bool、List、Map
  • 变量的声明与初始化:var、final、const 的区别
  • 类型推断与显式类型声明

控制流与函数

  • 条件语句:if-else、switch-case
  • 循环结构:for、while、do-while
  • 函数的定义与调用:命名参数、可选参数、默认参数
  • 匿名函数与高阶函数

面向对象编程

  • 类与对象:属性、方法、构造函数
  • 继承与多态:extends、implements
  • 抽象类与接口
  • 混入(Mixin)的使用

异步编程

  • Future 与 async/await
  • Stream 与事件流处理
  • 错误处理:try-catch-finally

Flutter 框架核心

Widget 基础

  • StatelessWidget 与 StatefulWidget 的区别
  • 常用基础 Widget:Text、Image、Container、Row、Column
  • 布局 Widget:Stack、Expanded、Flexible

状态管理

  • setState 的局部状态管理
  • Provider 的状态共享
  • Riverpod 的进阶状态管理
  • BLoC 模式与 Cubit

导航与路由

  • 基本路由跳转:Navigator.push 与 Navigator.pop
  • 命名路由的配置与使用
  • 路由传参与返回值处理

网络与数据持久化

  • HTTP 请求:Dio 或 http 包的使用
  • JSON 序列化与反序列化
  • 本地存储:shared_preferences 与 sqflite

实战项目开发

UI 构建技巧

  • 自定义 Widget 的设计与复用
  • 响应式布局:MediaQuery 与 LayoutBuilder
  • 主题与样式:ThemeData 的使用

性能优化

  • Widget 重建的优化:const 与 Key
  • 图片加载优化:cached_network_image
  • 列表性能优化:ListView.builder

调试与测试

  • Flutter 调试工具:DevTools
  • 单元测试与 Widget 测试
  • 集成测试与 Golden 测试

发布与部署

  • Android 应用打包与签名
  • iOS 应用上架流程
  • Web 与桌面端的编译与发布

Dart 语言基础

变量与数据类型

  • Dart 的基本数据类型:int、double、String、bool、List、Map
  • 变量的声明与初始化:var、final、const 的区别
  • 类型推断与显式类型声明

控制流与函数

  • 条件语句:if-else、switch-case
  • 循环结构:for、while、do-while
  • 函数的定义与调用:命名参数、可选参数、默认参数
  • 匿名函数与高阶函数

面向对象编程

  • 类与对象:属性、方法、构造函数
  • 继承与多态:extends、implements
  • 抽象类与接口
  • 混入(Mixin)的使用

异步编程

  • Future 与 async/await
  • Stream 与事件流处理
  • 错误处理:try-catch-finally

Flutter 框架核心

Widget 基础

  • StatelessWidget 与 StatefulWidget 的区别
  • 常用基础 Widget:Text、Image、Container、Row、Column
  • 布局 Widget:Stack、Expanded、Flexible

状态管理

  • setState 的局部状态管理
  • Provider 的状态共享
  • Riverpod 的进阶状态管理
  • BLoC 模式与 Cubit

导航与路由

  • 基本路由跳转:Navigator.push 与 Navigator.pop
  • 命名路由的配置与使用
  • 路由传参与返回值处理

网络与数据持久化

  • HTTP 请求:Dio 或 http 包的使用
  • JSON 序列化与反序列化
  • 本地存储:shared_preferences 与 sqflite

实战项目开发

UI 构建技巧

  • 自定义 Widget 的设计与复用
  • 响应式布局:MediaQuery 与 LayoutBuilder
  • 主题与样式:ThemeData 的使用

性能优化

  • Widget 重建的优化:const 与 Key
  • 图片加载优化:cached_network_image
  • 列表性能优化:ListView.builder

调试与测试

  • Flutter 调试工具:DevTools
  • 单元测试与 Widget 测试
  • 集成测试与 Golden 测试

发布与部署

  • Android 应用打包与签名
  • iOS 应用上架流程
  • Web 与桌面端的编译与发布

一、Dart 语言:Flutter 的 "编程基石"

Dart 语法简洁、贴近主流语言,重点掌握 "基础语法 + 核心特性",无需死记硬背。

1. 核心语法速查表

知识点 关键说明 极简示例代码
变量声明 var(类型推断)、final(不可变)、const(常量) var name = "Flutter"; final age = 25; const pi = 3.14;
常用数据类型 字符串、列表、映射(键值对) String msg = "Hello"; List<int> nums = [1,2,3]; Map<String, int> user = {"id":1};
函数简写 箭头函数(单表达式) int add(int a, int b) => a + b;
面向对象 类、继承、构造函数 class Person {String name; Person(this.name); void sayHi() => print(name);}
异步编程 Future(异步结果)+ async/await(简化语法) Future<String> fetchData() async => await Future.delayed(Duration(seconds:2), ()=>"数据");
空安全 ?(可空)、??(默认值)、!(非空断言) String? addr; String showAddr = addr ?? "未知地址";

2. 开发高频注意点

  • Dart 是强类型语言 ,但支持类型推断,推荐用 var 简化代码;
  • 异步操作必须用 async/await 包裹,否则会直接返回 Future 对象(而非真实结果);
  • 空安全是 Dart 2.12+ 核心特性,避免空指针异常,尽量少用 ! 断言(风险高)。

二、Flutter 基础组件:UI 开发的 "积木块"

Flutter 一切皆组件,分为 "无状态(静态)" 和 "有状态(动态)" 两类,以下是实战中最常用的组件。

1. 常用组件速查表

组件类型 组件名称 核心作用 极简示例代码
文本展示 Text 显示文字,支持样式配置 Text("Flutter组件", style: TextStyle(fontSize:18, color: Colors.blue))
图标 Icon 显示系统 / 自定义图标 Icon(Icons.favorite, color: Colors.red, size:30)
按钮 ElevatedButton 带背景色按钮(最常用) ElevatedButton(onPressed: ()=>print("点击"), child: Text("确认"))
图片 Image.asset/network 加载本地 / 网络图片 Image.network("https://picsum.photos/200", width:200)
输入框 TextField 接收用户输入(表单必备) TextField(decoration: InputDecoration(hintText: "请输入用户名"))
列表项 ListTile 快速构建列表条目(左侧图标 + 标题 + 右侧箭头) ListTile(leading: Icon(Icons.list), title: Text("列表项"), trailing: Icon(Icons.arrow_forward))
间距 SizedBox 控制组件间距(替代 margin/padding 简化布局) SizedBox(height:10)(垂直间距 10)

2. 组件核心分类

总结

本文核心是用 "表格 + 极简代码" 帮你快速掌握关键知识点,重点记住 3 点:

  • StatelessWidget(无状态组件) :UI 不随数据变化(如静态文本、图标),代码简单:

    复制代码
    class StaticWidget extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Text("静态文本"); // 无法修改,除非重新创建组件
      }
    }

    StatefulWidget(有状态组件) :UI 随数据变化(如计数器、输入框),需配合状态管理

    3. 状态管理核心原则

  • 简单场景用 setState(优先),避免过度设计;

  • 多组件共享状态用 InheritedWidget(入门级),复杂场景后续再学 Provider/Bloc(进阶);

  • 状态尽量 "局部化",能放在子组件的状态,就不放在父组件(减少不必要的刷新)。

  • Dart 重点抓 变量 / 函数 / 异步 / 空安全,是 Flutter 开发的基础;

  • Flutter 组件优先掌握 Text/Button/TextField/ListTile ,布局聚焦 Row/Column/Container/ListView,满足 80% 开发需求;

  • 状态管理入门用 setState(单组件)+ InheritedWidget(简单共享),无需一开始学习复杂框架。

相关推荐
吃好喝好玩好睡好1 小时前
OpenHarmony混合开发:Flutter+Electron实战
javascript·flutter·electron
OC溥哥9992 小时前
2D,MC像素风跑酷游戏用HTML实现
javascript·游戏·html
小徐不会敲代码~2 小时前
Vue3 学习
前端·javascript·vue.js·学习
大猩猩X2 小时前
vue vxe-gantt table 甘特图实现多个维度视图展示,支持切换年视图、月视图、周视图等
前端·javascript·甘特图·vxe-table·vxe-ui
m0_740043732 小时前
Element-UI 组件库的核心组件及其用法
前端·javascript·vue.js·ui·elementui·html
游九尘2 小时前
js:获取上一周,本周,下一周,上个月,本月,下个月的日期时间段
javascript
克喵的水银蛇2 小时前
Flutter 通用表单组件封装:FormKit 一站式解决表单验证、状态管理与交互优化
flutter·microsoft·交互
ujainu2 小时前
Flutter性能优化实战:从卡顿排查到极致流畅
flutter·性能优化
脾气有点小暴2 小时前
H5 跳转方式
前端·javascript