tcic_client_ui

TCIC Client

Tencent Cloud Real-Time Interactive Education Edition (formerly Low-Code Interactive Classroom LCIC) is a multi-functional product that integrates audio/video connectivity, interactive whiteboards, and live streaming, helping you save 90% of development work. In education, healthcare, finance, and corporate training fields, it can quickly build various interactive live streaming business scenarios such as one-on-one teaching, interactive small classes, live large classes, and live commerce.

TCIC Client is a Flutter plugin that contains all LCIC functionality. You can quickly integrate LCIC features through this plugin to implement interactive live streaming, interactive whiteboards, audio/video connectivity, and other functions.

Supported Platforms

  • Android (API 21+)
  • iOS (12.0+)

Environment Requirements

Flutter Environment

  • Flutter SDK: >=1.17.0
  • Dart SDK: ^3.7.0

Android Environment

  • Android SDK: API 21+ (Android 5.0+)
  • NDK: 27.0.12077973+
  • Java: 11+
  • Kotlin: Supported

iOS Environment

  • iOS: 12.0+
  • Xcode: 14.0+
  • CocoaPods: 1.12.0+

Dependencies

Core Dependencies

dependencies:
  # Tencent Cloud Real-Time Audio/Video SDK
  tencent_rtc_sdk: 12.6.1
  
  # Tencent Cloud IM SDK
  tencent_cloud_chat_sdk: ^8.6.7019+2
  
  # Tencent Cloud Whiteboard SDK
  tencent_cloud_whiteboard: path: ../tencent_cloud_whiteboard
  
  # Tencent Cloud Live SDK
  live_flutter_plugin: 12.6.0
  
  # Tencent Cloud COS SDK
  tencentcloud_cos_sdk_plugin_nobeacon: 1.2.4
  
  # Tencent Cloud CLS SDK
  tencentcloud_cls_sdk_dart_producer: ^0.0.2

Functional Dependencies

dependencies:
  # State Management
  get: ^4.7.2
  
  # Network Requests
  dio: ^5.8.0+1
  
  # Event Bus
  event_bus: ^2.0.1
  
  # Permission Management
  permission_handler: ^11.4.0
  
  # File Picker
  file_picker: ^10.0.0
  
  # Path Management
  path_provider: ^2.1.5
  path: ^1.9.1
  
  # UI Components
  flutter_svg: ^2.0.17
  photo_view: ^0.15.0
  expandable: ^5.0.1
  
  # Utility Libraries
  logger: ^2.5.0
  shared_preferences: ^2.5.3
  device_info_plus: ^11.4.0
  flutter_screenutil: ^5.9.3

Android Configuration

1. Permission Configuration

Add the following permissions in android/app/src/main/AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

2. Screen Recording Configuration

Add screen recording assistant Activity:

<activity 
    android:name="com.tencent.rtmp.video.TXScreenCapture$TXScreenCaptureAssistantActivity" 
    android:theme="@android:style/Theme.Translucent"/>

3. build.gradle Configuration

Configure in android/app/build.gradle.kts:

android {
    namespace = "com.tencent.tcic"
    compileSdk = flutter.compileSdkVersion
    ndkVersion = "27.0.12077973"
    
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_11
        targetCompatibility = JavaVersion.VERSION_11
    }
    
    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_11.toString()
    }
    
    defaultConfig {
        applicationId = "com.tencent.tcic"
        minSdk = flutter.minSdkVersion
        targetSdk = flutter.targetSdkVersion
    }
    
    // Resolve duplicate so file conflicts
    packagingOptions {
        pickFirst("lib/arm64-v8a/libliteavsdk.so")
        pickFirst("lib/armeabi-v7a/libliteavsdk.so")
        pickFirst("lib/x86/libliteavsdk.so")
        pickFirst("lib/x86_64/libliteavsdk.so")
    }
}

4. ProGuard Configuration

Add in android/app/proguard-rules.pro:

# Tencent Cloud SDK ProGuard Configuration
-keep class com.tencent.** { *; }
-keep class com.tencent.rtc.** { *; }
-keep class com.tencent.liteav.** { *; }
-keep class com.tencent.trtc.** { *; }
-keep class com.tencent.imsdk.** { *; }
-keep class com.tencent.tls.** { *; }

# Flutter Related
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }

iOS Configuration

1. Permission Configuration

Add the following permission descriptions in ios/Runner/Info.plist:

<!-- Camera Permission -->
<key>NSCameraUsageDescription</key>
<string>Video calls require camera permission.</string>

<!-- Microphone Permission -->
<key>NSMicrophoneUsageDescription</key>
<string>Voice calls require microphone permission.</string>

<!-- Network Configuration -->
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

<!-- Background Modes -->
<key>UIBackgroundModes</key>
<array>
    <string>fetch</string>
</array>

<!-- Screen Recording Extension -->
<key>com.apple.security.application-groups</key>
<array>
    <string>group.com.tencent.comm.tcic.sharescreen</string>
</array>

2. Podfile Configuration

Configure in ios/Podfile:

platform :ios, '12.0'

target 'Runner' do
  use_frameworks!
  use_modular_headers!
  
  flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
  
  # Resolve Dependency Conflicts
  post_install do |installer|
    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '12.0'
        config.build_settings['ENABLE_BITCODE'] = 'NO'
        config.build_settings['VALID_ARCHS'] = 'arm64 x86_64'
      end
    end
  end
end

3. Screen Recording Extension

If screen recording functionality is needed, you need to add ReplayKit extension:

  1. Create Broadcast Upload Extension in Xcode
  2. Configure Info.plist and permissions
  3. Implement screen recording logic

Prerequisites

Before using TCIC Client, you need to complete the following prerequisites:

Step 1: Create a New Application

  1. Log in to the Real-Time Interactive Education Edition Console, go to the Overview in the left navigation bar, and select "Create New Application".
  2. If you haven't created an application yet, you'll enter the "Create Application" interface by default. Enter an application name, such as TestLCIC.
  3. If you already have an application, you can go to Application Management and select to use an existing application.

Note: Each account can receive one free trial application. If you need to create a commercial application, you can create the corresponding version application on the purchase page according to your business needs. Application names only allow underscores, numbers, or Chinese and English characters.

Step 2: Get SDKAppId and Secret Key

  1. Go to Application Management > Application Configuration to get the SDKAppId.
  2. Go to Access Management (CAM) Console to get the secret key. If you don't have a secret key, you need to create one in API Key Management. For details, see Access Key Management.

Step 3: Get Parameters Required for Entering Classroom

  1. Call the cloud API interface RegisterUser to register a user, and you can get the corresponding user ID (userid) information.
  2. Call the cloud API interface LoginUser to log in, and you can get the user authentication token information.
  3. Call the cloud API interface CreateRoom to create a classroom, and you can get the classroom ID (classid) information.
Field Type Meaning Remarks Required
userid string Username Obtained through the RegisterUser interface. Yes
classid string Classroom ID Obtained through the CreateRoom interface creation return. Yes
token string Background authentication parameter Obtained through the LoginUser interface. Yes
role string Role for entering classroom, default empty Optional parameter supervisor (supervision/content review), only registered application supervision users have permission. No
lng string Language parameter, default zh-CN Currently supports Chinese (Simplified), Chinese (Traditional), English, Korean, Japanese, Arabic, Vietnamese. You can concatenate corresponding parameters to display the corresponding language. Parameters: zh-CN, zh-TW, en-US, ka, ja, ar, vi. No
location boolean Whether to report latitude and longitude location information Default false, not reported. No
layout string Page layout Default top layout (top), currently only valid for video document mode, supports double row layout (double), right layout (right), left layout (left), three-part layout (three). No
boardColor string Whiteboard color Whiteboard color setting, default is: #182E25, supports Hex format, also supports rgba(0, 0, 0, .3) setting. No
noEndClass boolean Disable end class When teaching assistant enters the room with this parameter, when the teaching assistant clicks exit, "End Class" will be hidden, only showing the "Leave" button. No

Quick Start

In the prerequisites, you have already created an application and obtained the necessary classId, userId, and token parameters. Just pass these parameters to the component for use.

import 'package:tcic_client_ui/tcic_client_ui.dart';
import 'package:tcic_client_ui/controller/tcic_contoller.dart';
import 'package:tcic_client_ui/utils/model/enum/role_enum.dart';
import 'package:tcic_client_ui/utils/model/tcic_cofig_model.dart';

// Create controller
final controller = TCICController();

// Configuration parameters
final config = TCICConfig(
  userId: 'user123',  /// User ID used when registering user in prerequisite steps
  classId: 'class456', /// Classroom ID created in prerequisite steps
  role: RoleEnum.student,
  token: 'your_token_here', /// Token obtained when logging in user in prerequisite steps
  // Optional parameters
  isTestBackend: false, /// Whether to use backend test environment
);

// According to your business scenario, navigate to the classroom page
Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => TCICView(
      controller: controller,
      config: config,
    ),
  ),
);

Through the above steps, you have successfully integrated the classroom component. You can use this component in your application to implement classroom functionality.

Parameter Description

TCICView Component Parameters

Parameter Name Type Required Description
controller TCICController Yes Controller instance
config TCICConfig Yes Configuration information
callback TCICCallback No Callback function

TCICConfig Field Information

Field Name Type Required Description
userId String Yes User ID
classId String Yes Classroom ID
token String Yes Authentication token
role RoleEnum Yes User role (student/teacher, etc.)
langConfig TCICLangConfig No Language configuration
nameConfig TCICNameConfig No Name configuration
fontConfig TCICFontConfig No Font configuration
liveplayerConfig TCICLivePlayerConfig No Live player configuration
isLatestBackend bool No Whether to use the latest backend
isTestBackend bool No Whether to use the test backend
componentConfig List No Component configuration list

TCICComponentConfig Field Information

TCICComponentConfig is an abstract class used to configure various components in the classroom interface. By adding specific component configuration class instances to the componentConfig list, you can achieve custom configuration of various components.

Component Configuration Usage Example

// Create controller
final controller = TCICController();

// Configuration parameters
final config = TCICConfig(
  userId: 'user123',
  classId: 'class456',
  role: RoleEnum.student,
  token: 'your_token_here',
  // Component configuration list
  componentConfig: [
    HeaderComponentConfig(
      isShow: true,
      enableHandsUp: true,
      iconConfig: HeaderIconConfig(
        micIcon: 'custom_mic_icon.png',
        cameraIcon: 'custom_camera_icon.png',
      ),
    ),
    MemebersComponentConfig(
      enableStageUpDownAction: true,
    ),
    MessageComponentConfig(),
    SetttingComponentConfig(),
    VideoComponentConfig(),
    WhiteboardComponentConfig(),
  ],
);

// According to your business scenario, navigate to the classroom page
Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => TCICView(
      controller: controller,
      config: config,
    ),
  ),
);

HeaderComponentConfig Field Information

HeaderComponentConfig is used to configure the header component. Its field information is as follows:

Field Name Type Required Description
isShow bool No Whether to show header component (default true)
enableHandsUp bool No Whether to show hands up (default true)
enableScreenShare bool No Whether to show screen sharing (default true)
enableMessage bool No Whether to show message (default true)
enableCoureseware bool No Whether to show courseware (default true)
enableSetting bool No Whether to show settings (default true)
enableMemberList bool No Whether to show member list (default true)
showClassStatus bool No Whether to show class status (default true)
showClassTime bool No Whether to show class time (default true)
showOnlineMemberCount bool No Whether to show online member count (default true)
showQuitButton bool No Whether to show quit button (default true)
showClassLogo bool No Whether to show class logo (default true)
showClassName bool No Whether to show class name (default true)
showClassInfo bool No Whether to show class info (default true)
showNetworkStatus bool No Whether to show network status (default true)
iconConfig HeaderIconConfig No Custom header component icon configuration
headerBuilder Widget Function() No Custom entire header component
headerLeftBuilder Widget Function() No Custom header component left component
headerRightBuilder Widget Function() No Custom header component right component
headerActionsBuilder Widget Function() No Custom header component middle component

HeaderIconConfig Field Information

HeaderIconConfig is used to configure the header component icons. Its field information is as follows:

Field Name Type Required Description
micIcon String No Microphone icon
micDisableIcon String No Microphone disabled icon
cameraIcon String No Camera icon
cameraDisableIcon String No Camera disabled icon
handupIcon String No Hands up icon
screenShareIcon String No Screen sharing icon
messageIcon String No Message icon
coursewareIcon String No Courseware icon
settingIcon String No Settings icon
membersIcon String No Members icon

MemebersComponentConfig Field Information

MemebersComponentConfig is used to configure the members component. Its field information is as follows:

Field Name Type Required Description
enableStageUpDownAction bool No Whether to enable stage up/down (default true)

MessageComponentConfig Field Information

MessageComponentConfig is used to configure the message component. Its field information is as follows:

Field Name Type Required Description
messageItemBuilder Widget Function(V2TimMessage) No Message Item builder
messageHeaderBuilder Widget Function(V2TimMessage) No Message header builder
messageBubbleBuilder Widget Function(V2TimMessage, Widget) No Message bubble builder
messageRowBuilder Widget Function(V2TimMessage) No Message row builder

SetttingComponentConfig Field Information

SetttingComponentConfig is used to configure the settings component. Its field information is as follows:

Field Name Type Required Description
enableAudioSetting bool No Whether to enable audio settings (default true)
enableVideoSetting bool No Whether to enable video settings (default true)
enableGeneralSetting bool No Whether to enable general settings (default true)
showMemberJoinExitInfo bool No Whether to show member join/exit info (default true)
showMemberHansupInfo bool No Whether to show member hands up info (default true)

VideoComponentConfig Field Information

VideoComponentConfig is used to configure the video component. Its field information is as follows:

Field Name Type Required Description
videoFloatBuilder Widget Function() No Video float layer builder
videoActionBuilder Widget Function() No Video component action button builder

WhiteboardComponentConfig Field Information

WhiteboardComponentConfig is used to configure the whiteboard component. Its field information is as follows:

Field Name Type Required Description
enableCreateBoard bool No Whether to enable create board (default true)
enableBoardList bool No Whether to enable board list (default true)
enableSwitchPage bool No Whether PPT courseware can turn pages (default true)

TCICLangConfig Field Information

TCICLangConfig is used to configure language information. Its field information is as follows:

Field Name Type Required Description
lang TranslateLangEnum Yes Language type (zh, en, ja, ko, zhTw, etc.)

TranslateLangEnum Enum Values

TranslateLangEnum is used to define supported language types. Its enum values are as follows:

Enum Value Description
zh Chinese
en English
ja Japanese
ko Korean
zhTw Traditional Chinese
fr French
de German
es Spanish
ru Russian

TCICFontConfig Field Information

TCICFontConfig is used to configure font information. Its field information is as follows:

Field Name Type Required Description
fontFamily String No Font family name
fontPath String No Font file path (relative to assets directory)
fontUrl String No Font file URL (web font)
enableCustomFont bool Yes Whether to enable custom font (default false)
fontWeights Map<FontWeight, String> No Font weight configuration
fontStyles Map<FontStyle, String> No Font style configuration

FontWeight Enum Values

FontWeight is used to define font weights. Its enum values are as follows:

Enum Value Description
w100 Thin
w200 Extra Light
w300 Light
w400 Normal
w500 Medium
w600 Semi Bold
w700 Bold
w800 Extra Bold
w900 Black

FontStyle Enum Values

FontStyle is used to define font styles. Its enum values are as follows:

Enum Value Description
normal Normal
italic Italic

TCICNameConfig Field Information

TCICNameConfig is used to configure name display in different languages. Its field information is as follows:

Field Name Type Required Description
zh NameConfigInfo No Chinese name configuration
en NameConfigInfo No English name configuration
ja NameConfigInfo No Japanese name configuration
ko NameConfigInfo No Korean name configuration
zhTw NameConfigInfo No Traditional Chinese name configuration

NameConfigInfo Field Information

NameConfigInfo is used to define specific names in specific languages. Its field information is as follows:

Field Name Type Required Description
teacher String No Teacher
assistant String No Teaching Assistant
student String No Student
host String No Host
coHost String No Co-host
panelist String No Panelist
viewer String No Viewer
raiseHand String No Raise Hand
lowerHand String No Lower Hand
chat String No Chat
whiteboard String No Whiteboard
fileShare String No File Share
screenShare String No Screen Share

Callback Functions

TCICCallback supports the following callbacks:

  • onJoinedClassSuccess: Successfully joined classroom
  • afterExitedClass: After exiting classroom
  • onJoinedClassFailed: Failed to join classroom
  • onKickedOffClass: Kicked out of classroom
  • onMemberJoinedClass: Member joined classroom
  • onMemberLeaveClass: Member left classroom
  • onRecivedMessage: Received message
  • beforeExitedClass: Before exiting classroom (return false to cancel exit)
  • beforeRenderMessage: Before rendering message (return false to not render)

Common Issues

1. Permission Issues

Android Permission Denied:

  • Check if corresponding permissions are added in AndroidManifest.xml
  • Runtime permissions need to be dynamically requested in code
  • Some permissions (such as camera, microphone) require manual user authorization

iOS Permission Denied:

  • Check if permission descriptions are added in Info.plist
  • Ensure permission description text is clear and understandable
  • Some permissions will pop up authorization dialog on first use

2. Audio/Video Issues

Cannot Hear Sound:

  • Check device volume settings
  • Confirm microphone permission is authorized
  • Check audio device connection status

Cannot See Video:

  • Check camera permission is authorized
  • Confirm device camera function is normal
  • Check network connection status

3. Network Issues

Connection Failed:

  • Check network connection status
  • Confirm firewall settings
  • Verify if SDKAppId and token are correct

Audio/Video Lag:

  • Check if network bandwidth is sufficient
  • Confirm if device performance meets requirements
  • Consider reducing audio/video quality settings

4. Whiteboard Issues

Whiteboard Cannot Load:

  • Check network connection status
  • Confirm whiteboard service is normal
  • Verify whiteboard configuration parameters

Whiteboard Operations No Response:

  • Check if touch events are normal
  • Confirm whiteboard component status
  • Verify user permission settings

Technical Support

If you encounter problems during use, you can get technical support through the following ways:

Changelog

v0.0.2

  • Added component configuration functionality
  • Optimized language configuration support
  • Improved font configuration options
  • Fixed known issues

v0.0.1

  • Initial version release
  • Support for basic classroom functionality
  • Integration of audio/video, whiteboard, IM and other functions

License

This project is licensed under the Apache License 2.0.

Libraries

business_logic/all_members/all_members_obs
business_logic/class_info_obs
business_logic/component_config_obs
business_logic/cpu_monitor_obs
business_logic/ctrl_logic
business_logic/document/document_obs
business_logic/document/document_repository
business_logic/document/document_usecases
business_logic/hand_up/hand_up_info_obs
business_logic/im_message_list_obs
business_logic/international/languages/en_string
business_logic/international/languages/ja_string
business_logic/international/languages/ko_string
business_logic/international/languages/zh_string
business_logic/international/languages/zh_tw_string
business_logic/international/string_enum
business_logic/international/string_obs
business_logic/international/tcic_string
business_logic/live_steam_info_obs
business_logic/loop_stage/loop_stage
business_logic/members_info_obs
business_logic/message/message_repo
business_logic/network_obs
business_logic/network_tips/network_tip_data
business_logic/network_tips/network_tips_obs
business_logic/pip/pip
business_logic/school_info_obs
business_logic/state_info_obs
business_logic/task/task_controller
business_logic/task/task_repository
business_logic/theme/theme_obs
business_logic/tools/question_repository
business_logic/tools/tools_controller
business_logic/trtc_stream_info_obs
business_logic/ui_info_obs
business_logic/whiteboard/whiteboard_controller
const/const
const/domain
const/error_code
const/main_event
const/tcic_icons
const/ui_event
const/version
controller/tcic_contoller
controller/tcic_icon_controller
layout/animation_builder/animation_builder
layout/configurable_layout/components/animated_component
layout/configurable_layout/configurable_layout_controller
layout/configurable_layout/configurable_layout_refactored
layout/configurable_layout/factories/component_factory
layout/configurable_layout/layouts/layout_builders
layout/configurable_layout/managers/animation_manager
layout/configurable_layout/managers/auto_hide_manager
layout/configurable_layout/managers/layout_behavior_manager
layout/configurable_layout/models/layout_models
layout/custom_layout_builder/center_builder
layout/custom_layout_builder/custom_builder
layout/custom_layout_builder/headder_builder
layout/custom_layout_builder/left_bottom_builder
layout/custom_layout_builder/left_center_builder
layout/custom_layout_builder/left_top_builder
layout/custom_layout_builder/right_bottom_builder
layout/custom_layout_builder/right_center_builder
layout/custom_layout_builder/right_top_builder
layout/landscape/base_layout
layout/landscape/big_av_board_class_layout
layout/landscape/big_av_class_layout
layout/landscape/small_av_board_class_layout
layout/landscape/small_av_class_layout
layout/portrait/av_board_class_layout
layout/portrait/av_class_layout
layout/portrait/portrait_base_layout
layout/portrait/portrait_base_layout_backup
tcic_client_ui
tcic_run_app
theme/dark_theme
third_party/cos/t_cos
third_party/expandable/expandable
third_party/floating/assist/animation_helper
third_party/floating/assist/floating_animation_type
third_party/floating/assist/floating_data
third_party/floating/assist/floating_slide_type
third_party/floating/assist/Point
third_party/floating/assist/slide_stop_type
third_party/floating/base/floating_base
third_party/floating/control/common_control
third_party/floating/control/scroll_position_control
third_party/floating/floating
third_party/floating/listener/event_listener
third_party/floating/manager/floating_manager
third_party/floating/manager/scroll_position_manager
third_party/floating/utils/floating_log
third_party/floating/view/floating_view
third_party/im/im
third_party/im/tcic_im_exception
third_party/live/live
third_party/toastification/src/built_in/built_in_builder
third_party/toastification/src/built_in/layout/standard/style/factory
third_party/toastification/src/built_in/layout/standard/style/implementation/filled_style
third_party/toastification/src/built_in/layout/standard/style/implementation/flat_colored_style
third_party/toastification/src/built_in/layout/standard/style/implementation/flat_style
third_party/toastification/src/built_in/layout/standard/style/implementation/minimal_style
third_party/toastification/src/built_in/layout/standard/style/implementation/simple_style
third_party/toastification/src/built_in/layout/standard/style/style
third_party/toastification/src/built_in/layout/standard/toast/base_standard
third_party/toastification/src/built_in/layout/standard/toast/default/default_standard_toast
third_party/toastification/src/built_in/layout/standard/toast/factory
third_party/toastification/src/built_in/layout/standard/toast/minimal/minimal_standard_toast
third_party/toastification/src/built_in/layout/standard/toast/simple/simple_standard_toast
third_party/toastification/src/built_in/theme/toastification_theme
third_party/toastification/src/built_in/theme/toastification_theme_data
third_party/toastification/src/built_in/toastification_style
third_party/toastification/src/built_in/toastification_type
third_party/toastification/src/built_in/widget/common/close_button
third_party/toastification/src/built_in/widget/common/on_hover_builder
third_party/toastification/src/built_in/widget/common/toast_content
third_party/toastification/src/core/toastification
third_party/toastification/src/core/toastification_callbacks
third_party/toastification/src/core/toastification_config
third_party/toastification/src/core/toastification_item
third_party/toastification/src/core/toastification_manager
third_party/toastification/src/core/toastification_overlay_state
third_party/toastification/src/core/widget/toast_animation
third_party/toastification/src/core/widget/toast_builder
third_party/toastification/src/core/widget/toastification_config_provider
third_party/toastification/src/utils/color_utils
third_party/toastification/src/utils/common_utils
third_party/toastification/src/utils/constants_values
third_party/toastification/src/utils/toast_theme_utils
third_party/toastification/toastification
third_party/trtc/trtc
third_party/trtc/trtc_error_code_message
third_party/trtc/trtc_video_resolution_ex
ui_component/action_component/action_component
ui_component/audio_player_component/audio_player
ui_component/audio_player_component/audio_player_component
ui_component/award-animation/award
ui_component/barrage_component/barrage
ui_component/base_text/base_text
ui_component/clock_tool/clock_tool_component
ui_component/clock_tool/clock_tool_controller
ui_component/common_component/animation_component
ui_component/common_component/blinking_red_dot
ui_component/common_component/common_state
ui_component/common_component/darwer
ui_component/common_component/loading
ui_component/common_component/network_image_with_cache
ui_component/common_component/role_tag
ui_component/common_component/self_camera_handle_button
ui_component/common_component/self_enter_small_window_button
ui_component/common_component/self_exitclass_button
ui_component/common_component/self_mic_handle_button
ui_component/common_component/self_speaker_handle_button
ui_component/common_component/self_switch_camera_button
ui_component/common_component/self_unreal_bg_button
ui_component/common_component/status_svg_button
ui_component/dailog_component/class_end_dialog
ui_component/dailog_component/class_expired_dialog
ui_component/dailog_component/class_not_start_dailog
ui_component/dailog_component/enable_quic_mode_dailog
ui_component/dailog_component/exception_dailog
ui_component/dailog_component/open_camera_dailog
ui_component/dailog_component/open_mic_dailog
ui_component/dailog_component/ping_dialog
ui_component/dailog_component/quit_class_dailog
ui_component/dailog_component/self_leave_class_dialog
ui_component/dailog_component/something_error_in_im
ui_component/dailog_component/tcic_dialog
ui_component/dailog_component/upload_logs_loading_dailog
ui_component/dialog/dialog
ui_component/document_component/document_add
ui_component/document_component/document_add_info
ui_component/document_component/document_component
ui_component/document_component/document_content
ui_component/error_component/error_component
ui_component/floating_component/floating_component
ui_component/header_component/action_items/camera_toggle
ui_component/header_component/action_items/course_toggle
ui_component/header_component/action_items/handsup_toggle
ui_component/header_component/action_items/members_toggle
ui_component/header_component/action_items/message_toggle
ui_component/header_component/action_items/mic_toggle
ui_component/header_component/action_items/more_action
ui_component/header_component/action_items/screen_share_toggle
ui_component/header_component/action_items/setting_toggle
ui_component/header_component/camera_device_list
ui_component/header_component/device_info_types
ui_component/header_component/header_action_buttons
ui_component/header_component/header_component
ui_component/header_component/header_left_info
ui_component/header_component/header_portrait_component
ui_component/header_component/header_right_info
ui_component/header_component/microphone_device_list
ui_component/header_component/network_status_panel
ui_component/header_component/signal
ui_component/header_component/tools_pannel
ui_component/im_chat/avatar
ui_component/im_chat/chat_setting
ui_component/im_chat/emoji
ui_component/im_chat/im_chat
ui_component/im_chat/im_group_notification
ui_component/im_chat/im_message_row
ui_component/im_chat/im_message_textfield
ui_component/im_chat/message_item/file_element
ui_component/im_chat/message_item/image_element
ui_component/im_chat/message_item/replied_message_element
ui_component/im_chat/message_loading
ui_component/im_chat/user_selection
ui_component/im_chat/utils
ui_component/infomation_component/infomation_component
ui_component/live_component/custom_live_stream_componnet
ui_component/live_component/live_component
ui_component/live_component/live_exception
ui_component/live_component/live_player_error
ui_component/loop_stage_component/loop_stage_component
ui_component/main_view_component/main_view_component
ui_component/member_action_list/member_action/member_award
ui_component/member_action_list/member_action/member_board
ui_component/member_action_list/member_action/member_camera
ui_component/member_action_list/member_action/member_kick
ui_component/member_action_list/member_action/member_message
ui_component/member_action_list/member_action/member_mic
ui_component/member_action_list/member_action/member_share
ui_component/member_action_list/member_action/member_stage
ui_component/member_action_list/member_action_item
ui_component/member_action_list/member_action_list
ui_component/member_action_list/member_action_list_all_member_actions
ui_component/member_action_list/member_action_list_content
ui_component/member_action_list/member_action_list_content_assistant
ui_component/member_action_list/member_action_list_content_expand
ui_component/member_action_list/member_action_list_content_student
ui_component/member_action_list/member_action_list_content_tab
ui_component/member_action_list/member_action_list_content_teacher
ui_component/member_action_list/member_action_List_header
ui_component/member_action_list/member_action_list_header
ui_component/member_action_list/member_item_action_button
ui_component/member_action_list/member_item_action_pannel
ui_component/member_av_list_component/memeber_list_component
ui_component/network_tips/network_tip_banner
ui_component/network_tips/network_tips
ui_component/pip_component/pip_component
ui_component/pip_component/pip_ios_component
ui_component/question/question
ui_component/question/question_controller
ui_component/question/question_count_up
ui_component/question/question_teacher
ui_component/question/utils
ui_component/random_choose_tool/random_choose_tool
ui_component/random_choose_tool/random_choose_tool_component
ui_component/random_choose_tool/random_choose_tool_controller
ui_component/right_panel_component/right_panel
ui_component/screen_share_source/screen_share_source
ui_component/seize_answer_tool/seize_answer_tool
ui_component/seize_answer_tool/seize_answer_tool_component
ui_component/seize_answer_tool/seize_answer_tool_controller
ui_component/setting/arrow_setting_item
ui_component/setting/audio_setting
ui_component/setting/beauty_setting
ui_component/setting/general_setting
ui_component/setting/language_setting
ui_component/setting/setting
ui_component/setting/setting_component
ui_component/setting/silder_setting_item
ui_component/setting/switch_setting_item
ui_component/setting/trtc_view_scope
ui_component/setting/unreal_background_select_item
ui_component/setting/unreal_bg_data
ui_component/setting/video_setting
ui_component/share_screen/share_screen_remote
ui_component/share_screen/share_scrren_self
ui_component/skeleton_component/av_board_class_layout_skeleton
ui_component/skeleton_component/av_class_layout_skeleton
ui_component/small_window_float_component/small_window
ui_component/small_window_float_component/small_window_float
ui_component/small_window_float_component/small_window_resume_page
ui_component/timer_tool/timer_tool
ui_component/timer_tool/timer_tool_controller
ui_component/video_component/no_video
ui_component/video_component/video_component
ui_component/video_component/video_voice_volume
ui_component/video_wraper_component/video_wrap_component
ui_component/watermark_component/watermark_component
ui_component/white_board_component/white_board_component
ui_component/white_board_component/white_board_component_wraper
user_defined/callback/tcic_callback
utils/device/device_platform
utils/eventbus/tcic_eventbus
utils/font/tcic_font_manager
utils/http_client/request
utils/http_client/tcic_api_exception
utils/isolate
utils/logs/action_moudle
utils/logs/action_name
utils/logs/mxlogger
utils/logs/tcic_log
utils/model/audio/audio_info
utils/model/board_stream_config
utils/model/class_slience_mode/set_silence_mode_param
utils/model/ctrl/event/ctrl_event
utils/model/enum/class_layout_enum
utils/model/enum/class_status_enum
utils/model/enum/class_sub_type_enum
utils/model/enum/class_type_enum
utils/model/enum/command_status_enum
utils/model/enum/dailog_return_type_enum
utils/model/enum/device_enum
utils/model/enum/event_enum
utils/model/enum/get_member_list_filter_type_enum
utils/model/enum/icon_click_enum
utils/model/enum/layout_position_enum
utils/model/enum/live_stream_type
utils/model/enum/main_process_breaken_event_enum
utils/model/enum/meber_role_enum
utils/model/enum/member_action_type_enum
utils/model/enum/member_status_enum
utils/model/enum/platform_enum
utils/model/enum/right_pannel_action_type_enum
utils/model/enum/role_enum
utils/model/enum/state_enum
utils/model/enum/state_status_value_enum
utils/model/enum/state_type_enum
utils/model/enum/stream_type_enum
utils/model/enum/tcic_log_level_enum
utils/model/enum/translate_lang_enum
utils/model/enum/translate_state_enum
utils/model/enum/trtc_stream_info_update_type
utils/model/enum/trtc_view_scope_enum
utils/model/enum/ui_event_enum
utils/model/enum/user_layout
utils/model/hand_up/user_hand_up_info
utils/model/landscape_layout_config
utils/model/message/get_message_params
utils/model/message/message_model
utils/model/permission/permission_model
utils/model/portrait_layout_config
utils/model/question/answer_info
utils/model/question/answer_question_parama
utils/model/question/answer_question_result
utils/model/question/create_qeustion_param
utils/model/question/create_question_result
utils/model/question/question_answer
utils/model/question/question_info
utils/model/question/question_result
utils/model/question/question_statics
utils/model/tcic_base_model
utils/model/tcic_basic_config
utils/model/tcic_board_config
utils/model/tcic_class_info
utils/model/tcic_class_room_info
utils/model/tcic_cofig_model
utils/model/tcic_component_config/header_component_config
utils/model/tcic_component_config/header_icon_config/header_icon_config
utils/model/tcic_component_config/layout_component_config
utils/model/tcic_component_config/member_list_component_config
utils/model/tcic_component_config/memebers_component_config
utils/model/tcic_component_config/message_component_config
utils/model/tcic_component_config/settting_component_config
utils/model/tcic_component_config/tcic_component_config
utils/model/tcic_component_config/video_component_config
utils/model/tcic_component_config/whiteboard_component_config
utils/model/tcic_cos_token/t_get_cos_token_param
utils/model/tcic_cos_token/t_get_cos_token_result
utils/model/tcic_document/bind_document/bind_document_params
utils/model/tcic_document/bind_document/bind_document_result
utils/model/tcic_document/create_document/create_document_params
utils/model/tcic_document/create_document/create_document_result
utils/model/tcic_document/delete_document/delete_document_params
utils/model/tcic_document/document_info/document_model
utils/model/tcic_document/document_result/document_result_model
utils/model/tcic_document/get_document_params/get_document_params
utils/model/tcic_font_config_model
utils/model/tcic_lang_config_model
utils/model/tcic_layout_config
utils/model/tcic_life_cycle_listener
utils/model/tcic_liveplayer_config_model
utils/model/tcic_log_param
utils/model/tcic_main_process_broken_event_data
utils/model/tcic_member_model/tcic_member_model
utils/model/tcic_member_model/tcic_self_info_model
utils/model/tcic_member_stream_model
utils/model/tcic_name_config/name_config_info
utils/model/tcic_name_config/tcic_name_config
utils/model/tcic_pip_result_model
utils/model/tcic_quality_set
utils/model/tcic_report_data_model
utils/model/tcic_school_info_custom_content
utils/model/tcic_task/get_task_result
utils/model/tcic_task/task_info
utils/model/tcic_task/update_task_params
utils/model/tcic_toast_config
utils/model/tcic_trtc_room_info
utils/model/tcic_userinfo_model
utils/model/tcic_watermark_config
utils/model/user_info/user_info_model
utils/network_service/class_service
utils/network_service/command_service
utils/network_service/config_service
utils/network_service/document_service
utils/network_service/member_service
utils/network_service/message_service
utils/network_service/network_service
utils/network_service/permission_service
utils/network_service/question_service
utils/network_service/record_service
utils/network_service/report_service
utils/network_service/request_body
utils/network_service/response_body
utils/network_service/school_service
utils/network_service/task_service
utils/network_service/user_service
utils/permission
utils/report/report
utils/report/report_config_model
utils/report/report_data
utils/screen/tcic_screen
utils/tips/tips
utils/toast/toast
utils/tools/layout_tools
utils/tools/tools
utils/typed_fun/functions