├── .github
├── CODEOWNERS
├── actions
│ └── pana
│ │ └── action.yml
├── pull_request_template.md
└── workflows
│ ├── app-distribute.yml
│ ├── legacy_version_analyze.yml
│ ├── pana.yml
│ ├── scripts
│ └── remove-from-coverage.sh
│ └── stream_video_flutter_workflow.yml
├── .gitignore
├── .readme-assets
└── Github-Graphic-Flutter.jpg
├── .run
└── dogfooding.run.xml
├── LICENSE
├── README.md
├── SECURITY.md
├── all_lint_rules.yaml
├── analysis_options.yaml
├── development.md
├── dogfooding
├── .metadata
├── Fastfile
├── README.md
├── analysis_options.yaml
├── android
│ ├── .ruby-version
│ ├── .sign
│ │ └── debug.keystore
│ ├── Gemfile
│ ├── app
│ │ ├── build.gradle
│ │ ├── google-services.json
│ │ ├── proguard-rules.pro
│ │ └── src
│ │ │ ├── beta
│ │ │ └── res
│ │ │ │ └── drawable-v24
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── debug
│ │ │ └── AndroidManifest.xml
│ │ │ ├── dev
│ │ │ └── res
│ │ │ │ └── drawable-v24
│ │ │ │ └── ic_launcher_background.xml
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── ic_launcher-playstore.png
│ │ │ ├── java
│ │ │ │ └── io
│ │ │ │ │ └── flutter
│ │ │ │ │ └── app
│ │ │ │ │ └── FlutterMultiDexApplication.java
│ │ │ ├── kotlin
│ │ │ │ └── io
│ │ │ │ │ └── getstream
│ │ │ │ │ └── video
│ │ │ │ │ └── flutter
│ │ │ │ │ └── dogfooding
│ │ │ │ │ └── MainActivity.kt
│ │ │ └── res
│ │ │ │ ├── drawable-hdpi
│ │ │ │ └── ic_launcher_monochrome.png
│ │ │ │ ├── drawable-mdpi
│ │ │ │ └── ic_launcher_monochrome.png
│ │ │ │ ├── drawable-v21
│ │ │ │ └── launch_background.xml
│ │ │ │ ├── drawable-v24
│ │ │ │ └── ic_launcher_background.xml
│ │ │ │ ├── drawable-xhdpi
│ │ │ │ └── ic_launcher_monochrome.png
│ │ │ │ ├── drawable-xxhdpi
│ │ │ │ └── ic_launcher_monochrome.png
│ │ │ │ ├── drawable-xxxhdpi
│ │ │ │ └── ic_launcher_monochrome.png
│ │ │ │ ├── drawable
│ │ │ │ ├── ic_launcher_foreground.xml
│ │ │ │ └── launch_background.xml
│ │ │ │ ├── mipmap-anydpi-v26
│ │ │ │ ├── ic_launcher.xml
│ │ │ │ └── ic_launcher_round.xml
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ ├── ic_launcher.webp
│ │ │ │ └── ic_launcher_round.webp
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ ├── ic_launcher.webp
│ │ │ │ └── ic_launcher_round.webp
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ ├── ic_launcher.webp
│ │ │ │ └── ic_launcher_round.webp
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ ├── ic_launcher.webp
│ │ │ │ └── ic_launcher_round.webp
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ ├── ic_launcher.webp
│ │ │ │ └── ic_launcher_round.webp
│ │ │ │ ├── values-night
│ │ │ │ └── styles.xml
│ │ │ │ └── values
│ │ │ │ └── styles.xml
│ │ │ └── profile
│ │ │ └── AndroidManifest.xml
│ ├── build.gradle
│ ├── fastlane
│ │ ├── Appfile
│ │ ├── Fastfile
│ │ ├── Pluginfile
│ │ └── README.md
│ ├── gradle.properties
│ ├── gradle
│ │ └── wrapper
│ │ │ └── gradle-wrapper.properties
│ └── settings.gradle
├── assets
│ ├── bg1.jpg
│ ├── bg2.jpg
│ ├── bg3.jpg
│ ├── global_network.svg
│ ├── google_logo.svg
│ ├── ic_launcher.png
│ ├── ic_launcher_background.png
│ ├── ic_launcher_background.svg
│ ├── ic_launcher_foreground.png
│ ├── ic_launcher_foreground.svg
│ ├── stream_logo.svg
│ ├── stream_video_icon.png
│ └── video_icon.png
├── firebase.json
├── ios
│ ├── .ruby-version
│ ├── Flutter
│ │ ├── AppFrameworkInfo.plist
│ │ ├── Debug.xcconfig
│ │ └── Release.xcconfig
│ ├── Gemfile
│ ├── Podfile
│ ├── Runner.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcshareddata
│ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ └── WorkspaceSettings.xcsettings
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ ├── Runner.xcscheme
│ │ │ ├── ScreenSharing.xcscheme
│ │ │ ├── beta.xcscheme
│ │ │ ├── dev.xcscheme
│ │ │ └── prod.xcscheme
│ ├── Runner.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ ├── Runner
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon-beta.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── icon1024.png
│ │ │ │ ├── icon120.png
│ │ │ │ ├── icon152.png
│ │ │ │ ├── icon167.png
│ │ │ │ ├── icon180.png
│ │ │ │ ├── icon40.png
│ │ │ │ ├── icon58.png
│ │ │ │ ├── icon60.png
│ │ │ │ ├── icon76.png
│ │ │ │ ├── icon80.png
│ │ │ │ └── icon87.png
│ │ │ ├── AppIcon-dev.appiconset
│ │ │ │ ├── AppIcon-20@2x.png
│ │ │ │ ├── AppIcon-20@3x.png
│ │ │ │ ├── AppIcon-29@2x.png
│ │ │ │ ├── AppIcon-29@3x.png
│ │ │ │ ├── AppIcon-40@2x.png
│ │ │ │ ├── AppIcon-40@3x.png
│ │ │ │ ├── AppIcon-60@2x~car.png
│ │ │ │ ├── AppIcon-60@3x~car.png
│ │ │ │ ├── AppIcon~ios-marketing.png
│ │ │ │ └── Contents.json
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ │ ├── Icon-App-20x20@1x.png
│ │ │ │ ├── Icon-App-20x20@2x.png
│ │ │ │ ├── Icon-App-20x20@3x.png
│ │ │ │ ├── Icon-App-29x29@1x.png
│ │ │ │ ├── Icon-App-29x29@2x.png
│ │ │ │ ├── Icon-App-29x29@3x.png
│ │ │ │ ├── Icon-App-40x40@1x.png
│ │ │ │ ├── Icon-App-40x40@2x.png
│ │ │ │ ├── Icon-App-40x40@3x.png
│ │ │ │ ├── Icon-App-50x50@1x.png
│ │ │ │ ├── Icon-App-50x50@2x.png
│ │ │ │ ├── Icon-App-57x57@1x.png
│ │ │ │ ├── Icon-App-57x57@2x.png
│ │ │ │ ├── Icon-App-60x60@2x.png
│ │ │ │ ├── Icon-App-60x60@3x.png
│ │ │ │ ├── Icon-App-72x72@1x.png
│ │ │ │ ├── Icon-App-72x72@2x.png
│ │ │ │ ├── Icon-App-76x76@1x.png
│ │ │ │ ├── Icon-App-76x76@2x.png
│ │ │ │ └── Icon-App-83.5x83.5@2x.png
│ │ │ ├── Contents.json
│ │ │ └── IconMask.imageset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── Icon-Mask@1x.png
│ │ │ │ ├── Icon-Mask@2x.png
│ │ │ │ └── Icon-Mask@3x.png
│ │ ├── Base.lproj
│ │ │ ├── LaunchScreen.storyboard
│ │ │ └── Main.storyboard
│ │ ├── GoogleService-Info.plist
│ │ ├── Info.plist
│ │ ├── Runner-Bridging-Header.h
│ │ └── Runner.entitlements
│ ├── ScreenSharing
│ │ ├── Info.plist
│ │ ├── SampleHandler.swift
│ │ └── ScreenSharing.entitlements
│ ├── fastlane
│ │ ├── Appfile
│ │ ├── Fastfile
│ │ ├── Matchfile
│ │ └── README.md
│ └── firebase_app_id_file.json
├── lib
│ ├── app
│ │ ├── app.dart
│ │ ├── app_content.dart
│ │ ├── custom_video_localizations.dart
│ │ └── user_auth_controller.dart
│ ├── core
│ │ ├── model
│ │ │ ├── environment.dart
│ │ │ └── user_credentials.dart
│ │ └── repos
│ │ │ ├── app_preferences.dart
│ │ │ ├── custom_environment_loader.dart
│ │ │ ├── token_service.dart
│ │ │ ├── user_auth_repository.dart
│ │ │ └── user_chat_repository.dart
│ ├── di
│ │ └── injector.dart
│ ├── dogfooding_app_channel.dart
│ ├── firebase_options.dart
│ ├── log_config.dart
│ ├── main.dart
│ ├── router
│ │ ├── router.dart
│ │ ├── routes.dart
│ │ └── routes.g.dart
│ ├── screens
│ │ ├── call_participants_list.dart
│ │ ├── call_screen.dart
│ │ ├── call_stats_screen.dart
│ │ ├── home_screen.dart
│ │ ├── livestream_demo_screen.dart
│ │ ├── lobby_screen.dart
│ │ ├── login_screen.dart
│ │ ├── qr_code_scanner.dart
│ │ ├── splash_screen.dart
│ │ └── stats_latency_chart.dart
│ ├── theme
│ │ └── app_palette.dart
│ ├── utils
│ │ ├── after_layout.dart
│ │ ├── assets.dart
│ │ ├── consts.dart
│ │ ├── feedback_dialog.dart
│ │ └── loading_dialog.dart
│ └── widgets
│ │ ├── badged_call_option.dart
│ │ ├── call_duration_title.dart
│ │ ├── closed_captions_widget.dart
│ │ ├── device_list.dart
│ │ ├── environment_switcher.dart
│ │ ├── settings_menu
│ │ ├── audio_output_menu_item.dart
│ │ ├── background_filters_menu_item.dart
│ │ ├── closed_captions_menu_item.dart
│ │ ├── noise_cancellation_menu_item.dart
│ │ ├── settings_menu.dart
│ │ ├── settings_menu_item.dart
│ │ └── standard_action_menu_item.dart
│ │ ├── share_call_card.dart
│ │ ├── stream_button.dart
│ │ └── user_actions_avatar.dart
├── linux
│ ├── CMakeLists.txt
│ ├── flutter
│ │ ├── CMakeLists.txt
│ │ ├── generated_plugin_registrant.cc
│ │ ├── generated_plugin_registrant.h
│ │ └── generated_plugins.cmake
│ ├── main.cc
│ ├── my_application.cc
│ └── my_application.h
├── macos
│ ├── Flutter
│ │ ├── Flutter-Debug.xcconfig
│ │ └── Flutter-Release.xcconfig
│ ├── Podfile
│ ├── Runner.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ │ └── xcshareddata
│ │ │ │ └── IDEWorkspaceChecks.plist
│ │ └── xcshareddata
│ │ │ └── xcschemes
│ │ │ ├── Runner.xcscheme
│ │ │ ├── beta.xcscheme
│ │ │ ├── dev.xcscheme
│ │ │ └── prod.xcscheme
│ ├── Runner.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ ├── Runner
│ │ ├── AppDelegate.swift
│ │ ├── Assets.xcassets
│ │ │ ├── AppIcon-beta.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── app_icon_1024.png
│ │ │ │ ├── app_icon_128.png
│ │ │ │ ├── app_icon_16.png
│ │ │ │ ├── app_icon_256.png
│ │ │ │ ├── app_icon_32.png
│ │ │ │ ├── app_icon_512.png
│ │ │ │ └── app_icon_64.png
│ │ │ ├── AppIcon-dev.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── app_icon_1024.png
│ │ │ │ ├── app_icon_128.png
│ │ │ │ ├── app_icon_16.png
│ │ │ │ ├── app_icon_256.png
│ │ │ │ ├── app_icon_32.png
│ │ │ │ ├── app_icon_512.png
│ │ │ │ └── app_icon_64.png
│ │ │ ├── AppIcon.appiconset
│ │ │ │ ├── Contents.json
│ │ │ │ ├── app_icon_1024.png
│ │ │ │ ├── app_icon_128.png
│ │ │ │ ├── app_icon_16.png
│ │ │ │ ├── app_icon_256.png
│ │ │ │ ├── app_icon_32.png
│ │ │ │ ├── app_icon_512.png
│ │ │ │ └── app_icon_64.png
│ │ │ └── Contents.json
│ │ ├── Base.lproj
│ │ │ └── MainMenu.xib
│ │ ├── Configs
│ │ │ ├── AppInfo.xcconfig
│ │ │ ├── Debug.xcconfig
│ │ │ ├── Release.xcconfig
│ │ │ └── Warnings.xcconfig
│ │ ├── DebugProfile.entitlements
│ │ ├── GoogleService-Info.plist
│ │ ├── Info.plist
│ │ ├── MainFlutterWindow.swift
│ │ └── Release.entitlements
│ └── firebase_app_id_file.json
├── pubspec.yaml
├── web
│ ├── favicon.png
│ ├── icons
│ │ ├── Icon-192.png
│ │ ├── Icon-512.png
│ │ ├── Icon-maskable-192.png
│ │ └── Icon-maskable-512.png
│ ├── index.html
│ └── manifest.json
└── windows
│ ├── CMakeLists.txt
│ ├── flutter
│ ├── CMakeLists.txt
│ └── generated_plugins.cmake
│ └── runner
│ ├── CMakeLists.txt
│ ├── Runner.rc
│ ├── flutter_window.cpp
│ ├── flutter_window.h
│ ├── main.cpp
│ ├── resource.h
│ ├── resources
│ └── app_icon.ico
│ ├── runner.exe.manifest
│ ├── utils.cpp
│ ├── utils.h
│ ├── win32_window.cpp
│ └── win32_window.h
├── env.sample
├── melos.yaml
├── packages
├── stream_video
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── example
│ │ └── lib
│ │ │ └── main.dart
│ ├── generate-openapi-origin.sh
│ ├── generate-openapi-stream.sh
│ ├── lib
│ │ ├── globals.dart
│ │ ├── open_api
│ │ │ └── video
│ │ │ │ └── coordinator
│ │ │ │ ├── api.dart
│ │ │ │ ├── api
│ │ │ │ └── productvideo_api.dart
│ │ │ │ ├── api_client.dart
│ │ │ │ ├── api_exception.dart
│ │ │ │ ├── api_helper.dart
│ │ │ │ ├── auth
│ │ │ │ ├── api_key_auth.dart
│ │ │ │ ├── authentication.dart
│ │ │ │ ├── http_basic_auth.dart
│ │ │ │ ├── http_bearer_auth.dart
│ │ │ │ └── oauth.dart
│ │ │ │ └── model
│ │ │ │ ├── accept_call_response.dart
│ │ │ │ ├── aggregated_stats.dart
│ │ │ │ ├── api_error.dart
│ │ │ │ ├── app_event_response.dart
│ │ │ │ ├── app_updated_event.dart
│ │ │ │ ├── audio_settings_request.dart
│ │ │ │ ├── audio_settings_response.dart
│ │ │ │ ├── backstage_settings_request.dart
│ │ │ │ ├── backstage_settings_response.dart
│ │ │ │ ├── block_user_request.dart
│ │ │ │ ├── block_user_response.dart
│ │ │ │ ├── blocked_user_event.dart
│ │ │ │ ├── bound.dart
│ │ │ │ ├── broadcast_settings_request.dart
│ │ │ │ ├── broadcast_settings_response.dart
│ │ │ │ ├── call_accepted_event.dart
│ │ │ │ ├── call_closed_caption.dart
│ │ │ │ ├── call_closed_captions_failed_event.dart
│ │ │ │ ├── call_closed_captions_started_event.dart
│ │ │ │ ├── call_closed_captions_stopped_event.dart
│ │ │ │ ├── call_created_event.dart
│ │ │ │ ├── call_deleted_event.dart
│ │ │ │ ├── call_duration_report.dart
│ │ │ │ ├── call_duration_report_response.dart
│ │ │ │ ├── call_ended_event.dart
│ │ │ │ ├── call_event.dart
│ │ │ │ ├── call_frame_recording_failed_event.dart
│ │ │ │ ├── call_frame_recording_frame_ready_event.dart
│ │ │ │ ├── call_frame_recording_started_event.dart
│ │ │ │ ├── call_frame_recording_stopped_event.dart
│ │ │ │ ├── call_hls_broadcasting_failed_event.dart
│ │ │ │ ├── call_hls_broadcasting_started_event.dart
│ │ │ │ ├── call_hls_broadcasting_stopped_event.dart
│ │ │ │ ├── call_ingress_response.dart
│ │ │ │ ├── call_live_started_event.dart
│ │ │ │ ├── call_member_added_event.dart
│ │ │ │ ├── call_member_removed_event.dart
│ │ │ │ ├── call_member_updated_event.dart
│ │ │ │ ├── call_member_updated_permission_event.dart
│ │ │ │ ├── call_missed_event.dart
│ │ │ │ ├── call_notification_event.dart
│ │ │ │ ├── call_participant_count_report.dart
│ │ │ │ ├── call_participant_count_report_response.dart
│ │ │ │ ├── call_participant_response.dart
│ │ │ │ ├── call_reaction_event.dart
│ │ │ │ ├── call_recording.dart
│ │ │ │ ├── call_recording_failed_event.dart
│ │ │ │ ├── call_recording_ready_event.dart
│ │ │ │ ├── call_recording_started_event.dart
│ │ │ │ ├── call_recording_stopped_event.dart
│ │ │ │ ├── call_rejected_event.dart
│ │ │ │ ├── call_request.dart
│ │ │ │ ├── call_response.dart
│ │ │ │ ├── call_ring_event.dart
│ │ │ │ ├── call_rtmp_broadcast_failed_event.dart
│ │ │ │ ├── call_rtmp_broadcast_started_event.dart
│ │ │ │ ├── call_rtmp_broadcast_stopped_event.dart
│ │ │ │ ├── call_session_ended_event.dart
│ │ │ │ ├── call_session_participant_counts_updated_event.dart
│ │ │ │ ├── call_session_participant_joined_event.dart
│ │ │ │ ├── call_session_participant_left_event.dart
│ │ │ │ ├── call_session_response.dart
│ │ │ │ ├── call_session_started_event.dart
│ │ │ │ ├── call_settings_request.dart
│ │ │ │ ├── call_settings_response.dart
│ │ │ │ ├── call_state_response_fields.dart
│ │ │ │ ├── call_stats_report_summary_response.dart
│ │ │ │ ├── call_timeline.dart
│ │ │ │ ├── call_transcription.dart
│ │ │ │ ├── call_transcription_failed_event.dart
│ │ │ │ ├── call_transcription_ready_event.dart
│ │ │ │ ├── call_transcription_started_event.dart
│ │ │ │ ├── call_transcription_stopped_event.dart
│ │ │ │ ├── call_updated_event.dart
│ │ │ │ ├── call_user_muted_event.dart
│ │ │ │ ├── calls_per_day_report.dart
│ │ │ │ ├── calls_per_day_report_response.dart
│ │ │ │ ├── closed_caption_event.dart
│ │ │ │ ├── collect_user_feedback_request.dart
│ │ │ │ ├── collect_user_feedback_response.dart
│ │ │ │ ├── connect_user_details_request.dart
│ │ │ │ ├── connected_event.dart
│ │ │ │ ├── connection_error_event.dart
│ │ │ │ ├── coordinates.dart
│ │ │ │ ├── count.dart
│ │ │ │ ├── create_device_request.dart
│ │ │ │ ├── create_guest_request.dart
│ │ │ │ ├── create_guest_response.dart
│ │ │ │ ├── credentials.dart
│ │ │ │ ├── custom_video_event.dart
│ │ │ │ ├── daily_aggregate_call_duration_report_response.dart
│ │ │ │ ├── daily_aggregate_call_participant_count_report_response.dart
│ │ │ │ ├── daily_aggregate_calls_per_day_report_response.dart
│ │ │ │ ├── daily_aggregate_quality_score_report_response.dart
│ │ │ │ ├── daily_aggregate_sdk_usage_report_response.dart
│ │ │ │ ├── daily_aggregate_user_feedback_report_response.dart
│ │ │ │ ├── delete_call_request.dart
│ │ │ │ ├── delete_call_response.dart
│ │ │ │ ├── delete_recording_response.dart
│ │ │ │ ├── delete_transcription_response.dart
│ │ │ │ ├── device_response.dart
│ │ │ │ ├── edge_response.dart
│ │ │ │ ├── egress_hls_response.dart
│ │ │ │ ├── egress_response.dart
│ │ │ │ ├── egress_rtmp_response.dart
│ │ │ │ ├── end_call_response.dart
│ │ │ │ ├── file_upload_config.dart
│ │ │ │ ├── fps_stats.dart
│ │ │ │ ├── frame_recording_response.dart
│ │ │ │ ├── frame_recording_settings_request.dart
│ │ │ │ ├── frame_recording_settings_response.dart
│ │ │ │ ├── geofence_settings_request.dart
│ │ │ │ ├── geofence_settings_response.dart
│ │ │ │ ├── geolocation_result.dart
│ │ │ │ ├── get_call_response.dart
│ │ │ │ ├── get_call_stats_response.dart
│ │ │ │ ├── get_edges_response.dart
│ │ │ │ ├── get_or_create_call_request.dart
│ │ │ │ ├── get_or_create_call_response.dart
│ │ │ │ ├── go_live_request.dart
│ │ │ │ ├── go_live_response.dart
│ │ │ │ ├── health_check_event.dart
│ │ │ │ ├── hls_settings_request.dart
│ │ │ │ ├── hls_settings_response.dart
│ │ │ │ ├── ice_server.dart
│ │ │ │ ├── join_call_request.dart
│ │ │ │ ├── join_call_response.dart
│ │ │ │ ├── layout_settings_request.dart
│ │ │ │ ├── limits_settings_request.dart
│ │ │ │ ├── limits_settings_response.dart
│ │ │ │ ├── list_devices_response.dart
│ │ │ │ ├── list_recordings_response.dart
│ │ │ │ ├── list_transcriptions_response.dart
│ │ │ │ ├── location.dart
│ │ │ │ ├── media_pub_sub_hint.dart
│ │ │ │ ├── member_request.dart
│ │ │ │ ├── member_response.dart
│ │ │ │ ├── mute_users_request.dart
│ │ │ │ ├── mute_users_response.dart
│ │ │ │ ├── network_metrics_report_response.dart
│ │ │ │ ├── noise_cancellation_settings.dart
│ │ │ │ ├── own_capability.dart
│ │ │ │ ├── own_user_response.dart
│ │ │ │ ├── per_sdk_usage_report.dart
│ │ │ │ ├── permission_request_event.dart
│ │ │ │ ├── pin_request.dart
│ │ │ │ ├── pin_response.dart
│ │ │ │ ├── privacy_settings.dart
│ │ │ │ ├── published_track_info.dart
│ │ │ │ ├── publisher_aggregate_stats.dart
│ │ │ │ ├── push_preferences.dart
│ │ │ │ ├── quality_score_report.dart
│ │ │ │ ├── quality_score_report_response.dart
│ │ │ │ ├── query_aggregate_call_stats_request.dart
│ │ │ │ ├── query_aggregate_call_stats_response.dart
│ │ │ │ ├── query_call_members_request.dart
│ │ │ │ ├── query_call_members_response.dart
│ │ │ │ ├── query_call_stats_request.dart
│ │ │ │ ├── query_call_stats_response.dart
│ │ │ │ ├── query_calls_request.dart
│ │ │ │ ├── query_calls_response.dart
│ │ │ │ ├── reaction_response.dart
│ │ │ │ ├── read_receipts.dart
│ │ │ │ ├── record_settings_request.dart
│ │ │ │ ├── record_settings_response.dart
│ │ │ │ ├── reject_call_request.dart
│ │ │ │ ├── reject_call_response.dart
│ │ │ │ ├── report_by_histogram_bucket.dart
│ │ │ │ ├── request_permission_request.dart
│ │ │ │ ├── request_permission_response.dart
│ │ │ │ ├── response.dart
│ │ │ │ ├── ring_settings_request.dart
│ │ │ │ ├── ring_settings_response.dart
│ │ │ │ ├── rtmp_broadcast_request.dart
│ │ │ │ ├── rtmp_ingress.dart
│ │ │ │ ├── rtmp_settings_request.dart
│ │ │ │ ├── rtmp_settings_response.dart
│ │ │ │ ├── screensharing_settings_request.dart
│ │ │ │ ├── screensharing_settings_response.dart
│ │ │ │ ├── sdk_usage_report.dart
│ │ │ │ ├── sdk_usage_report_response.dart
│ │ │ │ ├── send_call_event_request.dart
│ │ │ │ ├── send_call_event_response.dart
│ │ │ │ ├── send_reaction_request.dart
│ │ │ │ ├── send_reaction_response.dart
│ │ │ │ ├── session_settings_request.dart
│ │ │ │ ├── session_settings_response.dart
│ │ │ │ ├── sfu_location_response.dart
│ │ │ │ ├── sfu_response.dart
│ │ │ │ ├── sort_param_request.dart
│ │ │ │ ├── start_closed_captions_request.dart
│ │ │ │ ├── start_closed_captions_response.dart
│ │ │ │ ├── start_frame_recording_request.dart
│ │ │ │ ├── start_frame_recording_response.dart
│ │ │ │ ├── start_hls_broadcasting_response.dart
│ │ │ │ ├── start_recording_request.dart
│ │ │ │ ├── start_recording_response.dart
│ │ │ │ ├── start_rtmp_broadcasts_request.dart
│ │ │ │ ├── start_rtmp_broadcasts_response.dart
│ │ │ │ ├── start_transcription_request.dart
│ │ │ │ ├── start_transcription_response.dart
│ │ │ │ ├── stats_options.dart
│ │ │ │ ├── stop_all_rtmp_broadcasts_response.dart
│ │ │ │ ├── stop_closed_captions_request.dart
│ │ │ │ ├── stop_closed_captions_response.dart
│ │ │ │ ├── stop_frame_recording_response.dart
│ │ │ │ ├── stop_hls_broadcasting_response.dart
│ │ │ │ ├── stop_live_request.dart
│ │ │ │ ├── stop_live_response.dart
│ │ │ │ ├── stop_recording_response.dart
│ │ │ │ ├── stop_rtmp_broadcasts_response.dart
│ │ │ │ ├── stop_transcription_request.dart
│ │ │ │ ├── stop_transcription_response.dart
│ │ │ │ ├── subsession.dart
│ │ │ │ ├── target_resolution.dart
│ │ │ │ ├── thumbnail_response.dart
│ │ │ │ ├── thumbnails_settings_request.dart
│ │ │ │ ├── thumbnails_settings_response.dart
│ │ │ │ ├── time_stats.dart
│ │ │ │ ├── transcription_settings_request.dart
│ │ │ │ ├── transcription_settings_response.dart
│ │ │ │ ├── turn_aggregated_stats.dart
│ │ │ │ ├── typing_indicators.dart
│ │ │ │ ├── unblock_user_request.dart
│ │ │ │ ├── unblock_user_response.dart
│ │ │ │ ├── unblocked_user_event.dart
│ │ │ │ ├── unpin_request.dart
│ │ │ │ ├── unpin_response.dart
│ │ │ │ ├── update_call_members_request.dart
│ │ │ │ ├── update_call_members_response.dart
│ │ │ │ ├── update_call_request.dart
│ │ │ │ ├── update_call_response.dart
│ │ │ │ ├── update_user_permissions_request.dart
│ │ │ │ ├── update_user_permissions_response.dart
│ │ │ │ ├── updated_call_permissions_event.dart
│ │ │ │ ├── user.dart
│ │ │ │ ├── user_banned_event.dart
│ │ │ │ ├── user_deactivated_event.dart
│ │ │ │ ├── user_feedback_report.dart
│ │ │ │ ├── user_feedback_report_response.dart
│ │ │ │ ├── user_info_response.dart
│ │ │ │ ├── user_muted_event.dart
│ │ │ │ ├── user_reactivated_event.dart
│ │ │ │ ├── user_request.dart
│ │ │ │ ├── user_response.dart
│ │ │ │ ├── user_response_privacy_fields.dart
│ │ │ │ ├── user_session_stats.dart
│ │ │ │ ├── user_stats.dart
│ │ │ │ ├── user_updated_event.dart
│ │ │ │ ├── video_dimension.dart
│ │ │ │ ├── video_event.dart
│ │ │ │ ├── video_quality.dart
│ │ │ │ ├── video_settings_request.dart
│ │ │ │ ├── video_settings_response.dart
│ │ │ │ └── ws_auth_message.dart
│ │ ├── protobuf
│ │ │ ├── google
│ │ │ │ └── protobuf
│ │ │ │ │ ├── duration.pb.dart
│ │ │ │ │ ├── duration.pbenum.dart
│ │ │ │ │ ├── duration.pbjson.dart
│ │ │ │ │ ├── duration.pbserver.dart
│ │ │ │ │ ├── struct.pb.dart
│ │ │ │ │ ├── struct.pbenum.dart
│ │ │ │ │ ├── struct.pbjson.dart
│ │ │ │ │ ├── struct.pbserver.dart
│ │ │ │ │ ├── timestamp.pb.dart
│ │ │ │ │ ├── timestamp.pbenum.dart
│ │ │ │ │ ├── timestamp.pbjson.dart
│ │ │ │ │ ├── timestamp.pbserver.dart
│ │ │ │ │ ├── wrappers.pb.dart
│ │ │ │ │ ├── wrappers.pbenum.dart
│ │ │ │ │ ├── wrappers.pbjson.dart
│ │ │ │ │ └── wrappers.pbserver.dart
│ │ │ └── video
│ │ │ │ └── sfu
│ │ │ │ ├── event
│ │ │ │ ├── events.pb.dart
│ │ │ │ ├── events.pbenum.dart
│ │ │ │ ├── events.pbjson.dart
│ │ │ │ └── events.pbserver.dart
│ │ │ │ ├── models
│ │ │ │ ├── models.pb.dart
│ │ │ │ ├── models.pbenum.dart
│ │ │ │ ├── models.pbjson.dart
│ │ │ │ └── models.pbserver.dart
│ │ │ │ └── signal_rpc
│ │ │ │ ├── signal.pb.dart
│ │ │ │ ├── signal.pbenum.dart
│ │ │ │ ├── signal.pbjson.dart
│ │ │ │ ├── signal.pbserver.dart
│ │ │ │ └── signal.pbtwirp.dart
│ │ ├── src
│ │ │ ├── audio_processing
│ │ │ │ └── audio_processor.dart
│ │ │ ├── call
│ │ │ │ ├── call.dart
│ │ │ │ ├── call_connect_options.dart
│ │ │ │ ├── call_events.dart
│ │ │ │ ├── call_reject_reason.dart
│ │ │ │ ├── call_ringing_state.dart
│ │ │ │ ├── call_type.dart
│ │ │ │ ├── permissions
│ │ │ │ │ └── permissions_manager.dart
│ │ │ │ ├── session
│ │ │ │ │ ├── call_session.dart
│ │ │ │ │ ├── call_session_config.dart
│ │ │ │ │ ├── call_session_factory.dart
│ │ │ │ │ └── dynascale_manager.dart
│ │ │ │ ├── state
│ │ │ │ │ ├── call_state_notifier.dart
│ │ │ │ │ └── mixins
│ │ │ │ │ │ ├── state_call_actions_mixin.dart
│ │ │ │ │ │ ├── state_coordinator_mixin.dart
│ │ │ │ │ │ ├── state_lifecycle_mixin.dart
│ │ │ │ │ │ ├── state_participant_mixin.dart
│ │ │ │ │ │ ├── state_rtc_mixin.dart
│ │ │ │ │ │ └── state_sfu_mixin.dart
│ │ │ │ └── stats
│ │ │ │ │ ├── sfu_stats_reporter.dart
│ │ │ │ │ ├── stats_reporter.dart
│ │ │ │ │ ├── trace_record.dart
│ │ │ │ │ └── tracer.dart
│ │ │ ├── call_state.dart
│ │ │ ├── coordinator
│ │ │ │ ├── coordinator_client.dart
│ │ │ │ ├── models
│ │ │ │ │ ├── coordinator_connection_state.dart
│ │ │ │ │ ├── coordinator_events.dart
│ │ │ │ │ └── coordinator_models.dart
│ │ │ │ ├── open_api
│ │ │ │ │ ├── coordinator_client_open_api.dart
│ │ │ │ │ ├── coordinator_ws.dart
│ │ │ │ │ ├── error
│ │ │ │ │ │ ├── open_api_error.dart
│ │ │ │ │ │ └── open_api_error_code.dart
│ │ │ │ │ ├── event
│ │ │ │ │ │ ├── event_type.dart
│ │ │ │ │ │ ├── health_check.dart
│ │ │ │ │ │ └── open_api_event.dart
│ │ │ │ │ ├── open_api_extensions.dart
│ │ │ │ │ └── open_api_mapper_extensions.dart
│ │ │ │ └── retry
│ │ │ │ │ └── coordinator_client_retry.dart
│ │ │ ├── core
│ │ │ │ ├── client_state.dart
│ │ │ │ ├── connection_state.dart
│ │ │ │ ├── utils.dart
│ │ │ │ └── video_error.dart
│ │ │ ├── disposable.dart
│ │ │ ├── errors
│ │ │ │ ├── video_error.dart
│ │ │ │ └── video_error_composer.dart
│ │ │ ├── events.dart
│ │ │ ├── exceptions
│ │ │ │ └── video_exception.dart
│ │ │ ├── extensions
│ │ │ │ ├── call_participant_state_ext.dart
│ │ │ │ └── thermal_status_ext.dart
│ │ │ ├── internal
│ │ │ │ └── _instance_holder.dart
│ │ │ ├── latency
│ │ │ │ ├── latency_service.dart
│ │ │ │ └── latency_settings.dart
│ │ │ ├── lifecycle
│ │ │ │ ├── lifecycle_state.dart
│ │ │ │ ├── lifecycle_utils.dart
│ │ │ │ └── lifecycle_utils_io.dart
│ │ │ ├── location
│ │ │ │ └── location_service.dart
│ │ │ ├── logger
│ │ │ │ ├── impl
│ │ │ │ │ ├── console_logger.dart
│ │ │ │ │ ├── external_logger.dart
│ │ │ │ │ ├── file_logger.dart
│ │ │ │ │ └── tagged_logger.dart
│ │ │ │ ├── stream_log.dart
│ │ │ │ └── stream_logger.dart
│ │ │ ├── models
│ │ │ │ ├── call_cid.dart
│ │ │ │ ├── call_client_publish_options.dart
│ │ │ │ ├── call_closed_caption.dart
│ │ │ │ ├── call_created_data.dart
│ │ │ │ ├── call_credentials.dart
│ │ │ │ ├── call_egress.dart
│ │ │ │ ├── call_joined_data.dart
│ │ │ │ ├── call_member_state.dart
│ │ │ │ ├── call_metadata.dart
│ │ │ │ ├── call_participant_pin.dart
│ │ │ │ ├── call_participant_state.dart
│ │ │ │ ├── call_permission.dart
│ │ │ │ ├── call_preferences.dart
│ │ │ │ ├── call_reaction.dart
│ │ │ │ ├── call_received_created_data.dart
│ │ │ │ ├── call_received_data.dart
│ │ │ │ ├── call_ringing_data.dart
│ │ │ │ ├── call_session_data.dart
│ │ │ │ ├── call_settings.dart
│ │ │ │ ├── call_stats.dart
│ │ │ │ ├── call_status.dart
│ │ │ │ ├── call_track_state.dart
│ │ │ │ ├── disconnect_reason.dart
│ │ │ │ ├── guest_created_data.dart
│ │ │ │ ├── models.dart
│ │ │ │ ├── push_device.dart
│ │ │ │ ├── push_provider.dart
│ │ │ │ ├── queried_calls.dart
│ │ │ │ ├── queried_members.dart
│ │ │ │ ├── subscription_change.dart
│ │ │ │ ├── user.dart
│ │ │ │ ├── user_info.dart
│ │ │ │ ├── viewport_visibility.dart
│ │ │ │ └── visibility_change.dart
│ │ │ ├── network_monitor_settings.dart
│ │ │ ├── platform_detector
│ │ │ │ ├── platform_detector.dart
│ │ │ │ ├── platform_detector_io.dart
│ │ │ │ ├── platform_detector_stub.dart
│ │ │ │ └── platform_detector_web.dart
│ │ │ ├── push_notification
│ │ │ │ ├── call_kit_events.dart
│ │ │ │ └── push_notification_manager.dart
│ │ │ ├── retry
│ │ │ │ ├── retry_manager.dart
│ │ │ │ └── retry_policy.dart
│ │ │ ├── sfu
│ │ │ │ ├── data
│ │ │ │ │ ├── events
│ │ │ │ │ │ ├── sfu_event_mapper_extensions.dart
│ │ │ │ │ │ └── sfu_events.dart
│ │ │ │ │ └── models
│ │ │ │ │ │ ├── sfu_audio_level.dart
│ │ │ │ │ │ ├── sfu_audio_sender.dart
│ │ │ │ │ │ ├── sfu_call_ended_reason.dart
│ │ │ │ │ │ ├── sfu_call_grants.dart
│ │ │ │ │ │ ├── sfu_call_state.dart
│ │ │ │ │ │ ├── sfu_codec.dart
│ │ │ │ │ │ ├── sfu_connection_info.dart
│ │ │ │ │ │ ├── sfu_connection_quality.dart
│ │ │ │ │ │ ├── sfu_error.dart
│ │ │ │ │ │ ├── sfu_goaway_reason.dart
│ │ │ │ │ │ ├── sfu_model_mapper_extensions.dart
│ │ │ │ │ │ ├── sfu_model_parser.dart
│ │ │ │ │ │ ├── sfu_participant.dart
│ │ │ │ │ │ ├── sfu_pin.dart
│ │ │ │ │ │ ├── sfu_publish_options.dart
│ │ │ │ │ │ ├── sfu_subscription_details.dart
│ │ │ │ │ │ ├── sfu_track_type.dart
│ │ │ │ │ │ ├── sfu_video_layer_setting.dart
│ │ │ │ │ │ └── sfu_video_sender.dart
│ │ │ │ ├── sfu_client.dart
│ │ │ │ ├── sfu_extensions.dart
│ │ │ │ └── ws
│ │ │ │ │ └── sfu_ws.dart
│ │ │ ├── shared_emitter.dart
│ │ │ ├── sorting
│ │ │ │ ├── call_participant_sorting_presets.dart
│ │ │ │ └── call_participant_state_sorting.dart
│ │ │ ├── state_emitter.dart
│ │ │ ├── stream_video.dart
│ │ │ ├── token
│ │ │ │ ├── token.dart
│ │ │ │ └── token_manager.dart
│ │ │ ├── types
│ │ │ │ └── other.dart
│ │ │ ├── utils
│ │ │ │ ├── cancelable_operation.dart
│ │ │ │ ├── cancelables.dart
│ │ │ │ ├── completer.dart
│ │ │ │ ├── debounce_buffer.dart
│ │ │ │ ├── extensions.dart
│ │ │ │ ├── format.dart
│ │ │ │ ├── future.dart
│ │ │ │ ├── iterable.dart
│ │ │ │ ├── list.dart
│ │ │ │ ├── none.dart
│ │ │ │ ├── pair.dart
│ │ │ │ ├── result.dart
│ │ │ │ ├── standard.dart
│ │ │ │ ├── stream.dart
│ │ │ │ ├── string.dart
│ │ │ │ ├── subscriptions.dart
│ │ │ │ └── triple.dart
│ │ │ ├── webrtc
│ │ │ │ ├── codecs_helper.dart
│ │ │ │ ├── media
│ │ │ │ │ ├── audio_constraints.dart
│ │ │ │ │ ├── camera_constraints.dart
│ │ │ │ │ ├── constraints
│ │ │ │ │ │ ├── camera_position.dart
│ │ │ │ │ │ ├── facing_mode.dart
│ │ │ │ │ │ └── mirror_mode.dart
│ │ │ │ │ ├── media_constraints.dart
│ │ │ │ │ ├── screen_share_constraints.dart
│ │ │ │ │ └── video_constraints.dart
│ │ │ │ ├── model
│ │ │ │ │ ├── rtc_audio_bitrate_preset.dart
│ │ │ │ │ ├── rtc_model_mapper_extensions.dart
│ │ │ │ │ ├── rtc_tracks_info.dart
│ │ │ │ │ ├── rtc_video_dimension.dart
│ │ │ │ │ ├── rtc_video_encoding.dart
│ │ │ │ │ ├── rtc_video_parameters.dart
│ │ │ │ │ └── stats
│ │ │ │ │ │ ├── rtc_audio_source.dart
│ │ │ │ │ │ ├── rtc_codec.dart
│ │ │ │ │ │ ├── rtc_ice_candidate.dart
│ │ │ │ │ │ ├── rtc_ice_candidate_pair.dart
│ │ │ │ │ │ ├── rtc_inbound_rtp.dart
│ │ │ │ │ │ ├── rtc_inbound_rtp_audio_stream.dart
│ │ │ │ │ │ ├── rtc_inbound_rtp_video_stream.dart
│ │ │ │ │ │ ├── rtc_media_source.dart
│ │ │ │ │ │ ├── rtc_media_stream_track.dart
│ │ │ │ │ │ ├── rtc_media_stream_track_local_audio.dart
│ │ │ │ │ │ ├── rtc_media_stream_track_local_video.dart
│ │ │ │ │ │ ├── rtc_media_stream_track_receiver_audio.dart
│ │ │ │ │ │ ├── rtc_media_stream_track_remote_video.dart
│ │ │ │ │ │ ├── rtc_outbound_rtp.dart
│ │ │ │ │ │ ├── rtc_outbound_rtp_audio_stream.dart
│ │ │ │ │ │ ├── rtc_outbound_rtp_video_stream.dart
│ │ │ │ │ │ ├── rtc_printable_stats.dart
│ │ │ │ │ │ ├── rtc_raw_stats.dart
│ │ │ │ │ │ ├── rtc_remote_inbound_rtp.dart
│ │ │ │ │ │ ├── rtc_remote_inbound_rtp_audio_stream.dart
│ │ │ │ │ │ ├── rtc_remote_inbound_rtp_video_stream.dart
│ │ │ │ │ │ ├── rtc_report_type.dart
│ │ │ │ │ │ ├── rtc_stats.dart
│ │ │ │ │ │ ├── rtc_stats_mapper.dart
│ │ │ │ │ │ ├── rtc_stats_property.dart
│ │ │ │ │ │ ├── rtc_video_source.dart
│ │ │ │ │ │ └── rtc_writable.dart
│ │ │ │ ├── peer_connection.dart
│ │ │ │ ├── peer_connection_factory.dart
│ │ │ │ ├── peer_type.dart
│ │ │ │ ├── rtc_audio_api
│ │ │ │ │ ├── rtc_audio_api.dart
│ │ │ │ │ ├── rtc_audio_html.dart
│ │ │ │ │ ├── rtc_audio_native.dart
│ │ │ │ │ └── rtc_audio_stub.dart
│ │ │ │ ├── rtc_manager.dart
│ │ │ │ ├── rtc_manager_factory.dart
│ │ │ │ ├── rtc_media_device
│ │ │ │ │ ├── rtc_media_device.dart
│ │ │ │ │ └── rtc_media_device_notifier.dart
│ │ │ │ ├── rtc_parser.dart
│ │ │ │ ├── rtc_track
│ │ │ │ │ ├── rtc_local_track.dart
│ │ │ │ │ ├── rtc_remote_track.dart
│ │ │ │ │ └── rtc_track.dart
│ │ │ │ ├── sdp
│ │ │ │ │ ├── attributes
│ │ │ │ │ │ ├── fmtp.dart
│ │ │ │ │ │ └── rtpmap.dart
│ │ │ │ │ ├── codec
│ │ │ │ │ │ └── sdp_codec.dart
│ │ │ │ │ ├── editor
│ │ │ │ │ │ ├── action
│ │ │ │ │ │ │ ├── action_prioritize_codec.dart
│ │ │ │ │ │ │ ├── action_set_opus_dtx_enabled.dart
│ │ │ │ │ │ │ ├── action_set_opus_red_enabled.dart
│ │ │ │ │ │ │ ├── sdp_edit_action.dart
│ │ │ │ │ │ │ └── sdp_edit_action_factory.dart
│ │ │ │ │ │ ├── rule
│ │ │ │ │ │ │ ├── rule_prioritize_codec.dart
│ │ │ │ │ │ │ ├── rule_set_opus_dtx_enabled.dart
│ │ │ │ │ │ │ ├── rule_set_opus_red_enabled.dart
│ │ │ │ │ │ │ ├── rule_toggle.dart
│ │ │ │ │ │ │ └── sdp_munging_rule.dart
│ │ │ │ │ │ ├── sdp_editor.dart
│ │ │ │ │ │ └── sdp_editor_impl.dart
│ │ │ │ │ ├── policy
│ │ │ │ │ │ └── sdp_policy.dart
│ │ │ │ │ ├── sdp.dart
│ │ │ │ │ └── specification
│ │ │ │ │ │ └── media_description.dart
│ │ │ │ ├── traced_peer_connection.dart
│ │ │ │ └── transceiver_cache.dart
│ │ │ └── ws
│ │ │ │ ├── connect
│ │ │ │ ├── connect.dart
│ │ │ │ ├── connect_html.dart
│ │ │ │ └── connect_io.dart
│ │ │ │ ├── health
│ │ │ │ └── health_monitor.dart
│ │ │ │ ├── socket_connection_state.dart
│ │ │ │ └── ws.dart
│ │ └── stream_video.dart
│ ├── pubspec.yaml
│ └── test
│ │ ├── call_participant_state_sorting_test.dart
│ │ ├── fixtures
│ │ └── sdp-fixture.json
│ │ ├── src
│ │ ├── call
│ │ │ ├── call_allow_multiple_active_calls_test.dart
│ │ │ ├── call_apply_settings_test.dart
│ │ │ └── call_type_test.dart
│ │ ├── core
│ │ │ └── client_state_test.dart
│ │ ├── globals_test.dart
│ │ ├── latency
│ │ │ ├── latency_client_mock.dart
│ │ │ └── latency_service_test.dart
│ │ ├── logger
│ │ │ └── impl
│ │ │ │ └── test_logger.dart
│ │ ├── types
│ │ │ └── rtc_configuration_test.dart
│ │ └── utils
│ │ │ └── debounce_buffer_test.dart
│ │ └── test_helpers.dart
├── stream_video_flutter
│ ├── .metadata
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── android
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── gradle
│ │ │ └── wrapper
│ │ │ │ └── gradle-wrapper.properties
│ │ ├── settings.gradle
│ │ └── src
│ │ │ ├── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── kotlin
│ │ │ │ ├── flutter
│ │ │ │ │ └── embedding
│ │ │ │ │ │ └── android
│ │ │ │ │ │ ├── FlutterEngine.kt
│ │ │ │ │ │ └── FlutterFlags.kt
│ │ │ │ └── io
│ │ │ │ │ └── getstream
│ │ │ │ │ └── video
│ │ │ │ │ └── flutter
│ │ │ │ │ └── stream_video_flutter
│ │ │ │ │ ├── MethodCallHandlerImpl.kt
│ │ │ │ │ ├── StreamFlags.kt
│ │ │ │ │ ├── StreamVideoFlutterPlugin.kt
│ │ │ │ │ ├── service
│ │ │ │ │ ├── PictureInPictureHelper.kt
│ │ │ │ │ ├── ServiceManager.kt
│ │ │ │ │ ├── StreamCallService.kt
│ │ │ │ │ ├── StreamScreenShareService.kt
│ │ │ │ │ ├── notification
│ │ │ │ │ │ ├── NotificationAction.kt
│ │ │ │ │ │ ├── NotificationActionBuilder.kt
│ │ │ │ │ │ ├── NotificationActionBuilderImpl.kt
│ │ │ │ │ │ ├── NotificationActionReceiver.kt
│ │ │ │ │ │ ├── NotificationActionUtils.kt
│ │ │ │ │ │ ├── NotificationOptions.kt
│ │ │ │ │ │ ├── StreamCallGuid.kt
│ │ │ │ │ │ ├── StreamNotificationBuilder.kt
│ │ │ │ │ │ ├── StreamNotificationBuilderImpl.kt
│ │ │ │ │ │ └── image
│ │ │ │ │ │ │ ├── CircleTransform.kt
│ │ │ │ │ │ │ ├── CustomTarget.kt
│ │ │ │ │ │ │ └── DefaultTarget.kt
│ │ │ │ │ └── utils
│ │ │ │ │ │ ├── AndroidUtils.kt
│ │ │ │ │ │ └── SharedPreferencesUtils.kt
│ │ │ │ │ └── videoFilters
│ │ │ │ │ ├── common
│ │ │ │ │ ├── BitmapVideoFilter.kt
│ │ │ │ │ ├── FilterUtils.kt
│ │ │ │ │ ├── VideoFrameWithBitmapFilter.kt
│ │ │ │ │ └── YuvFrame.kt
│ │ │ │ │ └── factories
│ │ │ │ │ ├── BackgroundBlurFactory.kt
│ │ │ │ │ └── VirtualBackgroundFactory.kt
│ │ │ └── res
│ │ │ │ ├── drawable-hdpi
│ │ │ │ └── stream_ic_cancel.png
│ │ │ │ ├── drawable-mdpi
│ │ │ │ └── stream_ic_cancel.png
│ │ │ │ ├── drawable-v21
│ │ │ │ ├── stream_bg_button_cancel.xml
│ │ │ │ └── stream_rounded_button_cancel.xml
│ │ │ │ ├── drawable-xhdpi
│ │ │ │ └── stream_ic_cancel.png
│ │ │ │ ├── drawable-xxhdpi
│ │ │ │ └── stream_ic_cancel.png
│ │ │ │ ├── drawable-xxxhdpi
│ │ │ │ └── stream_ic_cancel.png
│ │ │ │ ├── drawable
│ │ │ │ ├── stream_bg_button_cancel.xml
│ │ │ │ ├── stream_rounded_button_cancel.xml
│ │ │ │ ├── stream_video_ic_call.xml
│ │ │ │ ├── stream_video_ic_cancel_screenshare.xml
│ │ │ │ └── stream_video_ic_screenshare.xml
│ │ │ │ ├── layout
│ │ │ │ ├── stream_notification_large.xml
│ │ │ │ ├── stream_notification_small.xml
│ │ │ │ └── stream_notification_small_ex.xml
│ │ │ │ └── values
│ │ │ │ ├── stream_colors.xml
│ │ │ │ ├── stream_dimens.xml
│ │ │ │ ├── stream_ids.xml
│ │ │ │ └── stream_strings.xml
│ │ │ └── test
│ │ │ └── kotlin
│ │ │ └── com
│ │ │ └── example
│ │ │ └── stream_video_flutter
│ │ │ └── StreamVideoFlutterPluginTest.kt
│ ├── example
│ │ ├── .metadata
│ │ ├── README.md
│ │ ├── android
│ │ │ ├── .gitignore
│ │ │ ├── app
│ │ │ │ ├── build.gradle
│ │ │ │ ├── google-services.json
│ │ │ │ ├── proguard-rules.pro
│ │ │ │ └── src
│ │ │ │ │ ├── debug
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── main
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── kotlin
│ │ │ │ │ │ └── io
│ │ │ │ │ │ │ └── getstream
│ │ │ │ │ │ │ └── video
│ │ │ │ │ │ │ └── flutter
│ │ │ │ │ │ │ └── dogfooding
│ │ │ │ │ │ │ └── MainActivity.kt
│ │ │ │ │ └── res
│ │ │ │ │ │ ├── drawable-v21
│ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ ├── drawable
│ │ │ │ │ │ └── launch_background.xml
│ │ │ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ │ ├── values-night
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ │ └── values
│ │ │ │ │ │ └── styles.xml
│ │ │ │ │ └── profile
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ ├── build.gradle
│ │ │ ├── gradle.properties
│ │ │ ├── gradle
│ │ │ │ └── wrapper
│ │ │ │ │ └── gradle-wrapper.properties
│ │ │ └── settings.gradle
│ │ ├── ios
│ │ │ ├── .gitignore
│ │ │ ├── Flutter
│ │ │ │ ├── AppFrameworkInfo.plist
│ │ │ │ ├── Debug.xcconfig
│ │ │ │ └── Release.xcconfig
│ │ │ ├── Podfile
│ │ │ ├── Runner.xcodeproj
│ │ │ │ ├── project.pbxproj
│ │ │ │ ├── project.xcworkspace
│ │ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ │ └── xcshareddata
│ │ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ │ └── xcshareddata
│ │ │ │ │ └── xcschemes
│ │ │ │ │ └── Runner.xcscheme
│ │ │ ├── Runner.xcworkspace
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata
│ │ │ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ │ │ └── WorkspaceSettings.xcsettings
│ │ │ ├── Runner
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Assets.xcassets
│ │ │ │ │ ├── AppIcon.appiconset
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ │ │ │ ├── Icon-App-20x20@1x.png
│ │ │ │ │ │ ├── Icon-App-20x20@2x.png
│ │ │ │ │ │ ├── Icon-App-20x20@3x.png
│ │ │ │ │ │ ├── Icon-App-29x29@1x.png
│ │ │ │ │ │ ├── Icon-App-29x29@2x.png
│ │ │ │ │ │ ├── Icon-App-29x29@3x.png
│ │ │ │ │ │ ├── Icon-App-40x40@1x.png
│ │ │ │ │ │ ├── Icon-App-40x40@2x.png
│ │ │ │ │ │ ├── Icon-App-40x40@3x.png
│ │ │ │ │ │ ├── Icon-App-60x60@2x.png
│ │ │ │ │ │ ├── Icon-App-60x60@3x.png
│ │ │ │ │ │ ├── Icon-App-76x76@1x.png
│ │ │ │ │ │ ├── Icon-App-76x76@2x.png
│ │ │ │ │ │ └── Icon-App-83.5x83.5@2x.png
│ │ │ │ │ └── LaunchImage.imageset
│ │ │ │ │ │ ├── Contents.json
│ │ │ │ │ │ ├── LaunchImage.png
│ │ │ │ │ │ ├── LaunchImage@2x.png
│ │ │ │ │ │ ├── LaunchImage@3x.png
│ │ │ │ │ │ └── README.md
│ │ │ │ ├── Base.lproj
│ │ │ │ │ ├── LaunchScreen.storyboard
│ │ │ │ │ └── Main.storyboard
│ │ │ │ ├── Info.plist
│ │ │ │ └── Runner-Bridging-Header.h
│ │ │ └── RunnerTests
│ │ │ │ └── RunnerTests.swift
│ │ ├── lib
│ │ │ ├── app.dart
│ │ │ ├── app_config.dart
│ │ │ ├── core
│ │ │ │ ├── auth_repository.dart
│ │ │ │ └── token_service.dart
│ │ │ ├── env
│ │ │ │ └── env.dart
│ │ │ ├── firebase_options.dart
│ │ │ ├── log_config.dart
│ │ │ ├── main.dart
│ │ │ ├── model
│ │ │ │ └── credentials.dart
│ │ │ ├── proxy
│ │ │ │ └── proxy.dart
│ │ │ ├── screen
│ │ │ │ ├── home_screen.dart
│ │ │ │ ├── home_tabs
│ │ │ │ │ ├── call_text_field.dart
│ │ │ │ │ ├── join_call_tab.dart
│ │ │ │ │ └── start_call_tab.dart
│ │ │ │ └── login_screen.dart
│ │ │ ├── stream_video_options.dart
│ │ │ ├── stream_video_sdk.dart
│ │ │ └── utils.dart
│ │ ├── linux
│ │ │ ├── CMakeLists.txt
│ │ │ ├── flutter
│ │ │ │ ├── CMakeLists.txt
│ │ │ │ ├── generated_plugin_registrant.cc
│ │ │ │ ├── generated_plugin_registrant.h
│ │ │ │ └── generated_plugins.cmake
│ │ │ ├── main.cc
│ │ │ ├── my_application.cc
│ │ │ └── my_application.h
│ │ ├── macos
│ │ │ ├── Flutter
│ │ │ │ ├── Flutter-Debug.xcconfig
│ │ │ │ └── Flutter-Release.xcconfig
│ │ │ ├── Podfile
│ │ │ ├── Runner.xcodeproj
│ │ │ │ ├── project.pbxproj
│ │ │ │ ├── project.xcworkspace
│ │ │ │ │ └── xcshareddata
│ │ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ │ └── xcshareddata
│ │ │ │ │ └── xcschemes
│ │ │ │ │ └── Runner.xcscheme
│ │ │ ├── Runner.xcworkspace
│ │ │ │ ├── contents.xcworkspacedata
│ │ │ │ └── xcshareddata
│ │ │ │ │ └── IDEWorkspaceChecks.plist
│ │ │ └── Runner
│ │ │ │ ├── AppDelegate.swift
│ │ │ │ ├── Assets.xcassets
│ │ │ │ └── AppIcon.appiconset
│ │ │ │ │ ├── Contents.json
│ │ │ │ │ ├── app_icon_1024.png
│ │ │ │ │ ├── app_icon_128.png
│ │ │ │ │ ├── app_icon_16.png
│ │ │ │ │ ├── app_icon_256.png
│ │ │ │ │ ├── app_icon_32.png
│ │ │ │ │ ├── app_icon_512.png
│ │ │ │ │ └── app_icon_64.png
│ │ │ │ ├── Base.lproj
│ │ │ │ └── MainMenu.xib
│ │ │ │ ├── Configs
│ │ │ │ ├── AppInfo.xcconfig
│ │ │ │ ├── Debug.xcconfig
│ │ │ │ ├── Release.xcconfig
│ │ │ │ └── Warnings.xcconfig
│ │ │ │ ├── DebugProfile.entitlements
│ │ │ │ ├── Info.plist
│ │ │ │ ├── MainFlutterWindow.swift
│ │ │ │ └── Release.entitlements
│ │ ├── pubspec.yaml
│ │ ├── web
│ │ │ ├── favicon.png
│ │ │ ├── icons
│ │ │ │ ├── Icon-192.png
│ │ │ │ ├── Icon-512.png
│ │ │ │ ├── Icon-maskable-192.png
│ │ │ │ └── Icon-maskable-512.png
│ │ │ ├── index.html
│ │ │ └── manifest.json
│ │ └── windows
│ │ │ ├── CMakeLists.txt
│ │ │ ├── flutter
│ │ │ ├── CMakeLists.txt
│ │ │ └── generated_plugins.cmake
│ │ │ └── runner
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Runner.rc
│ │ │ ├── flutter_window.cpp
│ │ │ ├── flutter_window.h
│ │ │ ├── main.cpp
│ │ │ ├── resource.h
│ │ │ ├── resources
│ │ │ └── app_icon.ico
│ │ │ ├── runner.exe.manifest
│ │ │ ├── utils.cpp
│ │ │ ├── utils.h
│ │ │ ├── win32_window.cpp
│ │ │ └── win32_window.h
│ ├── fonts
│ │ └── StreamIcons.ttf
│ ├── images
│ │ └── call_background.jpg
│ ├── ios
│ │ ├── .gitignore
│ │ ├── Assets
│ │ │ └── .gitkeep
│ │ ├── Classes
│ │ │ ├── PictureInPicture
│ │ │ │ ├── SampleBufferVideoCallView.swift
│ │ │ │ ├── StreamAVPictureInPictureVideoCallViewController.swift
│ │ │ │ ├── StreamBufferTransformer.swift
│ │ │ │ ├── StreamPictureInPictureController.swift
│ │ │ │ ├── StreamPictureInPictureTrackStateAdapter.swift
│ │ │ │ ├── StreamPictureInPictureVideoRenderer.swift
│ │ │ │ ├── StreamPixelBufferPool.swift
│ │ │ │ ├── StreamPixelBufferRepository.swift
│ │ │ │ ├── StreamRTCYUVBuffer.swift
│ │ │ │ ├── StreamYUVToARGBConversion.swift
│ │ │ │ ├── WindowSizePolicy
│ │ │ │ │ ├── StreamPictureInPictureAdaptiveWindowSizePolicy.swift
│ │ │ │ │ ├── StreamPictureInPictureFixedWindowSizePolicy.swift
│ │ │ │ │ └── StreamPictureInPictureWindowSizePolicy.swift
│ │ │ │ └── YpCbCrPixelRange+Default.swift
│ │ │ ├── StreamVideoFlutterPlugin.swift
│ │ │ └── VideoFrameProcessors
│ │ │ │ ├── BlurBackgroundVideoFrameProcessor.swift
│ │ │ │ ├── ImageBackgroundVideoFrameProcessor.swift
│ │ │ │ └── Utils
│ │ │ │ ├── BackgroundImageFilterProcessor.swift
│ │ │ │ ├── CIImage+Resize.swift
│ │ │ │ ├── UIDevice+NeuralEngine.swift
│ │ │ │ └── VideoFilters.swift
│ │ └── stream_video_flutter.podspec
│ ├── l10n.yaml
│ ├── lib
│ │ ├── src
│ │ │ ├── call_background
│ │ │ │ ├── background_service.dart
│ │ │ │ └── model
│ │ │ │ │ ├── notification_options.dart
│ │ │ │ │ ├── notification_payload.dart
│ │ │ │ │ └── service_type.dart
│ │ │ ├── call_controls
│ │ │ │ ├── call_control_option.dart
│ │ │ │ ├── call_controls.dart
│ │ │ │ └── controls
│ │ │ │ │ ├── add_reaction_option.dart
│ │ │ │ │ ├── default_control_options.dart
│ │ │ │ │ ├── flip_camera_option.dart
│ │ │ │ │ ├── leave_call_option.dart
│ │ │ │ │ ├── toggle_camera_option.dart
│ │ │ │ │ ├── toggle_closed_captions_option.dart
│ │ │ │ │ ├── toggle_layout_option.dart
│ │ │ │ │ ├── toggle_microphone_option.dart
│ │ │ │ │ ├── toggle_recording_option.dart
│ │ │ │ │ ├── toggle_screen_sharing_option.dart
│ │ │ │ │ └── toggle_speakerphone_option.dart
│ │ │ ├── call_participants
│ │ │ │ ├── call_participant.dart
│ │ │ │ ├── call_participants.dart
│ │ │ │ ├── indicators
│ │ │ │ │ ├── audio_indicator.dart
│ │ │ │ │ ├── audio_level_indicator.dart
│ │ │ │ │ └── connection_quality_indicator.dart
│ │ │ │ ├── layout
│ │ │ │ │ ├── call_participants_grid_view.dart
│ │ │ │ │ ├── call_participants_spotlight_view.dart
│ │ │ │ │ └── participant_layout_mode.dart
│ │ │ │ ├── local_video.dart
│ │ │ │ ├── overlay_app_bar.dart
│ │ │ │ ├── participant_label.dart
│ │ │ │ ├── regular_call_participants_content.dart
│ │ │ │ └── screen_share_call_participants_content.dart
│ │ │ ├── call_screen
│ │ │ │ ├── call_container.dart
│ │ │ │ ├── call_content
│ │ │ │ │ ├── call_app_bar.dart
│ │ │ │ │ ├── call_content.dart
│ │ │ │ │ └── picture_in_picture
│ │ │ │ │ │ ├── picture_in_picture_configuration.dart
│ │ │ │ │ │ └── stream_picture_in_picture_ui_kit_view.dart
│ │ │ │ ├── call_diagnostics_content
│ │ │ │ │ └── call_diagnostics_content.dart
│ │ │ │ ├── common
│ │ │ │ │ ├── call_background.dart
│ │ │ │ │ ├── calling_participants.dart
│ │ │ │ │ └── participant_avatars.dart
│ │ │ │ ├── incoming_call
│ │ │ │ │ ├── incoming_call_content.dart
│ │ │ │ │ └── incoming_call_controls.dart
│ │ │ │ ├── lobby_participants_view.dart
│ │ │ │ ├── lobby_video.dart
│ │ │ │ ├── lobby_view.dart
│ │ │ │ └── outgoing_call
│ │ │ │ │ ├── outgoing_call_content.dart
│ │ │ │ │ └── outgoing_call_controls.dart
│ │ │ ├── l10n
│ │ │ │ ├── arb
│ │ │ │ │ ├── stream_video_flutter_en.arb
│ │ │ │ │ └── stream_video_flutter_nl.arb
│ │ │ │ ├── custom_stream_video_localizations_delegate.dart
│ │ │ │ ├── localization_extension.dart
│ │ │ │ └── localizations
│ │ │ │ │ ├── stream_video_flutter_localizations.dart
│ │ │ │ │ ├── stream_video_flutter_localizations_en.dart
│ │ │ │ │ └── stream_video_flutter_localizations_nl.dart
│ │ │ ├── livestream
│ │ │ │ ├── livestream_backstage_content.dart
│ │ │ │ ├── livestream_content.dart
│ │ │ │ ├── livestream_ended_content.dart
│ │ │ │ ├── livestream_info.dart
│ │ │ │ ├── livestream_player.dart
│ │ │ │ └── livestream_speakerphone_option.dart
│ │ │ ├── models
│ │ │ │ ├── mute_toggle_titles.dart
│ │ │ │ └── stream_icon_toggle.dart
│ │ │ ├── renderer
│ │ │ │ └── video_renderer.dart
│ │ │ ├── screen_share
│ │ │ │ ├── desktop_screen_selector.dart
│ │ │ │ ├── screen_selector_state_notifier.dart
│ │ │ │ ├── screen_share.dart
│ │ │ │ ├── screen_share_logger.dart
│ │ │ │ └── screen_share_thumbnail_widget.dart
│ │ │ ├── theme
│ │ │ │ ├── call_content_theme.dart
│ │ │ │ ├── call_controls_theme.dart
│ │ │ │ ├── call_participant_theme.dart
│ │ │ │ ├── incoming_outgoing_call_theme.dart
│ │ │ │ ├── lobby_view_theme.dart
│ │ │ │ ├── local_video_theme.dart
│ │ │ │ ├── stream_color_theme.dart
│ │ │ │ ├── stream_icons.dart
│ │ │ │ ├── stream_livestream_theme.dart
│ │ │ │ ├── stream_text_theme.dart
│ │ │ │ ├── stream_video_theme.dart
│ │ │ │ ├── themes.dart
│ │ │ │ └── user_avatar_theme.dart
│ │ │ ├── utils
│ │ │ │ ├── device_segmentation.dart
│ │ │ │ └── extensions.dart
│ │ │ ├── video_effects
│ │ │ │ └── video_effects_manager.dart
│ │ │ └── widgets
│ │ │ │ ├── floating_view
│ │ │ │ ├── floating_view_alignment.dart
│ │ │ │ ├── floating_view_container.dart
│ │ │ │ ├── simple_floating_view.dart
│ │ │ │ └── snapping_floating_view.dart
│ │ │ │ ├── size_change_listener.dart
│ │ │ │ ├── stream_user_avatar.dart
│ │ │ │ └── tile_view.dart
│ │ ├── stream_video_flutter.dart
│ │ ├── stream_video_flutter_background.dart
│ │ ├── stream_video_flutter_l10n.dart
│ │ ├── stream_video_flutter_method_channel.dart
│ │ └── stream_video_flutter_platform_interface.dart
│ ├── pubspec.yaml
│ └── test
│ │ ├── flutter_test_config.dart
│ │ ├── src
│ │ ├── call_controls
│ │ │ └── controls
│ │ │ │ └── toggle_microphone_option_test.dart
│ │ └── call_screen
│ │ │ └── call_content
│ │ │ ├── call_content_test.dart
│ │ │ └── goldens
│ │ │ └── ci
│ │ │ ├── stream_call_content_extend_body_false.png
│ │ │ └── stream_call_content_extend_body_true.png
│ │ └── test_utils
│ │ └── test_wrapper.dart
├── stream_video_noise_cancellation
│ ├── .gitignore
│ ├── .metadata
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── android
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── settings.gradle
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── io
│ │ │ └── getstream
│ │ │ └── video
│ │ │ └── flutter
│ │ │ └── stream_video_noise_cancellation
│ │ │ ├── NoiseCancellationAudioProcessingController.kt
│ │ │ └── StreamVideoNoiseCancellationPlugin.kt
│ ├── ios
│ │ ├── .gitignore
│ │ ├── Assets
│ │ │ └── .gitkeep
│ │ ├── Classes
│ │ │ ├── AudioFilters.swift
│ │ │ ├── NeuralEngineProvider.swift
│ │ │ ├── NoiseCancellationFilter.swift
│ │ │ ├── StreamAudioFilterCapturePostProcessingModule.swift
│ │ │ ├── StreamAudioProcessingModule.swift
│ │ │ └── StreamVideoNoiseCancellationPlugin.swift
│ │ ├── Resources
│ │ │ └── PrivacyInfo.xcprivacy
│ │ └── stream_video_noise_cancellation.podspec
│ ├── lib
│ │ ├── noise_cancellation_audio_processor.dart
│ │ ├── stream_video_noise_cancellation.dart
│ │ ├── stream_video_noise_cancellation_method_channel.dart
│ │ └── stream_video_noise_cancellation_platform_interface.dart
│ ├── pubspec.yaml
│ └── test
│ │ ├── mock_noise_cancellation_platform.dart
│ │ └── noise_cancellation_audio_processor_test.dart
├── stream_video_push_notification
│ ├── .gitignore
│ ├── .metadata
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── android
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── gradle
│ │ │ └── wrapper
│ │ │ │ └── gradle-wrapper.properties
│ │ ├── settings.gradle
│ │ └── src
│ │ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── kotlin
│ │ │ └── io
│ │ │ └── getstream
│ │ │ └── video
│ │ │ └── flutter
│ │ │ └── stream_video_push_notification
│ │ │ └── StreamVideoPushNotificationPlugin.kt
│ ├── ios
│ │ ├── .gitignore
│ │ ├── Assets
│ │ │ └── .gitkeep
│ │ ├── Classes
│ │ │ ├── StreamVideoPKDelegateManager.swift
│ │ │ ├── StreamVideoPushNotificationPlugin.swift
│ │ │ └── StreamVideoPushParams.swift
│ │ └── stream_video_push_notification.podspec
│ ├── lib
│ │ ├── src
│ │ │ ├── stream_video_push_notification.dart
│ │ │ ├── stream_video_push_params.dart
│ │ │ ├── stream_video_push_params.g.dart
│ │ │ └── stream_video_push_provider.dart
│ │ ├── stream_video_push_notification.dart
│ │ ├── stream_video_push_notification_method_channel.dart
│ │ └── stream_video_push_notification_platform_interface.dart
│ └── pubspec.yaml
└── stream_video_screen_sharing
│ ├── .gitignore
│ ├── .metadata
│ ├── CHANGELOG.md
│ ├── LICENSE
│ ├── README.md
│ ├── analysis_options.yaml
│ ├── ios
│ ├── .gitignore
│ ├── Assets
│ │ └── .gitkeep
│ ├── Classes
│ │ ├── Atomic.swift
│ │ ├── BroadcastSampleHandler.swift
│ │ ├── BroadcastSampleUploader.swift
│ │ ├── SocketConnection.swift
│ │ └── StreamVideoScreenSharingPlugin.swift
│ └── stream_video_screen_sharing.podspec
│ ├── lib
│ ├── stream_video_screen_sharing_method_channel.dart
│ └── stream_video_screen_sharing_platform_interface.dart
│ └── pubspec.yaml
├── pubspec.lock
└── pubspec.yaml
/.github/CODEOWNERS:
--------------------------------------------------------------------------------
1 | # Default owner for everything in the repo
2 | * @GetStream/flutter-developers
3 |
--------------------------------------------------------------------------------
/.github/workflows/scripts/remove-from-coverage.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Fast fail the script on failures.
4 | set -e
5 |
6 | flutter pub global run remove_from_coverage:remove_from_coverage -f coverage/lcov.info -r '\.g\.dart$' -r '\.freezed\.dart$'
7 |
--------------------------------------------------------------------------------
/.readme-assets/Github-Graphic-Flutter.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/.readme-assets/Github-Graphic-Flutter.jpg
--------------------------------------------------------------------------------
/.run/dogfooding.run.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/dogfooding/android/.ruby-version:
--------------------------------------------------------------------------------
1 | 3.1.0
--------------------------------------------------------------------------------
/dogfooding/android/.sign/debug.keystore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/android/.sign/debug.keystore
--------------------------------------------------------------------------------
/dogfooding/android/Gemfile:
--------------------------------------------------------------------------------
1 | source "https://rubygems.org"
2 |
3 | gem "fastlane"
4 |
5 | plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
6 | eval_gemfile(plugins_path) if File.exist?(plugins_path)
7 |
--------------------------------------------------------------------------------
/dogfooding/android/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | #Flutter Wrapper
2 | -keep class io.flutter.plugin.** { *; }
3 | -keep class io.flutter.util.** { *; }
4 | -keep class io.flutter.view.** { *; }
5 | -keep class io.flutter.plugins.** { *; }
6 |
7 | -keep class com.hiennv.flutter_callkit_incoming.** { *; }
8 |
9 | -keep class java.beans.Transient.** {*;}
10 | -keep class java.beans.ConstructorProperties.** {*;}
11 | -keep class java.nio.file.Path.** {*;}
12 |
13 | -dontwarn java.beans.ConstructorProperties
14 | -dontwarn java.beans.Transient
15 | -dontwarn org.conscrypt.Conscrypt
16 | -dontwarn org.conscrypt.OpenSSLProvider
17 | -dontwarn org.w3c.dom.bootstrap.DOMImplementationRegistry
--------------------------------------------------------------------------------
/dogfooding/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/ic_launcher-playstore.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/android/app/src/main/ic_launcher-playstore.png
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/java/io/flutter/app/FlutterMultiDexApplication.java:
--------------------------------------------------------------------------------
1 | // Generated file.
2 | //
3 | // If you wish to remove Flutter's multidex support, delete this entire file.
4 | //
5 | // Modifications to this file should be done in a copy under a different name
6 | // as this file may be regenerated.
7 |
8 | package io.flutter.app;
9 |
10 | import android.app.Application;
11 | import android.content.Context;
12 | import androidx.annotation.CallSuper;
13 | import androidx.multidex.MultiDex;
14 |
15 | /**
16 | * Extension of {@link android.app.Application}, adding multidex support.
17 | */
18 | public class FlutterMultiDexApplication extends Application {
19 | @Override
20 | @CallSuper
21 | protected void attachBaseContext(Context base) {
22 | super.attachBaseContext(base);
23 | MultiDex.install(this);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/drawable-hdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/android/app/src/main/res/drawable-hdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/drawable-mdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/android/app/src/main/res/drawable-mdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/drawable-v24/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
12 |
13 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/drawable-xhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/android/app/src/main/res/drawable-xhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/drawable-xxhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/android/app/src/main/res/drawable-xxhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/android/app/src/main/res/mipmap-hdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/android/app/src/main/res/mipmap-mdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/android/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
--------------------------------------------------------------------------------
/dogfooding/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
--------------------------------------------------------------------------------
/dogfooding/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/dogfooding/android/fastlane/Appfile:
--------------------------------------------------------------------------------
1 | package_name("io.getstream.video.flutter.dogfooding") # e.g. com.krausefx.app
2 | json_key_file("firebase-service-account.json")
3 |
--------------------------------------------------------------------------------
/dogfooding/android/fastlane/Pluginfile:
--------------------------------------------------------------------------------
1 | # Autogenerated by fastlane
2 | #
3 | # Ensure this file is checked in to source control!
4 |
5 | gem 'fastlane-plugin-increment_version_code'
6 |
--------------------------------------------------------------------------------
/dogfooding/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx4g -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParallelGC -Dlint.nullness.ignore-deprecated=true
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 | android.defaults.buildfeatures.buildconfig=true
5 | android.nonTransitiveRClass=false
6 | android.nonFinalResIds=false
7 |
--------------------------------------------------------------------------------
/dogfooding/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | zipStoreBase=GRADLE_USER_HOME
4 | zipStorePath=wrapper/dists
5 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
6 |
--------------------------------------------------------------------------------
/dogfooding/assets/bg1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/assets/bg1.jpg
--------------------------------------------------------------------------------
/dogfooding/assets/bg2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/assets/bg2.jpg
--------------------------------------------------------------------------------
/dogfooding/assets/bg3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/assets/bg3.jpg
--------------------------------------------------------------------------------
/dogfooding/assets/google_logo.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/dogfooding/assets/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/assets/ic_launcher.png
--------------------------------------------------------------------------------
/dogfooding/assets/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/assets/ic_launcher_background.png
--------------------------------------------------------------------------------
/dogfooding/assets/ic_launcher_background.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/dogfooding/assets/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/assets/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/dogfooding/assets/stream_video_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/assets/stream_video_icon.png
--------------------------------------------------------------------------------
/dogfooding/assets/video_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/assets/video_icon.png
--------------------------------------------------------------------------------
/dogfooding/firebase.json:
--------------------------------------------------------------------------------
1 | {"flutter":{"platforms":{"android":{"default":{"projectId":"stream-video-9b586","appId":"1:347024607410:android:d51590d07b9f9f3c8c21ab","fileOutput":"android/app/google-services.json"}},"ios":{"default":{"projectId":"stream-video-9b586","appId":"1:347024607410:ios:ffe113a4b22025cd8c21ab","uploadDebugSymbols":true,"fileOutput":"ios/Runner/GoogleService-Info.plist"}},"macos":{"default":{"projectId":"stream-video-9b586","appId":"1:347024607410:ios:ffe113a4b22025cd8c21ab","uploadDebugSymbols":true,"fileOutput":"macos/Runner/GoogleService-Info.plist"}},"dart":{"lib/firebase_options.dart":{"projectId":"stream-video-9b586","configurations":{"android":"1:347024607410:android:d51590d07b9f9f3c8c21ab","ios":"1:347024607410:ios:ffe113a4b22025cd8c21ab","macos":"1:347024607410:ios:ffe113a4b22025cd8c21ab","web":"1:347024607410:web:fd70974cbc1256bb8c21ab","windows":"1:347024607410:web:a6bb53a4d4ce4a198c21ab"}}}}}}
--------------------------------------------------------------------------------
/dogfooding/ios/.ruby-version:
--------------------------------------------------------------------------------
1 | 3.1.0
--------------------------------------------------------------------------------
/dogfooding/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 12.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/dogfooding/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/dogfooding/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/dogfooding/ios/Gemfile:
--------------------------------------------------------------------------------
1 | source "https://rubygems.org"
2 |
3 | gem "fastlane"
4 | gem "cocoapods"
5 | gem 'fastlane-plugin-flutter_version', '~> 1.0', '>= 1.0.1'
6 |
--------------------------------------------------------------------------------
/dogfooding/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/dogfooding/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/dogfooding/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/dogfooding/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/dogfooding/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/dogfooding/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon1024.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon120.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon152.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon167.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon180.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon40.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon58.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon60.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon76.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon80.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-beta.appiconset/icon87.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-20@2x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-20@3x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-29@2x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-29@3x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-40@2x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-40@3x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-60@2x~car.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-60@2x~car.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-60@3x~car.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-60@3x~car.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon~ios-marketing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon~ios-marketing.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/IconMask.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "Icon-Mask@1x.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "Icon-Mask@2x.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "Icon-Mask@3x.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/IconMask.imageset/Icon-Mask@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/IconMask.imageset/Icon-Mask@1x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/IconMask.imageset/Icon-Mask@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/IconMask.imageset/Icon-Mask@2x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Assets.xcassets/IconMask.imageset/Icon-Mask@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/ios/Runner/Assets.xcassets/IconMask.imageset/Icon-Mask@3x.png
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/dogfooding/ios/Runner/Runner.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | aps-environment
6 | development
7 | com.apple.developer.associated-domains
8 |
9 | applinks:getstream.io
10 | applinks:pronto.getstream.io
11 | applinks:staging.getstream.io
12 | applinks:stream-calls-dogfood.vercel.app
13 |
14 | com.apple.security.application-groups
15 |
16 | group.io.getstream.video.flutter.dogfooding
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/dogfooding/ios/ScreenSharing/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | RTCAppGroupIdentifier
6 | group.io.getstream.video.flutter.dogfooding
7 | NSExtension
8 |
9 | NSExtensionPointIdentifier
10 | com.apple.broadcast-services-upload
11 | NSExtensionPrincipalClass
12 | $(PRODUCT_MODULE_NAME).SampleHandler
13 | RPBroadcastProcessMode
14 | RPBroadcastProcessModeSampleBuffer
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/dogfooding/ios/ScreenSharing/SampleHandler.swift:
--------------------------------------------------------------------------------
1 | import ReplayKit
2 | import stream_video_screen_sharing
3 |
4 | class SampleHandler: BroadcastSampleHandler {}
5 |
--------------------------------------------------------------------------------
/dogfooding/ios/ScreenSharing/ScreenSharing.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.application-groups
6 |
7 | group.io.getstream.video.flutter.dogfooding
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/dogfooding/ios/fastlane/Appfile:
--------------------------------------------------------------------------------
1 | app_identifier("io.getstream.video.flutter.dogfooding") # The bundle identifier of your app
2 | apple_id(ENV["FASTLANE_APPLE_ID"]) # Your Apple Developer Portal username
3 |
4 | itc_team_id("118902954") # App Store Connect Team ID
5 | team_id("EHV7XZLAHA") # Developer Portal Team ID
6 |
7 | # For more information about the Appfile, see:
8 | # https://docs.fastlane.tools/advanced/#appfile
9 |
--------------------------------------------------------------------------------
/dogfooding/ios/fastlane/Matchfile:
--------------------------------------------------------------------------------
1 | git_url("git@github.com:GetStream/ios-certificates.git")
2 |
3 | storage_mode("git")
4 |
5 | team_id("EHV7XZLAHA")
6 |
7 | type("appstore") # The default type, can be: appstore, adhoc, enterprise or development
8 |
9 | app_identifier(["io.getstream.video.flutter.dogfooding", "io.getstream.video.flutter.dogfooding.ScreenSharing"])
10 | # username("user@fastlane.tools") # Your Apple Developer Portal username
11 |
--------------------------------------------------------------------------------
/dogfooding/ios/firebase_app_id_file.json:
--------------------------------------------------------------------------------
1 | {
2 | "file_generated_by": "FlutterFire CLI",
3 | "purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
4 | "GOOGLE_APP_ID": "1:347024607410:ios:ffe113a4b22025cd8c21ab",
5 | "FIREBASE_PROJECT_ID": "stream-video-9b586",
6 | "GCM_SENDER_ID": "347024607410"
7 | }
--------------------------------------------------------------------------------
/dogfooding/lib/app/custom_video_localizations.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/widgets.dart';
2 | import 'package:stream_video_flutter/stream_video_flutter_l10n.dart';
3 |
4 | class CustomVideoLocalizationsNL extends StreamVideoFlutterLocalizationsNl {
5 | static LocalizationsDelegate get delegate =>
6 | CustomVideoLocalizationsDelegate('nl', CustomVideoLocalizationsNL());
7 |
8 | @override
9 | String get desktopScreenShareEntireScreen => 'Scherm';
10 | }
11 |
--------------------------------------------------------------------------------
/dogfooding/lib/dogfooding_app_channel.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/services.dart';
2 |
3 | class DogfoodingAppChannel {
4 | static const platform =
5 | MethodChannel('io.getstream.video.flutter.dogfooding.channel');
6 |
7 | Future registerGreyscaleEffect() async {
8 | await platform.invokeMethod('registerGreyscaleEffect');
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/dogfooding/lib/main.dart:
--------------------------------------------------------------------------------
1 | // 🐦 Flutter imports:
2 | import 'package:flutter/widgets.dart';
3 |
4 | // 🌎 Project imports:
5 | import 'app/app.dart';
6 |
7 | void main() {
8 | // Needed to initialize the plugin bindings.
9 | WidgetsFlutterBinding.ensureInitialized();
10 |
11 | runApp(const StreamDogFoodingApp());
12 | }
13 |
--------------------------------------------------------------------------------
/dogfooding/lib/theme/app_palette.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class AppColorPalette {
4 | AppColorPalette._();
5 |
6 | static const Color backgroundColor = Color(0xFF101213);
7 | static const Color primary = Color(0xFF005FFF);
8 | static const Color buttonSecondary = Color(0xFF19232D);
9 | static const Color avatarBackground = Color(0xFF183158);
10 | static const Color appGreen = Color(0xFF00E2A1);
11 | static const Color primaryText = Color(0xFFEFF0F1);
12 | static const Color secondaryText = Color(0xFF979CA0);
13 | static const Color appRed = Color(0xFFDC433B);
14 | }
15 |
--------------------------------------------------------------------------------
/dogfooding/lib/utils/after_layout.dart:
--------------------------------------------------------------------------------
1 | // 🎯 Dart imports:
2 | import 'dart:async';
3 |
4 | // 🐦 Flutter imports:
5 | import 'package:flutter/widgets.dart';
6 |
7 | mixin AfterLayoutMixin on State {
8 | @override
9 | void initState() {
10 | super.initState();
11 | WidgetsBinding.instance.endOfFrame.then(
12 | (_) {
13 | if (mounted) afterFirstLayout(context);
14 | },
15 | );
16 | }
17 |
18 | FutureOr afterFirstLayout(BuildContext context);
19 | }
20 |
--------------------------------------------------------------------------------
/dogfooding/lib/utils/assets.dart:
--------------------------------------------------------------------------------
1 | const streamLogoAsset = 'assets/stream_logo.svg';
2 | const streamVideoIconAsset = 'assets/stream_video_icon.png';
3 | const googleLogoAsset = 'assets/google_logo.svg';
4 | const globalNetworkAssest = 'assets/global_network.svg';
5 |
--------------------------------------------------------------------------------
/dogfooding/lib/utils/consts.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/foundation.dart';
2 | import 'package:flutter/services.dart' show appFlavor;
3 | import 'package:stream_video_flutter/stream_video_flutter.dart';
4 |
5 | final StreamCallType kCallType = StreamCallType.defaultType();
6 | const String kMessageChannelType = 'videocall';
7 | const String kAppName = 'Stream Dogfooding';
8 | const double kMaxWidthRegularScreen = 500;
9 | bool get kIsProd => switch (appFlavor) {
10 | 'dev' => false,
11 | 'beta' => false,
12 | 'prod' => true,
13 | _ => !kIsWeb, // On our web builds we enable non-prod features.
14 | };
15 |
--------------------------------------------------------------------------------
/dogfooding/lib/utils/loading_dialog.dart:
--------------------------------------------------------------------------------
1 | // 🐦 Flutter imports:
2 | import 'package:flutter/material.dart';
3 | import 'package:go_router/go_router.dart';
4 |
5 | // 📦 Package imports:
6 | import 'package:stream_video_flutter/stream_video_flutter.dart';
7 |
8 | Future showLoadingIndicator(BuildContext context) async {
9 | return showDialog(
10 | context: context,
11 | barrierDismissible: false,
12 | builder: (BuildContext context) {
13 | return SimpleDialog(
14 | elevation: 0,
15 | backgroundColor: Colors.transparent,
16 | children: [
17 | Center(
18 | child: CircularProgressIndicator(
19 | color: StreamVideoTheme.of(context).colorTheme.accentPrimary,
20 | ),
21 | )
22 | ],
23 | );
24 | },
25 | );
26 | }
27 |
28 | void hideLoadingIndicator(BuildContext context) => context.pop();
29 |
--------------------------------------------------------------------------------
/dogfooding/lib/widgets/settings_menu/settings_menu_item.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_dogfooding/theme/app_palette.dart';
3 |
4 | class SettingsMenuItem extends StatelessWidget {
5 | const SettingsMenuItem({
6 | super.key,
7 | required this.child,
8 | this.onPressed,
9 | });
10 |
11 | final Widget child;
12 | final void Function()? onPressed;
13 |
14 | @override
15 | Widget build(BuildContext context) {
16 | return InkWell(
17 | onTap: onPressed,
18 | child: Container(
19 | constraints: const BoxConstraints(minHeight: 40),
20 | decoration: BoxDecoration(
21 | color: AppColorPalette.buttonSecondary,
22 | borderRadius: BorderRadius.circular(16),
23 | ),
24 | padding: const EdgeInsets.all(8),
25 | child: child,
26 | ),
27 | );
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/dogfooding/linux/flutter/generated_plugin_registrant.h:
--------------------------------------------------------------------------------
1 | //
2 | // Generated file. Do not edit.
3 | //
4 |
5 | // clang-format off
6 |
7 | #ifndef GENERATED_PLUGIN_REGISTRANT_
8 | #define GENERATED_PLUGIN_REGISTRANT_
9 |
10 | #include
11 |
12 | // Registers Flutter plugins.
13 | void fl_register_plugins(FlPluginRegistry* registry);
14 |
15 | #endif // GENERATED_PLUGIN_REGISTRANT_
16 |
--------------------------------------------------------------------------------
/dogfooding/linux/main.cc:
--------------------------------------------------------------------------------
1 | #include "my_application.h"
2 |
3 | int main(int argc, char** argv) {
4 | g_autoptr(MyApplication) app = my_application_new();
5 | return g_application_run(G_APPLICATION(app), argc, argv);
6 | }
7 |
--------------------------------------------------------------------------------
/dogfooding/linux/my_application.h:
--------------------------------------------------------------------------------
1 | #ifndef FLUTTER_MY_APPLICATION_H_
2 | #define FLUTTER_MY_APPLICATION_H_
3 |
4 | #include
5 |
6 | G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION,
7 | GtkApplication)
8 |
9 | /**
10 | * my_application_new:
11 | *
12 | * Creates a new Flutter-based application.
13 | *
14 | * Returns: a new #MyApplication.
15 | */
16 | MyApplication* my_application_new();
17 |
18 | #endif // FLUTTER_MY_APPLICATION_H_
19 |
--------------------------------------------------------------------------------
/dogfooding/macos/Flutter/Flutter-Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "ephemeral/Flutter-Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/dogfooding/macos/Flutter/Flutter-Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "ephemeral/Flutter-Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/dogfooding/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/dogfooding/macos/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/dogfooding/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import Cocoa
2 | import FlutterMacOS
3 |
4 | @main
5 | class AppDelegate: FlutterAppDelegate {
6 | override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
7 | return true
8 | }
9 |
10 | override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool {
11 | return true
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon-beta.appiconset/app_icon_1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon-beta.appiconset/app_icon_1024.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon-beta.appiconset/app_icon_128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon-beta.appiconset/app_icon_128.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon-beta.appiconset/app_icon_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon-beta.appiconset/app_icon_16.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon-beta.appiconset/app_icon_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon-beta.appiconset/app_icon_256.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon-beta.appiconset/app_icon_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon-beta.appiconset/app_icon_32.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon-beta.appiconset/app_icon_512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon-beta.appiconset/app_icon_512.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon-beta.appiconset/app_icon_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon-beta.appiconset/app_icon_64.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/app_icon_1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/app_icon_1024.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/app_icon_128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/app_icon_128.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/app_icon_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/app_icon_16.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/app_icon_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/app_icon_256.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/app_icon_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/app_icon_32.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/app_icon_512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/app_icon_512.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/app_icon_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon-dev.appiconset/app_icon_64.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Configs/AppInfo.xcconfig:
--------------------------------------------------------------------------------
1 | // Application-level settings for the Runner target.
2 | //
3 | // This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the
4 | // future. If not, the values below would default to using the project name when this becomes a
5 | // 'flutter create' template.
6 |
7 | // The application's name. By default this is also the title of the Flutter window.
8 | PRODUCT_NAME = dogfooding
9 |
10 | // The application's bundle identifier
11 | PRODUCT_BUNDLE_IDENTIFIER = io.getstream.video.flutter.dogfooding
12 |
13 | // The copyright displayed in application information
14 | PRODUCT_COPYRIGHT = Copyright © 2022 io.getstream.video.flutter.dogfooding. All rights reserved.
15 |
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Configs/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "../../Flutter/Flutter-Debug.xcconfig"
2 | #include "Warnings.xcconfig"
3 |
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Configs/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "../../Flutter/Flutter-Release.xcconfig"
2 | #include "Warnings.xcconfig"
3 |
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Configs/Warnings.xcconfig:
--------------------------------------------------------------------------------
1 | WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings
2 | GCC_WARN_UNDECLARED_SELECTOR = YES
3 | CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES
4 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE
5 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES
6 | CLANG_WARN_PRAGMA_PACK = YES
7 | CLANG_WARN_STRICT_PROTOTYPES = YES
8 | CLANG_WARN_COMMA = YES
9 | GCC_WARN_STRICT_SELECTOR_MATCH = YES
10 | CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES
11 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES
12 | GCC_WARN_SHADOW = YES
13 | CLANG_WARN_UNREACHABLE_CODE = YES
14 |
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/DebugProfile.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.cs.allow-jit
8 |
9 | com.apple.security.device.audio-input
10 |
11 | com.apple.security.device.camera
12 |
13 | com.apple.security.network.client
14 |
15 | com.apple.security.network.server
16 |
17 | keychain-access-groups
18 |
19 | $(AppIdentifierPrefix)com.google.GIDSignIn
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/MainFlutterWindow.swift:
--------------------------------------------------------------------------------
1 | import Cocoa
2 | import FlutterMacOS
3 |
4 | class MainFlutterWindow: NSWindow {
5 | override func awakeFromNib() {
6 | let flutterViewController = FlutterViewController.init()
7 | let windowFrame = self.frame
8 | self.contentViewController = flutterViewController
9 | self.setFrame(windowFrame, display: true)
10 |
11 | RegisterGeneratedPlugins(registry: flutterViewController)
12 |
13 | super.awakeFromNib()
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/dogfooding/macos/Runner/Release.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.cs.allow-jit
8 |
9 | com.apple.security.device.audio-input
10 |
11 | com.apple.security.device.camera
12 |
13 | com.apple.security.network.client
14 |
15 | com.apple.security.network.server
16 |
17 | keychain-access-groups
18 |
19 | $(AppIdentifierPrefix)com.google.GIDSignIn
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/dogfooding/macos/firebase_app_id_file.json:
--------------------------------------------------------------------------------
1 | {
2 | "file_generated_by": "FlutterFire CLI",
3 | "purpose": "FirebaseAppID & ProjectID for this Firebase app in this directory",
4 | "GOOGLE_APP_ID": "1:347024607410:ios:ffe113a4b22025cd8c21ab",
5 | "FIREBASE_PROJECT_ID": "stream-video-9b586",
6 | "GCM_SENDER_ID": "347024607410"
7 | }
--------------------------------------------------------------------------------
/dogfooding/web/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/web/favicon.png
--------------------------------------------------------------------------------
/dogfooding/web/icons/Icon-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/web/icons/Icon-192.png
--------------------------------------------------------------------------------
/dogfooding/web/icons/Icon-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/web/icons/Icon-512.png
--------------------------------------------------------------------------------
/dogfooding/web/icons/Icon-maskable-192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/web/icons/Icon-maskable-192.png
--------------------------------------------------------------------------------
/dogfooding/web/icons/Icon-maskable-512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/web/icons/Icon-maskable-512.png
--------------------------------------------------------------------------------
/dogfooding/windows/runner/resource.h:
--------------------------------------------------------------------------------
1 | //{{NO_DEPENDENCIES}}
2 | // Microsoft Visual C++ generated include file.
3 | // Used by Runner.rc
4 | //
5 | #define IDI_APP_ICON 101
6 |
7 | // Next default values for new objects
8 | //
9 | #ifdef APSTUDIO_INVOKED
10 | #ifndef APSTUDIO_READONLY_SYMBOLS
11 | #define _APS_NEXT_RESOURCE_VALUE 102
12 | #define _APS_NEXT_COMMAND_VALUE 40001
13 | #define _APS_NEXT_CONTROL_VALUE 1001
14 | #define _APS_NEXT_SYMED_VALUE 101
15 | #endif
16 | #endif
17 |
--------------------------------------------------------------------------------
/dogfooding/windows/runner/resources/app_icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/GetStream/stream-video-flutter/7ca6f77c2827874411eb2afc123e3f1b1a0777c4/dogfooding/windows/runner/resources/app_icon.ico
--------------------------------------------------------------------------------
/dogfooding/windows/runner/utils.h:
--------------------------------------------------------------------------------
1 | #ifndef RUNNER_UTILS_H_
2 | #define RUNNER_UTILS_H_
3 |
4 | #include
5 | #include
6 |
7 | // Creates a console for the process, and redirects stdout and stderr to
8 | // it for both the runner and the Flutter library.
9 | void CreateAndAttachConsole();
10 |
11 | // Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string
12 | // encoded in UTF-8. Returns an empty std::string on failure.
13 | std::string Utf8FromUtf16(const wchar_t* utf16_string);
14 |
15 | // Gets the command line arguments passed in as a std::vector,
16 | // encoded in UTF-8. Returns an empty std::vector on failure.
17 | std::vector GetCommandLineArguments();
18 |
19 | #endif // RUNNER_UTILS_H_
20 |
--------------------------------------------------------------------------------
/packages/stream_video/example/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:stream_video/stream_video.dart';
3 |
4 | Future main() async {
5 | WidgetsFlutterBinding.ensureInitialized();
6 |
7 | StreamVideo.create(
8 | 'api_token',
9 | user: User.guest(userId: 'user_id'),
10 | );
11 | }
12 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/globals.dart:
--------------------------------------------------------------------------------
1 | import 'package:meta/meta.dart';
2 |
3 | const String streamSdkName = 'stream-flutter';
4 | const String streamVideoVersion = '0.9.5';
5 | const String openapiModelsVersion = '167.9.1';
6 | const String protocolModelsVersion = '1.35.0';
7 | const String androidWebRTCVersion = '1.3.8';
8 | const String iosWebRTCVersion = '125.6422.65';
9 |
10 | const String streamDefaultUserAgent =
11 | 'stream-video-flutter-v$streamVideoVersion';
12 | final xStreamClientHeader = '$streamDefaultUserAgent|$clientVersionDetails';
13 |
14 | /// Details regarding app name, version, os and device. Is set during initialization of StreamVideo instance.
15 | @internal
16 | String? clientVersionDetails;
17 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/open_api/video/coordinator/auth/authentication.dart:
--------------------------------------------------------------------------------
1 | //
2 | // AUTO-GENERATED FILE, DO NOT MODIFY!
3 | //
4 | // @dart=2.18
5 |
6 | // ignore_for_file: unused_element, unused_import
7 | // ignore_for_file: always_put_required_named_parameters_first
8 | // ignore_for_file: constant_identifier_names
9 | // ignore_for_file: lines_longer_than_80_chars
10 |
11 | part of openapi.api;
12 |
13 | // ignore: one_member_abstracts
14 | abstract class Authentication {
15 | /// Apply authentication settings to header and query params.
16 | Future applyToParams(
17 | List queryParams, Map headerParams);
18 | }
19 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/open_api/video/coordinator/auth/oauth.dart:
--------------------------------------------------------------------------------
1 | //
2 | // AUTO-GENERATED FILE, DO NOT MODIFY!
3 | //
4 | // @dart=2.18
5 |
6 | // ignore_for_file: unused_element, unused_import
7 | // ignore_for_file: always_put_required_named_parameters_first
8 | // ignore_for_file: constant_identifier_names
9 | // ignore_for_file: lines_longer_than_80_chars
10 |
11 | part of openapi.api;
12 |
13 | class OAuth implements Authentication {
14 | OAuth({this.accessToken = ''});
15 |
16 | String accessToken;
17 |
18 | @override
19 | Future applyToParams(
20 | List queryParams,
21 | Map headerParams,
22 | ) async {
23 | if (accessToken.isNotEmpty) {
24 | headerParams['Authorization'] = 'Bearer $accessToken';
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/protobuf/google/protobuf/duration.pbenum.dart:
--------------------------------------------------------------------------------
1 | ///
2 | // Generated code. Do not modify.
3 | // source: google/protobuf/duration.proto
4 | //
5 | // @dart = 2.12
6 | // ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
7 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/protobuf/google/protobuf/duration.pbserver.dart:
--------------------------------------------------------------------------------
1 | ///
2 | // Generated code. Do not modify.
3 | // source: google/protobuf/duration.proto
4 | //
5 | // @dart = 2.12
6 | // ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,deprecated_member_use_from_same_package,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
7 |
8 | export 'duration.pb.dart';
9 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/protobuf/google/protobuf/struct.pbserver.dart:
--------------------------------------------------------------------------------
1 | ///
2 | // Generated code. Do not modify.
3 | // source: google/protobuf/struct.proto
4 | //
5 | // @dart = 2.12
6 | // ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,deprecated_member_use_from_same_package,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
7 |
8 | export 'struct.pb.dart';
9 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/protobuf/google/protobuf/timestamp.pbenum.dart:
--------------------------------------------------------------------------------
1 | ///
2 | // Generated code. Do not modify.
3 | // source: google/protobuf/timestamp.proto
4 | //
5 | // @dart = 2.12
6 | // ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
7 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/protobuf/google/protobuf/timestamp.pbserver.dart:
--------------------------------------------------------------------------------
1 | ///
2 | // Generated code. Do not modify.
3 | // source: google/protobuf/timestamp.proto
4 | //
5 | // @dart = 2.12
6 | // ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,deprecated_member_use_from_same_package,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
7 |
8 | export 'timestamp.pb.dart';
9 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/protobuf/google/protobuf/wrappers.pbenum.dart:
--------------------------------------------------------------------------------
1 | ///
2 | // Generated code. Do not modify.
3 | // source: google/protobuf/wrappers.proto
4 | //
5 | // @dart = 2.12
6 | // ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
7 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/protobuf/google/protobuf/wrappers.pbserver.dart:
--------------------------------------------------------------------------------
1 | ///
2 | // Generated code. Do not modify.
3 | // source: google/protobuf/wrappers.proto
4 | //
5 | // @dart = 2.12
6 | // ignore_for_file: annotate_overrides,camel_case_types,constant_identifier_names,deprecated_member_use_from_same_package,directives_ordering,library_prefixes,non_constant_identifier_names,prefer_final_fields,return_of_invalid_type,unnecessary_const,unnecessary_import,unnecessary_this,unused_import,unused_shown_name
7 |
8 | export 'wrappers.pb.dart';
9 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/protobuf/video/sfu/event/events.pbenum.dart:
--------------------------------------------------------------------------------
1 | //
2 | // Generated code. Do not modify.
3 | // source: video/sfu/event/events.proto
4 | //
5 | // @dart = 3.3
6 |
7 | // ignore_for_file: annotate_overrides, camel_case_types, comment_references
8 | // ignore_for_file: constant_identifier_names, library_prefixes
9 | // ignore_for_file: non_constant_identifier_names, prefer_final_fields
10 | // ignore_for_file: unnecessary_import, unnecessary_this, unused_import
11 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/protobuf/video/sfu/event/events.pbserver.dart:
--------------------------------------------------------------------------------
1 | //
2 | // Generated code. Do not modify.
3 | // source: video/sfu/event/events.proto
4 | //
5 | // @dart = 3.3
6 |
7 | // ignore_for_file: annotate_overrides, camel_case_types, comment_references
8 | // ignore_for_file: constant_identifier_names
9 | // ignore_for_file: deprecated_member_use_from_same_package, library_prefixes
10 | // ignore_for_file: non_constant_identifier_names, prefer_final_fields
11 | // ignore_for_file: unnecessary_import, unnecessary_this, unused_import
12 |
13 | export 'events.pb.dart';
14 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/protobuf/video/sfu/models/models.pbserver.dart:
--------------------------------------------------------------------------------
1 | //
2 | // Generated code. Do not modify.
3 | // source: video/sfu/models/models.proto
4 | //
5 | // @dart = 3.3
6 |
7 | // ignore_for_file: annotate_overrides, camel_case_types, comment_references
8 | // ignore_for_file: constant_identifier_names
9 | // ignore_for_file: deprecated_member_use_from_same_package, library_prefixes
10 | // ignore_for_file: non_constant_identifier_names, prefer_final_fields
11 | // ignore_for_file: unnecessary_import, unnecessary_this, unused_import
12 |
13 | export 'models.pb.dart';
14 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/protobuf/video/sfu/signal_rpc/signal.pbenum.dart:
--------------------------------------------------------------------------------
1 | //
2 | // Generated code. Do not modify.
3 | // source: video/sfu/signal_rpc/signal.proto
4 | //
5 | // @dart = 3.3
6 |
7 | // ignore_for_file: annotate_overrides, camel_case_types, comment_references
8 | // ignore_for_file: constant_identifier_names, library_prefixes
9 | // ignore_for_file: non_constant_identifier_names, prefer_final_fields
10 | // ignore_for_file: unnecessary_import, unnecessary_this, unused_import
11 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/src/audio_processing/audio_processor.dart:
--------------------------------------------------------------------------------
1 | import '../utils/none.dart';
2 | import '../utils/result.dart';
3 |
4 | abstract class AudioProcessor {
5 | Future> isEnabled();
6 | Future> setEnabled(bool enabled);
7 | Future> deviceSupportsAdvancedAudioProcessing();
8 | }
9 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/src/call/call_ringing_state.dart:
--------------------------------------------------------------------------------
1 | enum CallRingingState {
2 | ended,
3 | rejected,
4 | accepted,
5 | ringing,
6 | }
7 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/src/call/session/call_session_config.dart:
--------------------------------------------------------------------------------
1 | import '../../types/other.dart';
2 |
3 | class CallSessionConfig {
4 | const CallSessionConfig({
5 | required this.sfuName,
6 | required this.sfuToken,
7 | required this.sfuUrl,
8 | required this.sfuWsEndpoint,
9 | required this.rtcConfig,
10 | });
11 |
12 | final String sfuName;
13 | final String sfuToken;
14 | final String sfuUrl;
15 | final String sfuWsEndpoint;
16 | final RTCConfiguration rtcConfig;
17 |
18 | @override
19 | String toString() {
20 | return 'CallSessionConfig{sfuName: $sfuName, sfuToken: $sfuToken, '
21 | 'sfuUrl: $sfuUrl, sfuWsEndpoint: $sfuWsEndpoint, '
22 | 'rtcConfig: $rtcConfig}';
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/src/coordinator/open_api/error/open_api_error_code.dart:
--------------------------------------------------------------------------------
1 | mixin OpenApiErrorCode {
2 | static const tokenExpired = 40;
3 | static const tokenNotValid = 41;
4 | static const tokenDateIncorrect = 42;
5 | static const tokenSignatureIncorrect = 43;
6 | static const apiKeyNotFound = 2;
7 |
8 | static final tokenRelated = [
9 | tokenExpired,
10 | tokenNotValid,
11 | tokenDateIncorrect,
12 | tokenSignatureIncorrect,
13 | ];
14 | }
15 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/src/core/utils.dart:
--------------------------------------------------------------------------------
1 | import '../types/other.dart';
2 |
3 | RTCConfiguration defaultRtcConfiguration(String sfuUrl) {
4 | final hostName = Uri.parse(sfuUrl).host;
5 |
6 | return RTCConfiguration(
7 | iceServers: [
8 | const RTCIceServer(
9 | urls: ['stun:stun.l.google.com:19302'],
10 | ),
11 | RTCIceServer(
12 | urls: ['turn:$hostName:3478'],
13 | username: 'video',
14 | credential: 'video',
15 | ),
16 | ],
17 | );
18 | }
19 |
--------------------------------------------------------------------------------
/packages/stream_video/lib/src/core/video_error.dart:
--------------------------------------------------------------------------------
1 | import 'package:equatable/equatable.dart';
2 | import 'package:web_socket_channel/web_socket_channel.dart';
3 |
4 | class StreamVideoError with EquatableMixin implements Exception {
5 | const StreamVideoError(this.message);
6 |
7 | /// Error message
8 | final String message;
9 |
10 | @override
11 | List