希望这里是一个简单的
我有一些浮动按钮,它们带有动画。它们似乎没有触发我的onPressed代码,尽管我在日志中确实获得了“ ViewPostImeInputStage processPointer 0”和1类事件,但似乎什么也没做。
一个按钮:
Widget dice() {
return Container(
child: FloatingActionButton(
elevation: 5.0,
backgroundColor: Theme.of(context).accentColor,
heroTag: null,
onPressed: _rollDice,
tooltip: 'Inbox',
child: SizedBox(
height: 32,
width: 32,
child: Image.asset('lib/images/dice_button.png'),
),
),
);
}
应该触发的方法:
_rollDice() {
print('Dice pressed');
int rng = new Random().nextInt(20);
print(rng.toString());
}
按三次按钮的输出:
D/ViewRootImpl@b9525ac[MainActivity](11404): ViewPostImeInputStage processPointer 0
D/ViewRootImpl@b9525ac[MainActivity](11404): ViewPostImeInputStage processPointer 1
D/ViewRootImpl@b9525ac[MainActivity](11404): ViewPostImeInputStage processPointer 0
D/ViewRootImpl@b9525ac[MainActivity](11404): ViewPostImeInputStage processPointer 1
D/ViewRootImpl@b9525ac[MainActivity](11404): ViewPostImeInputStage processPointer 0
D/ViewRootImpl@b9525ac[MainActivity](11404): ViewPostImeInputStage processPointer 1
预期输出:
Dice pressed
11
Dice pressed
2
Dice pressed
18
我在这里做任何傻事吗?
答案 0 :(得分:0)
这里的问题是这是一个已转换的按钮。尽管这绝对没有什么区别,但是有关此确切问题的线程很多。如果通过将按钮转换到新位置来移动按钮,则该按钮的可单击区域将保留在其原始位置。
是的,我正确地说了。如果您在屏幕的左上角有一个按钮,并将其转换为右下角,则您将不再能够在新位置单击该按钮,因为该按钮认为它仍在左上角。 >
这绝对是智障和不可行的。
对我来说,解决方法是在目标位置上覆盖一些不透明的小部件,这些小部件不可见,而在这些小部件上触发onclick事件。我见过一个开发人员的帖子,称此大型错误“按预期工作”,因此,即使整个社区都在呼吁这样做,也不要指望它很快得到解决。
答案 1 :(得分:0)
如果您在Stack
中使用AnimatedBuider
,请用大的Container
包装。在我的情况下,一个200x200的容器可以工作。大小取决于您的过渡。
另外,您可以通过更改堆栈的alignment
属性来将按钮放置在任何地方。