Dart 如何知道在颤振中点击了哪个按钮?
我遇到了一个问题: 但是有没有更好的方法来检测哪个按钮被点击了呢? 前任。 我为循环创建了100个按钮,那么怎么知道呢?在iOS中,我们使用的是标记属性,因此如果有这种选项,那么它将非常便于检测 编辑: 下面是我的代码Dart 如何知道在颤振中点击了哪个按钮?,dart,flutter,Dart,Flutter,我遇到了一个问题: 但是有没有更好的方法来检测哪个按钮被点击了呢? 前任。 我为循环创建了100个按钮,那么怎么知道呢?在iOS中,我们使用的是标记属性,因此如果有这种选项,那么它将非常便于检测 编辑: 下面是我的代码 List<Widget> pageCurrentPageIndicator(int currentIndex, int totoalCount) { List<Widget> tempWidget = new List<Widget>(
List<Widget> pageCurrentPageIndicator(int currentIndex, int totoalCount) {
List<Widget> tempWidget = new List<Widget>();
for (var i = 0; i < totoalCount; i++) {
Container container = Container(
width: 47.0,
height: 30.0,
child: FlatButton(
child: Image.asset(
(i == currentIndex
? 'lib/assets/radioBtnActive.png'
: 'lib/assets/radioBtn.png'),
fit: BoxFit.contain), onPressed: () {
whichButtonistaped(i);
},
)
);
tempWidget.add(container);
}
return tempWidget;
}
void whichButtonistaped(int btnTag){
print(btnTag);
setState(() {
currentBannerIndex = btnTag;
});
}
List pageCurrentPageIndicator(int-currentIndex,int-totoalCount){
List tempWidget=新列表();
对于(变量i=0;i
为每个按钮分配一个不同的回调
void onPress(int id) {
print('pressed $id');
}
Widget build(BuildContext context) {
return Row(
children: [
RaisedButton(onPressed: () => onPress(0),),
RaisedButton(onPressed: () => onPress(1),),
],
);
}
为每个按钮分配一个不同的回调
void onPress(int id) {
print('pressed $id');
}
Widget build(BuildContext context) {
return Row(
children: [
RaisedButton(onPressed: () => onPress(0),),
RaisedButton(onPressed: () => onPress(1),),
],
);
}
我建议使用小部件的
键
属性
以下是一个解决方案:
Widget build(BuildContext context) {
return Row(
children: [
TagButton(onPressed: (k) => onPress(k)),
TagButton(onPressed: (k) => onPress(k)),
],
);
}
void onPress(Key id) {
print('pressed $id');
}
使用以下自定义小部件:
typedef TagButtonPressedCallBack = void Function(Key key);
class TagButton extends StatelessWidget {
final TagButtonPressedCallBack onPressed;
agButton({
this.onPressed,
}) : super(key: UniqueKey());
@override
Widget build(BuildContext context) {
return RaisedButton(onPressed: () {
if (onPressed != null) onPressed(key);
});
}
}
输出:
I/flutter ( 6371): pressed [#2ca50]
I/flutter ( 6371): pressed [#2180d]
I/flutter ( 6371): pressed [#2ca50]
该解决方案为您提供TagButton
小部件的唯一标识符
如果您想在
标记按钮
中找到RaisedButton
的id,可以在构建
方法中生成一个键
,并将其传递给RaisedButton
,如下所示:
typedef TagButtonPressedCallBack = void Function(Key key);
class TagButton extends StatelessWidget {
final TagButtonPressedCallBack onPressed;
TagButton({
Key key,
this.onPressed,
}) : super(key: key);
@override
Widget build(BuildContext context) {
var k = UniqueKey();
return RaisedButton(
key: k,
onPressed: () {
if (onPressed != null) onPressed(k);
});
}
}
我建议使用小部件的
键
属性
以下是一个解决方案:
Widget build(BuildContext context) {
return Row(
children: [
TagButton(onPressed: (k) => onPress(k)),
TagButton(onPressed: (k) => onPress(k)),
],
);
}
void onPress(Key id) {
print('pressed $id');
}
使用以下自定义小部件:
typedef TagButtonPressedCallBack = void Function(Key key);
class TagButton extends StatelessWidget {
final TagButtonPressedCallBack onPressed;
agButton({
this.onPressed,
}) : super(key: UniqueKey());
@override
Widget build(BuildContext context) {
return RaisedButton(onPressed: () {
if (onPressed != null) onPressed(key);
});
}
}
输出:
I/flutter ( 6371): pressed [#2ca50]
I/flutter ( 6371): pressed [#2180d]
I/flutter ( 6371): pressed [#2ca50]
该解决方案为您提供TagButton
小部件的唯一标识符
如果您想在
标记按钮
中找到RaisedButton
的id,可以在构建
方法中生成一个键
,并将其传递给RaisedButton
,如下所示:
typedef TagButtonPressedCallBack = void Function(Key key);
class TagButton extends StatelessWidget {
final TagButtonPressedCallBack onPressed;
TagButton({
Key key,
this.onPressed,
}) : super(key: key);
@override
Widget build(BuildContext context) {
var k = UniqueKey();
return RaisedButton(
key: k,
onPressed: () {
if (onPressed != null) onPressed(k);
});
}
}
没有太多的解决方案可用于此,可用的是静态按钮,这对我不起作用。以下是我在项目中为多个动态浮动ActionButtons所做的工作 为每个按钮分配动态id的自定义按钮类:
class FAB extends StatelessWidget {
final int id;
final Function(int) onPressed;
final String buttonText;
const FAB({this.id, this.onPressed, this.buttonText});
@override
Widget build(BuildContext context) {
return FloatingActionButton(
onPressed: () {onPressed(this.id);},
backgroundColor: Colors.blue,
child: new Text(this.buttonText,
style: new TextStyle(fontSize: 25.0))
);
}
}
new FAB(
id: id,
onPressed: buttonFunction,
buttonText: 'Button Text'
)
buttonFunction(id) {
print('Button id: $id');
}
使用上面的类创建按钮:
class FAB extends StatelessWidget {
final int id;
final Function(int) onPressed;
final String buttonText;
const FAB({this.id, this.onPressed, this.buttonText});
@override
Widget build(BuildContext context) {
return FloatingActionButton(
onPressed: () {onPressed(this.id);},
backgroundColor: Colors.blue,
child: new Text(this.buttonText,
style: new TextStyle(fontSize: 25.0))
);
}
}
new FAB(
id: id,
onPressed: buttonFunction,
buttonText: 'Button Text'
)
buttonFunction(id) {
print('Button id: $id');
}
按钮功能:
class FAB extends StatelessWidget {
final int id;
final Function(int) onPressed;
final String buttonText;
const FAB({this.id, this.onPressed, this.buttonText});
@override
Widget build(BuildContext context) {
return FloatingActionButton(
onPressed: () {onPressed(this.id);},
backgroundColor: Colors.blue,
child: new Text(this.buttonText,
style: new TextStyle(fontSize: 25.0))
);
}
}
new FAB(
id: id,
onPressed: buttonFunction,
buttonText: 'Button Text'
)
buttonFunction(id) {
print('Button id: $id');
}
参考资料:这方面的解决方案不多,可用的解决方案是静态按钮,对我不起作用。以下是我在项目中为多个动态浮动ActionButtons所做的工作 为每个按钮分配动态id的自定义按钮类:
class FAB extends StatelessWidget {
final int id;
final Function(int) onPressed;
final String buttonText;
const FAB({this.id, this.onPressed, this.buttonText});
@override
Widget build(BuildContext context) {
return FloatingActionButton(
onPressed: () {onPressed(this.id);},
backgroundColor: Colors.blue,
child: new Text(this.buttonText,
style: new TextStyle(fontSize: 25.0))
);
}
}
new FAB(
id: id,
onPressed: buttonFunction,
buttonText: 'Button Text'
)
buttonFunction(id) {
print('Button id: $id');
}
使用上面的类创建按钮:
class FAB extends StatelessWidget {
final int id;
final Function(int) onPressed;
final String buttonText;
const FAB({this.id, this.onPressed, this.buttonText});
@override
Widget build(BuildContext context) {
return FloatingActionButton(
onPressed: () {onPressed(this.id);},
backgroundColor: Colors.blue,
child: new Text(this.buttonText,
style: new TextStyle(fontSize: 25.0))
);
}
}
new FAB(
id: id,
onPressed: buttonFunction,
buttonText: 'Button Text'
)
buttonFunction(id) {
print('Button id: $id');
}
按钮功能:
class FAB extends StatelessWidget {
final int id;
final Function(int) onPressed;
final String buttonText;
const FAB({this.id, this.onPressed, this.buttonText});
@override
Widget build(BuildContext context) {
return FloatingActionButton(
onPressed: () {onPressed(this.id);},
backgroundColor: Colors.blue,
child: new Text(this.buttonText,
style: new TextStyle(fontSize: 25.0))
);
}
}
new FAB(
id: id,
onPressed: buttonFunction,
buttonText: 'Button Text'
)
buttonFunction(id) {
print('Button id: $id');
}
参考资料:请查看我的更新。我知道这种方法,但还有其他方法可用吗?不,这是唯一的方法。为什么当0和1来自循环中的索引时,这种方法不起作用?请检查我的更新。我知道这种方法,但还有其他方法吗?不,这是唯一的方法。为什么当0和1来自循环中的索引时,这种方法不起作用?