gpt4 book ai didi

android - 如何检查按钮是否被按下

转载 作者:IT王子 更新时间:2023-10-29 07:14:53 24 4
gpt4 key购买 nike

我需要一个点赞按钮,点击一次点赞数量会增加,第二次点击点赞数量会减少,如何判断按钮是否被点击

这是我的 customer flutter widget 练习

按钮小部件

lass ButtonBuilder extends StatefulWidget{
final Icon icon;

ButtonBuilder({this.icon,});

_ButtonBuilderState createState()=>_ButtonBuilderState(this.icon);
}

class _ButtonBuilderState extends State<ButtonBuilder>{
final Icon _icon;

_ButtonBuilderState(this._icon);

final _bloc=ButtonCounterBloc();

@override
Widget build(BuildContext context) {
return RootButton(
child: StreamBuilder(
stream: _bloc.counter,
initialData: 0,
builder: (BuildContext context,AsyncSnapshot snapshot){
return _buildButton(_icon,'${snapshot.data}');
},
),
);
}

_buildButton(Icon _icon,String _text){
return Column(
children: <Widget>[
IconButton(
icon: _icon,
onPressed: ()=>_bloc.buttonEventSink.add(FirstOnPressedEvent()),
),
Text(_text),
],
);
}
}

main.dart

class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);

final String title;

@override
_MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ButtonBuilder(icon: Icon(Icons.thumb_up),),
ButtonBuilder(icon: Icon(Icons.thumb_down),),
],
),
),
);
}
}

我不知道如何检查按钮是否被点击

最佳答案

您可以将名为 isPressed 的标志初始设置为 false,每次按下按钮时都会取消该标志。

onPressed 回调中,您可以根据变量编写不同的逻辑。

但您应该记住,在下面的示例中,一旦按钮宽度的 State 被释放,_isPressed 变量将被重置。

如果你希望有一个持久化按钮,你可以在 ButtonCounterBloc 中添加一个类似的参数,并将它的值赋给 initState 中的 _isPressed _ButtonBuilderState 类的方法。

这样,即使应用重新启动或状态被释放并再次安装,您的按钮也将保持不变。

class ButtonBuilder extends StatefulWidget{
final Icon icon;

ButtonBuilder({this.icon,});

_ButtonBuilderState createState()=>_ButtonBuilderState(this.icon);
}

class _ButtonBuilderState extends State<ButtonBuilder>{
final Icon _icon;

_ButtonBuilderState(this._icon);

final _bloc=ButtonCounterBloc();
bool _isPressed = false;

@override
Widget build(BuildContext context) {
return RootButton(
child: StreamBuilder(
stream: _bloc.counter,
initialData: 0,
builder: (BuildContext context,AsyncSnapshot snapshot){
return _buildButton(_icon,'${snapshot.data}');
},
),
);
}

_buildButton(Icon _icon,String _text){
return Column(
children: <Widget>[
IconButton(
icon: _icon,
onPressed: () {
setState(() {
_isPressed = !_isPressed;
});
if(_isPressed) {
// This block will be executed when button is pressed odd number of times.
_bloc.buttonEventSink.add(FirstOnPressedEvent());
} else {
// This block will be executed when button is pressed even number of times;
}
}
),
Text(_text),
],
);
}
}

关于android - 如何检查按钮是否被按下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57708212/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com