为何Flutter的build方法内可定义方法却无法定义getter?
问题解答
不能在build方法内部创建getter,这不是flutter_lints: ^3.0.0的限制,而是Dart语言本身的语法规则。
原因说明
Dart里,函数(包括类的成员函数build)内部仅允许定义局部变量、普通局部方法,并不支持定义带get/set关键字的属性访问器。你代码里的报错属于Dart语法层面的错误,就算关闭所有lint检查,这段代码也无法通过编译。
替代方案
如果需要在build方法内实现类似getter的逻辑,可以用以下几种方式:
- 定义普通局部方法:
@override Widget build(BuildContext context) { int _bar() => 1; // 调用时使用 _bar() return Container(); } - 使用局部变量:
@override Widget build(BuildContext context) { final int _bar = 1; return Container(); } - 若逻辑需要复用,直接把getter定义在类的成员级别(就像你代码里的
_foo那样),而非build方法内部。
内容的提问来源于stack exchange,提问作者Md. Yeasin Sheikh
相关产品推荐
相关产品推荐

