Flutter使用...List.generate调用Function列表触发不必要语句警告且执行失效
问题解决
你遇到的两个问题根源完全一致:没有主动调用函数对象,只是获取了函数引用本身。
- 静态警告
Avoid using unnecessary statements的触发原因:_tapFunction[i]仅表示读取列表中存储的函数对象,没有执行赋值、调用等任何有效操作,属于无用语句,因此被静态检查标记。 - 点击后函数不执行的原因:Dart中函数需要添加括号
()才会执行,仅写函数名/函数引用不会触发内部逻辑。
修复方案
直接将onTap回调中的_tapFunction[i];修改为_tapFunction[i]();即可,无需额外的类型强转。你之前添加as Function仅解决了类型匹配的警告,但依然没有执行调用操作,因此函数逻辑不会触发。
同时你可以顺便修正代码里的两处语法疏漏,避免后续编译报错:
_color列表定义末尾缺少分号- Container的
color: _color[i]属性后缺少逗号分隔符
修正后的完整代码如下:
class FunctionList extends StatelessWidget { @override Widget build(BuildContext context) { List _functionList = [ '1', '2', ]; List<Color> _color = [ Colors.white, Colors.blue, ]; List<Function> _tapFunction = [ () { print('Function 1'); }, () { print('Function 2'); }, ]; return Row( children: [ ...List.generate(_functionList.length, (i) { return GestureDetector( onTap: () { print('tappping'); _tapFunction[i](); }, child: Container( color: _color[i], width: 100, height: 100, ), ); }) ], ); } }
内容的提问来源于stack exchange,提问作者chichi
相关产品推荐
相关产品推荐

