简体中文 | English

## TRTC SDK （Flutter）

API OverView，API Detailed documentation

Demonstrates how to use RTC APIs for Flutter. API Example

Note: Demo does not support simulator operation. Please use real machine development and debugging.

#### Demo quick start

Please see Demo Quick Start(Flutter)

#### SDK quick integration

Please see Quick integration(Flutter)

#### SDK class files

- trtc_cloud-Tencent Cloud TRTC Core Function Interface.
- trtc_cloud_video_view-Provides widgets for rendering video `TRTCCloudVideoView`.
- tx_audio_effect_manager-Tencent Cloud Audio Effect Management Module.
- tx_beauty_manager-Beauty filter and animated effect parameter management.
- tx_device_manager-Tencent Cloud Audio Effect Management Module.
- trtc_cloud_def-TRTC key class definition Description: definitions of interfaceerated and constant values such as resolution and quality level
- trtc_cloud_listener-Tencent Cloud TRTC Event Notification Interface.

#### Sample call

1.Initialization

    // Create TRTCCloud singleton
    trtcCloud = await TRTCCloud.sharedInstance();
    // Tencent Cloud Audio Effect Management Module
    txDeviceManager = trtcCloud.getDeviceManager();
    // Beauty filter and animated effect parameter management
    txBeautyManager = trtcCloud.getBeautyManager();
    // Tencent Cloud Audio Effect Management Module
    txAudioManager = trtcCloud.getAudioEffectManager();

2.Room entry/exit

    // Room entry/exit
    trtcCloud.enterRoom(
            TRTCParams(
                sdkAppId: sdkAppId,
                userId: userId,
                userSig: userSig,
                roomId: roomId),
            TRTCCloudDef.TRTC_APP_SCENE_VIDEOCALL);
    // Leave a room
    trtcCloud.exitRoom();

3.Listener registration

    // Register a listener
    trtcCloud.registerListener(onRtcListener);
    onRtcListener(type, param) {
      // Callback for room entry
      if (type == TRTCCloudListener.onEnterRoom) {
        if (param > 0) {
          showToast('Entered the room successfully');
        }
      }
      // Callback for the entry of a remote user
      if (type == TRTCCloudListener.onRemoteUserEnterRoom) {
        // The parameter is the user ID of the remote user.
      }
      // Whether the remote user has a playable primary image (generally for camera)
      if (type == TRTCCloudListener.onUserVideoAvailable) {
        //param['userId'] is the user ID of the remote user
        //param['visible'] indicates whether image is enabled
      }
    }
    //Remove a listener
    trtcCloud.unRegisterListener(onRtcListener);

4.Playing local video

    // Parameters:
    // frontCamera: `true`: front camera; `false`: rear camera
    // viewId: view ID generated by `TRTCCloudVideoView`
    TRTCCloudVideoView(
        onViewCreated: (viewId) {
          trtcCloud.startLocalPreview(true, viewId);
    });

5.Display remote video

    // Parameters:
    // userId: Specifies the userid of the remote user
    // streamType: Specifies the type of video stream to watch userid：
    //* HD big picture：TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG
    //* Low definition large picture：TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_SMALL
    // viewId: view ID generated by `TRTCCloudVideoView`
    TRTCCloudVideoView(
        onViewCreated: (viewId) {
          trtcCloud.startRemoteView(userId, TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_SMALL, viewId);
    });

5.Display remote screen sharing

    /// Parameters:
    /// userId: Specifies the userid of the remote user
    /// streamType: type of the remote user’s video stream to play:
    ///* Substream (screen sharing): TRTCCloudDe.TRTC_VIDEO_STREAM_TYPE_SUB
    /// viewId: view ID generated by `TRTCCloudVideoView`
    TRTCCloudVideoView(
        onViewCreated: (viewId) {
          trtcCloud.startRemoteView(userId, TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_SUB, viewId);
    });

#### How do I view TRTC logs?

TRTC logs are compressed and encrypted by default with the XLOG extension. You can set setLogCompressEnabled to specify whether to encrypt logs. If a log filename contains C (compressed), the log is compressed and encrypted; if it contains R (raw), the log is in plaintext.

- iOS：Documents/log of the application sandbox
- Android
  - 6.7 or below: /sdcard/log/tencent/liteav
  - 6.8 or above: /sdcard/Android/data/package name/files/log/tencent/liteav/

#### Common problem

##### IOS cannot display video (Android is good)

Please confirm io.flutter.embedded_views_preview is `YES` in your info.plist

##### Android Manifest merge failed

Please Open '/example/android/app/src/main/AndroidManifest.xml' file。

1.Add xmlns:tools="http://schemas.android.com/tools" to manifest

2.Add tools:replace="android:label" to application

## Libraries

trtc_cloud
trtc_cloud_def
trtc_cloud_listener
trtc_cloud_video_view
tx_audio_effect_manager
tx_beauty_manager
tx_device_manager