2016-12-31 54 views
1

在我的IconButtononPressed期間,我需要更新數據庫,然後更新UI,以便用戶看到數據更改的反饋。要做到這一點,我打電話setState,它成功讓Widget重建。問題是我不再看到觸摸反饋波紋效應,因爲Widget立即重建。IconPutton在onPressed期間調用setState顯示沒有連鎖反應

var button = new IconButton(
    icon: new Icon(isMyBoolTrue ? Icons.undo : Icons.event_available), 
    onPressed:() => setState(() => toggleDatabaseBool) 
); 

回答

1

這不應該停止飛濺。飛濺停止的唯一原因是如果您在IconButton和材質之間添加或移除其中一個小工具,或者更改其鍵或更改材質的關鍵點,或者移動樹中的材質。 (他們有些是錯誤的框架,現在,我希望能解決這些問題在未來幾個月內。)

你可以發佈一個最小的應用程序,說明什麼問題?

同時,我們正在追蹤這個問題在https://github.com/flutter/flutter/issues/6751https://github.com/flutter/flutter/issues/5456

+0

你是什麼意思 「即」?問題中的例子或答案中的例子?另外,是否有鏈接到您所指的錯誤?謝謝! –

+0

我的意思是問題中的代碼。 –

+0

錯誤是https://github.com/flutter/flutter/issues/6751和https://github.com/flutter/flutter/issues/5456。 –

2

的問題是我跟中build這是重新創建每次對象創建ObjectKey。通過使用ObjectKey和我的對象的id字段來解決問題,而不是對象本身。

var card = new Card(
    key: new ObjectKey(goal), //the goal object was re-created during `build` 
    child: button 
); 

var card = new Card(
    key: new ObjectKey(goal.id), // need to key off of the id field as it remains constant 
    child: button 
);