Flutter基础学习

  1. 核心概念映射

2.Flutter 中 with SingleTickerProviderStateMixin 详解

它是什么:with 是 Dart 的 mixin 语法,类似 Vue 3 的 composable(组合式函数)或 Vue 2 的 mixins,用来给类混入额外的能力。

SingleTickerProviderStateMixin 专门提供一个东西:vsync。

vsync 是什么:Flutter 的动画需要一个"节拍器"来驱动,这个节拍器叫 Ticker。它的作用是每一帧(约 16ms)触发一次回调,驱动动画值从 0 变到 1。

vsync 的意思是"垂直同步"------让动画帧率和屏幕刷新率同步,避免在屏幕不可见时白白消耗 CPU。

SingleTickerProviderStateMixin 让 this 具备了作为 vsync 参数值的资格。

javascript 复制代码
// 需要 vsync 的场景
AnimationController _controller = AnimationController(
  vsync: this,  // ← 这里需要 TickerProvider,mixin 提供了 this 的能力
  duration: const Duration(milliseconds: 300),
);

TabController _tabController = TabController(
  length: 2,
  vsync: this,  // ← 同样需要
);

3.late 关键字详解

Dart 是空安全语言,默认所有变量声明时必须赋初值。late 的意思是:"我保证这个变量在第一次被使用之前一定会被赋值,但现在暂时不赋"。等价于:

Dart 复制代码
// Flutter
late TabController _tabController;

// Vue/TS
let tabController!: TabController  // TS 的非空断言,告诉编译器"我知道我在做什么"
  1. GlobalKey

它的作用是拿到已经存在的子组件的 State 对象的引用,从而调用它的方法。相当于Vue中的Ref

Dart 复制代码
/** <PushDrawerState> 泛型的意思
GlobalKey<PushDrawerState> 里的泛型指定了"我要拿的是哪种 State"。

这样 _drawerKey.currentState 返回的就是 PushDrawerState 类型,你能直接调用它上面定义的 open()、close() 方法,IDE 也有代码提示。

如果不写泛型直接用 GlobalKey(),currentState 返回的是 State 基类,没有 open/close 方法,需要手动强转。
**/
final GlobalKey<PushDrawerState> _drawerKey = GlobalKey<PushDrawerState>();
相关推荐
陈随易6 小时前
在 VSCode 里,把项目一键部署到服务器
前端·后端·程序员
Highcharts.js7 小时前
教程:基于 React + Highcharts 构建一个单页应用程序、按需数据拉取与图表渲染
开发语言·前端·数据结构·react.js·前端框架·highcharts·页面应用
To_OC7 小时前
我被 useState 坑了两次之后,终于把它的脾气摸透了
前端·javascript·react.js
鱼樱前端7 小时前
我用 Claude Code 后,编码效率翻 3 倍。但更值钱的是别的。
前端·后端·ai编程
_lucas7 小时前
给知识库网站接入AI问答
前端·ai编程·全栈
前端糕手8 小时前
前端面试题大全:JavaScript + Vue3 + React + TypeScript + 工程化 + 性能优化
前端
我不叫武9 小时前
一个用 Rust 写的离线编码查询桌面工具
前端
Web4Browser10 小时前
指纹浏览器 API 自动化怎么接:启动 Profile、获取 CDP 端点并连接自动化框架
前端·网络·typescript·自动化
Patrick_Wilson10 小时前
从 React 到 Flutter:写给前端的一张跨端知识地图
前端·flutter·react.js
颜酱10 小时前
06 | 把 meta_config 同步进 MySQL(生成阶段)
前端·人工智能·后端