📜  onpressed null 颤振 - Dart (1)

📅  最后修改于: 2023-12-03 15:18:06.866000             🧑  作者: Mango

Flutter中'OnPressed null'颤振问题解决

在Flutter中,许多开发人员会遇到一个问题,就是在使用onPressed时,当值为null时,便会出现按钮颤振的问题。如何解决这个问题呢?本文将会提供一些解决方法和建议。

问题描述

当我们在实现一个按钮并给它设置onPressed方法时,我们有时会遇到onPressed值为null的情况。例如,在下面的代码中:

RaisedButton(
  onPressed: null,
  child: Text('Button'),
),

当我们运行这段代码时,我们会发现按钮会出现颤振的问题。这是因为当onPressed值为null时,按钮会尝试使用默认行为,也就是禁用按钮。因此,在Flutter中,当你尝试去禁用一个禁用状态的按钮时,它会振颤。

解决方案

以下是几种解决方案和建议:

1. 使用ElevatedButton代替RaisedButton

RaisedButton已经被弃用了,Flutter推荐你使用ElevatedButton代替。因此,当你使用ElevatedButton时,即使onPressed值为null,按钮也不会振颤,而是依旧维持在禁用状态。

ElevatedButton(
  onPressed: null,
  child: Text('Button'),
),
2. 使用带参回调

当我们需要对按钮的状态进行修改时,我们可以通过使用带参回调函数来避免颤振问题。例如,下面的代码中,当我们点击按钮时,会输出一条消息。当_isEnabled值为false时,禁用按钮。而当_isEnabled为true时,则解除禁用。

bool _isEnabled = false;

void _onButtonClicked() {
  print('Button clicked!');
}

ElevatedButton(
  onPressed: _isEnabled ? _onButtonClicked : null,
  child: Text('Button'),
),
3. 使用三元运算符

当我们不需要修改按钮的状态时,我们可以使用三元运算符来避免颤振问题。例如,下面的代码中,_isEnabled值为false时,禁用按钮。当_isEnabled为true时,将按钮的onPressed值设置为一个空函数。

bool _isEnabled = false;

ElevatedButton(
  onPressed: _isEnabled ? () => {} : null,
  child: Text('Button'),
),
结论

在这篇文章中,我们提供了几种解决方案来解决Flutter中的onPressed值为null时,按钮振颤的问题。无论你是使用ElevatedButton代替RaisedButton、使用带参回调函数、还是使用三元运算符,我们希望这篇文章可以对你有所帮助。