希望这里简单一点。
我有动画的浮动按钮。它们似乎没有触发我的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
我在这做什么傻事?
这里的问题是它是一个已被转换的按钮。虽然这应该完全没有区别,但是关于这个问题存在大量的线索。如果通过将按钮转换为新位置来移动按钮,则按钮的可单击区域将保留在其ORIGINAL位置。
是的,我说得对。如果屏幕左上角有一个按钮,并且您将其转换到右下角,则您将无法再单击该按钮的新位置,因为该按钮认为它仍位于左上方。
这是绝对迟钝和不可行的。
对我来说,修复是在目标位置覆盖一些不可见的不透明小部件,并在这些小部件上触发onclick事件。我看到有一个帖子,开发人员称这个巨大的错误“按预期工作”,所以不要指望这很快就会得到解决,即使看起来整个社区都在呼唤它。