onInit method

  1. @override
void onInit()
override

Called immediately after the widget is allocated in memory. You might use this to initialize something for the controller.

Implementation

@override
void onInit() {
  super.onInit();
  _observer = TUIRoomObserver(
    onUserVoiceVolumeChanged: (volumeMap) {
      if (!RoomStore.to.isSharing.value ||
          _speakingUserUpdateTimer?.isActive == true) {
        return;
      }
      var speakingUserId = volumeMap.entries
          .firstWhere(
            (entry) => entry.value >= 10,
            orElse: () => const MapEntry<String, int>('', -1),
          )
          .key;
      if (speakingUserId.isEmpty) {
        if (!isDraggableWidgetVisible.value) {
          return;
        }
        isDraggableWidgetVisible.value = false;
        speakingUser.value = UserModel();
        return;
      }
      speakingUser.value =
          RoomStore.to.getUserById(speakingUserId) ?? UserModel();
      isDraggableWidgetVisible.value = true;
      _speakingUserUpdateTimer = Timer(const Duration(seconds: 5), () {});
    },
  );
  RoomEngineManager().addObserver(_observer);
}