Я использую материал Flutter slider.dart, и официальный виджет поддерживает обратные вызовы для onChanged
, onChangeEnd
и onChangeStart
.Эти начальные и конечные обратные вызовы немного странны, хотя они запускаются при быстром нажатии ползунка, а также касании и скольжении ползунка, который все еще удерживается, и затем они запускаются снова, когда отпущен большой палец ползунка.Что мне действительно нужно знать, так это когда ПОЛНОСТЬЮ отпущен ползунок (от быстрого нажатия ИЛИ от прикосновения и скольжения).
Итак, я нашел способ отредактировать .../flutter/packages/flutter/lib/src/Material/slider.dart
таким образом, чтобы выводить на консоль нужный мне статус.Я смотрю на все вызовы handleEvent и добавляю следующее, чтобы узнать, когда касание было вверх или вниз ( см. Изменение с помощью event.runtimeType ):
@override
void handleEvent(PointerEvent event, BoxHitTestEntry entry) {
if (event.runtimeType == PointerDownEvent) {
_touchActive = true;
print("---------Down!---------");
} else if (event.runtimeType == PointerUpEvent) {
_touchActive = false;
print("---------Up!---------");
}
assert(debugHandleEvent(event, entry));
if (event is PointerDownEvent && isInteractive) {
// We need to add the drag first so that it has priority.
_drag.addPointer(event);
_tap.addPointer(event);
}
}
Но теперь мне нужно как-то получитьэти данные возвращаются из виджета с помощью обратного вызова.Обратный вызов может быть похож на любой из трех упомянутых ранее, таких как onChangeStart или onChangeEnd, но я не уверен, где все, что мне нужно обновить, чтобы создать это.Может кто-нибудь помочь указать мне, как это добавить?