Flutter Stepper使用controlsBuilder报参数类型不匹配错误如何解决
问题原因
这个报错是两个项目的Flutter版本不一致导致的API兼容问题。高版本Flutter对Stepper组件的controlsBuilder参数定义做了空安全适配,要求入参中的onStepCancel、onStepContinue回调为可空类型,你当前代码里写的是非空必传类型,和官方定义的参数类型不匹配,因此抛出类型错误。
解决方法
直接修改controlsBuilder回调的参数类型,将两个回调标记为可空即可,修改后的代码如下:
controlsBuilder: (BuildContext context, {VoidCallback? onStepContinue, VoidCallback? onStepCancel}) { return Row( children: <Widget>[ TextButton( onPressed: onStepContinue, child: const Text('下一步'), ), TextButton( onPressed: onStepCancel, child: const Text('離開'), ), ], ); },
如果修改后仍然报错,说明你的Flutter版本更高,官方已经将controlsBuilder的入参调整为单个ControlsDetails类型,替换为以下写法即可:
controlsBuilder: (BuildContext context, ControlsDetails details) { return Row( children: <Widget>[ TextButton( onPressed: details.onStepContinue, child: const Text('下一步'), ), TextButton( onPressed: details.onStepCancel, child: const Text('離開'), ), ], ); },
内容的提问来源于stack exchange,提问作者Hsu Mark
相关产品推荐
相关产品推荐

