我目前有一个也可以完美工作的步进器,但我有一个问题:如何在第一步禁用后退按钮,但在其他步骤中应该显示它。
\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 ),```\nRun Code Online (Sandbox Code Playgroud)\n
如果我理解正确的话,您想有条件地禁用“取消”按钮。
\n\n您将需要知道它是否是第一个屏幕。假设您将其保存在一个名为 的变量中,isFirstScreen并将其传递给您的controlsBuilder方法。然后,您可以在处理程序上使用三元运算符禁用该按钮,onPressed如下所示:
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),\nRun Code Online (Sandbox Code Playgroud)\n\n来自 Flutter FlatButton 文档:
\n\n\n\n如果 onPressed 回调为 null,则该按钮将被禁用,不会对触摸做出反应,并且将按照disabledColor 属性(而不是 color 属性)指定的颜色进行着色。
\n
| 归档时间: |
|
| 查看次数: |
7031 次 |
| 最近记录: |