2016-12-31 5 views
1

Во время onPressed моего IconButton Мне нужно обновить базу данных, а затем пользовательский интерфейс, чтобы пользователь увидел обратную связь при изменении данных. Для этого я вызываю setState, который успешно восстанавливает Widget. Проблема в том, что я больше не вижу эффект пульсации обратной связи, потому что Widget немедленно восстанавливается.IconButton, вызывающий setState во время onPressed, не показывает эффекта пульсации

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

ответ

1

Это не должно останавливать всплеск. Единственная причина, по которой остановится всплеск, заключается в том, что вы добавляете или удаляете один из виджетов между IconButton и Материалом или меняете его ключ или меняете ключ материала или перемещаете материал в дереве. (Некоторые из них являются ошибками в рамках прямо сейчас, я надеюсь исправить их в ближайшие месяцы.)

Можете ли вы разместить минимальное приложение, которое показывает проблему?

Между тем, мы отслеживание вопроса на https://github.com/flutter/flutter/issues/6751 и https://github.com/flutter/flutter/issues/5456

+0

Что вы имеете в виду "что"? Пример в вопросе или пример в ответе? Кроме того, есть ли ссылка на ошибки, на которые вы ссылаетесь? Благодаря! –

+0

Я имел в виду код в вопросе. –

+0

Ошибки: https://github.com/flutter/flutter/issues/6751 и https://github.com/flutter/flutter/issues/5456. –

2

Этого вопроса я создавала ObjectKey с объектом, который был создан заново каждый раз, когда во время build. Решили проблему, используя ObjectKey и поле id моего объекта вместо самого объекта.

Bad

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 
); 

 Смежные вопросы

  • Нет связанных вопросов^_^