簡體   English   中英

FloatingActionButton onPressed 不觸發

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM