Flutter 函数签名
Flutter 函数签名
一、函数为什么「必须」要有这个参数?
这是因为传给框架的是一个回调函数,它必须匹配框架预期的「函数签名」。
1 | TextField( |
onChanged 要求你传一个 (String) => void 的函数,不是你说了算,而是 Flutter SDK 提前定义好的。
所以:
不写参数?语法报错。
写了但不想用?就用 _ 忽略掉。
这是 Dart 类型系统 + Flutter 框架规定的「回调契约」: 你要给我一个函数,我会传参数进来,你怎么处理是你的事。
二、虽然用不到,但框架可能必须传
这就像你开门,门把手肯定会通知门框说“我被转动了”,至于你在门后干嘛、要不要知道门被开,不重要。
框架通知你:“用户输入了!这是新的内容!”
你可以选择用这个内容做各种事(比如验证、更新状态、发请求),也可以暂时什么都不干,只是接收。
这就涉及到一个非常核心的范式设计:“控制反转”(IoC)。
- 不是你主动拉数据,而是框架“推”给你。
三、有时候你暂时用不到,但未来你可能用到
1 | onChanged: (_) {}, |
是为了让代码不报错、功能不崩,但未来你加个校验就能立刻把 _ 改成 value:
1 | onChanged: (value) { |
所以 Flutter 并不会因为你“暂时用不到”就让你随便写个 onChanged: (){} ——必须匹配签名!
用不用的到参数,是项目业务决定的;但框架必须给你参数,是回调契约决定的.
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment





