[英]FloatingActionButton onpressed() not working in flutter
[英]FloatingActionButton onPressed not triggering
希望這里是一個簡單的。
我有動畫的浮動按鈕。 它們似乎沒有觸發我的 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
我在這里做什么傻事?
這里的問題是它是一個經過改造的按鈕。 雖然這應該沒有什么區別,但有大量關於這個確切問題的線程。 如果通過將按鈕轉換到新位置來移動按鈕,按鈕的可點擊區域將保留在其原始位置。
是的,我說得對。 如果您在屏幕左上角有一個按鈕,並且您將其轉換到右下角,您將無法再在其新位置單擊該按鈕,因為該按鈕認為它仍在左上角。
這絕對是遲鈍和行不通的。
我的解決方法是在目標位置覆蓋一些不可見的不透明度小部件,並讓 onclick 事件在這些小部件上觸發。 我看到一個開發人員的帖子稱這個巨大的錯誤“按預期工作”,所以不要指望這個問題會很快得到修復,即使整個社區都在呼吁它。
如果你在AnimatedBuider
中使用Stack
,那么用一個大的Container
包裹它。 一個 200x200 的容器在我的情況下工作。 大小取決於您的過渡。 此外,您可以通過更改堆棧的alignment
屬性將按鈕放置在任何位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.