如何在颤动步进器中禁用第一个取消按钮

Cod*_*dOG 5 flutter

我目前有一个也可以完美工作的步进器,但我有一个问题:如何在第一步禁用后退按钮,但在其他步骤中应该显示它。

\n\n

我用controlsBuilder修改了步进器,但没有找到可以禁用后退按钮的解决方案。

\n\n

提前致谢

\n\n

这是我的步进器的一小段代码(不完整):

\n\n
 controlsBuilder: (BuildContext context,\n                    {VoidCallback onStepContinue, VoidCallback onStepCancel}) {\n                  return Row(\n                    children: <Widget>[\n                      FlatButton(\n                        onPressed: onStepContinue,\n                        child: const Text(\'Weiter\',\n                            style: TextStyle(color: Colors.white)),\n                        color: Colors.blue,\n                      ),\n                      new Padding(\n                        padding: new EdgeInsets.all(10),\n                      ),\n                      FlatButton(\n                        onPressed: onStepCancel,\n                        child: const Text(\n                          \'Zur\xc3\xbcck\',\n                          style: TextStyle(color: Colors.white),\n                        ),\n                        color: Colors.blue,\n                      ),\n                    ],\n                  );\n                },\n\n\n\nList<Step> steps = [\n      Step(\n        title: const Text(\'TEST\'),\n        isActive: true,\n        state: StepState.complete,\n        content: Column(children: <Widget>[\n          RadioListTile(\n            value: 1,\n            groupValue: selectedRadioTile,\n            title: Text("XX"),\n            onChanged: (val) {\n              setSelectedRadioTile(val);\n            },\n            activeColor: Colors.blue,\n            selected: true,\n          ),\n          RadioListTile(\n            value: 2,\n            groupValue: selectedRadioTile,\n            title: Text("XX"),\n            onChanged: (val) {\n              setSelectedRadioTile(val);\n            },\n            activeColor: Colors.blue,\n            selected: false,\n          ),\n        ]),\n      ),```\n
Run Code Online (Sandbox Code Playgroud)\n

Tim*_*ers 8

如果我理解正确的话,您想有条件地禁用“取消”按钮。

\n\n

您将需要知道它是否是第一个屏幕。假设您将其保存在一个名为 的变量中,isFirstScreen并将其传递给您的controlsBuilder方法。然后,您可以在处理程序上使用三元运算符禁用该按钮,onPressed如下所示:

\n\n
FlatButton(\n  onPressed: isFirstScreen ? null : onStepCancel, // <-- important part\n  child: const Text(\n    \'Zur\xc3\xbcck\',\n    style: TextStyle(color: Colors.white),\n  ),\n  color: Colors.blue,\n),\n
Run Code Online (Sandbox Code Playgroud)\n\n

来自 Flutter FlatButton 文档:

\n\n
\n

如果 onPressed 回调为 null,则该按钮将被禁用,不会对触摸做出反应,并且将按照disabledColor 属性(而不是 color 属性)指定的颜色进行着色。

\n
\n