我正在尝试显示一些文本,而以前没有文本。它应该在单击按钮时发生。该按钮也应该更改bool
变量true
,以便类似if
的语句可以验证是否单击了该按钮。该按钮的代码如下所示:
child: GestureDetector(
onTap: () {
ButtonPushed = true;
}
...
但是我不知道如何创建一个语句,该语句检查ButtonPushed
是否等于true
,然后仅执行代码行,以在屏幕按钮上方的某处显示文本。
提前感谢您的回答!
创建StatefulWidget
。将_clicked
状态存储在状态中,并在按下按钮时进行更改。在构建方法上,基于_clicked
的值显示或隐藏。
class MyHomePage extends StatefulWidget {
MyHomePage({Key key}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
bool _clicked = false;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
children: <Widget>[
if (_clicked) Text('Button is clicked'),
FlatButton(
onPressed: () {
setState(() {
_clicked = true;
});
},
child: Text('Click me')
),
],
),
),
);
}
}
要显示/隐藏文本,我只是使用if (condition) Widget(),
。因为窗口小部件放置在窗口小部件列表内(列的children属性接受窗口小部件列表)。您也可以使用类似的内容:
child: _clicked ? Text('clicked') : null,
如果此代码由于小部件不接受空子代而崩溃,则可以尝试以下方法:
child: _clicked ? Text('clicked') : SizedBox(),
检查颤动参考:
简单地做:
bool myBool = false;
FlatButton(
onPressed: () {
setState(() {
myBool = !myBool;
});
},
child: Text(
"Press me",
),
),
Visibility(
visible : myBool,
child: Text("Hello"),
)
这里是codepen,正在运行。