我刚开始掌握Flutter的窍门,但我不知道如何设置按钮的启用状态。
从文档中,它说将onPressed设置为null来禁用按钮,并给它一个值来启用它。如果按钮在生命周期中继续处于相同的状态,这是没问题的。
我得到的印象是,我需要创建一个自定义的有状态小部件,它将允许我以某种方式更新按钮的启用状态(或onPressed回调)。
我的问题是我该怎么做?这似乎是一个非常简单的要求,但我在文档中找不到任何关于如何做到这一点的东西。
谢谢。
我刚开始掌握Flutter的窍门,但我不知道如何设置按钮的启用状态。
从文档中,它说将onPressed设置为null来禁用按钮,并给它一个值来启用它。如果按钮在生命周期中继续处于相同的状态,这是没问题的。
我得到的印象是,我需要创建一个自定义的有状态小部件,它将允许我以某种方式更新按钮的启用状态(或onPressed回调)。
我的问题是我该怎么做?这似乎是一个非常简单的要求,但我在文档中找不到任何关于如何做到这一点的东西。
谢谢。
当前回答
简单的答案是onPressed: null给出一个禁用按钮。
其他回答
这是在Flutter中禁用按钮的最简单的方法是将空值分配给onPressed
ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Colors.blue, // background
onPrimary: Colors.white, // foreground
),
onPressed: null,
child: Text('ElevatedButton'),
),
大多数小部件的启用和禁用功能是相同的。
前,按钮,开关,复选框等。
只需设置onPressed属性,如下所示
onPressed: null返回禁用小部件
onPressed:(){}或onPressed: _functionName返回启用的小部件
在我看来,这是最简单的方法:
RaisedButton(
child: Text("PRESS BUTTON"),
onPressed: booleanCondition
? () => myTapCallback()
: null
)
禁用点击:
onPressed: null
可以点击:
onPressed: () => fooFunction()
// or
onPressed: fooFunction
组合:
onPressed: shouldEnable ? fooFunction : null
对于特定且数量有限的小部件,将它们包装在小部件IgnorePointer中正是这样做的:当它的忽略属性被设置为true时,子小部件(实际上是整个子树)是不可点击的。
IgnorePointer(
ignoring: true, // or false
child: RaisedButton(
onPressed: _logInWithFacebook,
child: Text("Facebook sign-in"),
),
),
否则,如果您打算禁用整个子树,请查看AbsorbPointer()。