message: Dispatched event so it can be handled on native side
  The useNativeDriver didn't work, the event wasn't handled on the client. Noticed how the scroll events are dispatched as Events so they can use the Animated event emitter
diff: @@ -9,6 +9,8 @@ import com.facebook.react.bridge.Arguments;
  import com.facebook.react.bridge.ReactContext;
  import com.facebook.react.bridge.WritableMap;
  import com.facebook.react.uimanager.PixelUtil;
  +import com.facebook.react.uimanager.UIManagerModule;
  +import com.facebook.react.uimanager.events.Event;
  import com.facebook.react.uimanager.events.RCTEventEmitter;
  import com.google.android.material.appbar.AppBarLayout;
  @@ -26,11 +28,35 @@ public class NavigationBarView extends AppBarLayout {
  addOnOffsetChangedListener(new OnOffsetChangedListener() {
  @Override
  public void onOffsetChanged(AppBarLayout appBarLayout, int offset) {
  - WritableMap event = Arguments.createMap();
  - event.putInt("offset", (int) PixelUtil.toDIPFromPixel(offset));
  + OffsetChangedEvent event = new OffsetChangedEvent();
  + event.init(getId(), offset);
  ReactContext reactContext = (ReactContext) getContext();
  - reactContext.getJSModule(RCTEventEmitter.class).receiveEvent(getId(),"onOffsetChanged", event);
  + reactContext.getNativeModule(UIManagerModule.class).getEventDispatcher().dispatchEvent(event);
  }
  });
  }
  +
  + static class OffsetChangedEvent extends Event<OffsetChangedEvent> {
  + private int offset;
  +
  + private OffsetChangedEvent() {
  + }
  +
  + private void init(int viewTag, int offset) {
  + super.init(viewTag);
  + this.offset = offset;
  + }
  +
  + @Override
  + public String getEventName() {
  + return "onOffsetChanged";
  + }
  +
  + @Override
  + public void dispatch(RCTEventEmitter rctEventEmitter) {
  + WritableMap event = Arguments.createMap();
  + event.putInt("offset", (int) PixelUtil.toDIPFromPixel(offset));
  + rctEventEmitter.receiveEvent(getViewTag(), getEventName(), event);
  + }
  + }
  }
  