{"id":28913709,"url":"https://github.com/waterbustech/waterbus-flutter-sdk","last_synced_at":"2025-10-23T02:39:36.714Z","repository":{"id":204601260,"uuid":"711726902","full_name":"waterbustech/waterbus-flutter-sdk","owner":"waterbustech","description":"Flutter SDK for real-time audio/video with Waterbus.","archived":false,"fork":false,"pushed_at":"2025-06-11T08:45:39.000Z","size":4054,"stargazers_count":29,"open_issues_count":2,"forks_count":6,"subscribers_count":2,"default_branch":"migration/v3","last_synced_at":"2025-06-19T02:46:03.103Z","etag":null,"topics":["av1-codec","conferencing","flutter","flutter-sdk","flutter-webrtc","realtime-messaging","video","video-call","voip","webrtc","webrtc-video","websocket"],"latest_commit_sha":null,"homepage":"https://docs.waterbus.tech","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/waterbustech.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-10-30T03:40:45.000Z","updated_at":"2025-06-11T08:45:43.000Z","dependencies_parsed_at":"2023-11-23T04:34:45.046Z","dependency_job_id":"f52eaa7f-7d22-4e29-bf06-00ec86ca61d1","html_url":"https://github.com/waterbustech/waterbus-flutter-sdk","commit_stats":null,"previous_names":["waterbustech/waterbus-flutter-sdk"],"tags_count":72,"template":false,"template_full_name":null,"purl":"pkg:github/waterbustech/waterbus-flutter-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waterbustech%2Fwaterbus-flutter-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waterbustech%2Fwaterbus-flutter-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waterbustech%2Fwaterbus-flutter-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waterbustech%2Fwaterbus-flutter-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/waterbustech","download_url":"https://codeload.github.com/waterbustech/waterbus-flutter-sdk/tar.gz/refs/heads/migration/v3","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waterbustech%2Fwaterbus-flutter-sdk/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261193134,"owners_count":23122910,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["av1-codec","conferencing","flutter","flutter-sdk","flutter-webrtc","realtime-messaging","video","video-call","voip","webrtc","webrtc-video","websocket"],"created_at":"2025-06-21T21:08:38.732Z","updated_at":"2025-10-23T02:39:36.706Z","avatar_url":"https://github.com/waterbustech.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Flutter [Waterbus](https://docs.waterbus.tech) SDK\n\nFlutter plugin of [Waterbus](https://docs.waterbus.tech). Build video call or online meeting application with SFU model. Supports iOS, Android. [ExampleApp](https://github.com/waterbustech/waterbus)\n\n\u003ca href=\"https://opensource.org/licenses/Apache-2.0\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-Apache%202.0-green.svg\"/\u003e\u003c/a\u003e\n\u003cimg src=\"https://img.shields.io/github/issues/waterbustech/waterbus-flutter-sdk\" alt=\"GitHub issues\"\u003e\u003ca href=\"https://chromium.googlesource.com/external/webrtc/+/branch-heads/6099\"\u003e\u003cimg src=\"https://img.shields.io/badge/libwebrtc-125.6422.02-yellow.svg\" alt=\"libwebrtc\"\u003e\u003c/a\u003e\u003cimg src=\"https://img.shields.io/cocoapods/v/KaiRTC\" alt=\"Cocoapods Version\"\u003e\u003ca href=\"https://github.com/lambiengcode\"\u003e\u003cimg src=\"https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat\u0026amp;logo=github\" alt=\"PRs Welcome\"\u003e\u003c/a\u003e\n\n## ⚡ Current supported features\n\n| Feature            | Subscribe/Publish | Screen Sharing | Picture in Picture | Virtual Background | Beauty Filters | End to End Encryption |\n| ------------------ | ----------------- | -------------- | ------------------ | ------------------ | -------------- | --------------------- |\n| Android            |         🟢         |        🟢      |          🟢         |          🟢         |       🟢        |           🟢          | \n| iOS                |         🟢         |        🟢      |          🟢         |          🟢         |       🟢       |           🟢          |        \n| Web                |         🟢         |        🟢      |          🟢         |          🟢         |       🟡       |           🟢          |\n| MacOS              |         🟢         |        🟢      |          🔴         |          🟢         |       🟢       |           🟢          |\n| Linux                |         🟢         |        🟢      |          🔴         |          🟡         |       🟢       |           🟢          |    \n| Windows                |         🟢         |        🟢      |          🔴         |          🟡         |       🟢       |           🟢          | \n\n🟢 = Available\n\n🟡 = Coming soon (Work in progress)\n\n🔴 = Not currently available (Possibly in the future)\n\n## Installation\n\n### Install Rust via [rustup](https://rustup.rs/).\n\n### Add dependency\n\nAdd the dependency from command-line\n\n```bash\n$ flutter pub add waterbus_sdk\n```\n\nThe command above will add this to the `pubspec.yaml` file in your project (you can do this manually):\n```yaml\ndependencies:\n    waterbus_sdk: ^1.3.15\n```\n\n## Configuration\n\n### Android\n\nEnsure the following permission is present in your Android Manifest file, located in `\u003cproject root\u003e/android/app/src/main/AndroidManifest.xml`:\n\n```xml\n\u003cuses-feature android:name=\"android.hardware.camera\" /\u003e\n\u003cuses-feature android:name=\"android.hardware.camera.autofocus\" /\u003e\n\u003cuses-permission android:name=\"android.permission.CAMERA\" /\u003e\n\u003cuses-permission android:name=\"android.permission.RECORD_AUDIO\" /\u003e\n\u003cuses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\" /\u003e\n\u003cuses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\" /\u003e\n\u003cuses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\" /\u003e\n```\n\nIf you need to use a Bluetooth device, please add:\n\n```xml\n\u003cuses-permission android:name=\"android.permission.BLUETOOTH\" android:maxSdkVersion=\"30\" /\u003e\n\u003cuses-permission android:name=\"android.permission.BLUETOOTH_ADMIN\" android:maxSdkVersion=\"30\" /\u003e\n```\n\nThe Flutter project template adds it, so it may already be there.\n\nAlso you will need to set your build settings to Java 8, because official WebRTC jar now uses static methods in `EglBase` interface. Just add this to your app level `build.gradle`:\n\n```groovy\nandroid {\n    //...\n    compileOptions {\n        sourceCompatibility JavaVersion.VERSION_1_8\n        targetCompatibility JavaVersion.VERSION_1_8\n    }\n}\n```\n\n### iOS\n\nAdd the following entry to your _Info.plist_ file, located in `\u003cproject root\u003e/ios/Runner/Info.plist`:\n\n```xml\n\u003ckey\u003eNSCameraUsageDescription\u003c/key\u003e\n\u003cstring\u003e$(PRODUCT_NAME) Camera Usage!\u003c/string\u003e\n\u003ckey\u003eNSMicrophoneUsageDescription\u003c/key\u003e\n\u003cstring\u003e$(PRODUCT_NAME) Microphone Usage!\u003c/string\u003e\n```\n\nThis entry allows your app to access camera and microphone.\n\n### Note for iOS.\nThe WebRTC.xframework compiled after the m104 release no longer supports iOS arm devices, so need to add the `config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES'` to your ios/Podfile in your project\n\nios/Podfile\n\n```ruby\npost_install do |installer|\n  installer.pods_project.targets.each do |target|\n    flutter_additional_ios_build_settings(target)\n     target.build_configurations.each do |config|\n      # Workaround for https://github.com/flutter/flutter/issues/64502\n      config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES' # \u003c= this line\n     end\n  end\nend\n```\n\n## Usage\n\n## Initialization\n\nBefore using any feature, initialize the SDK with server and encryption config:\n\n```dart\nimport 'package:waterbus_sdk/waterbus_sdk.dart';\n\nvoid main() async {\n  final config = SdkConfig(\n    serverConfig: ServerConfig(\n      url: \"https://services.waterbus.tech\",\n      suffixUrl: \"/busapi/v3/\",\n    ),\n    messageEncryptionKey: 'your-secret-message-key',\n    webrtcE2eeKey: 'your-e2ee-key',\n  );\n\n  await WaterbusSdk.instance.initialize(config: config);\n}\n```\n\n---\n\n## Authentication\n\n### Create Token\n\nCreate a new session using a token:\n\n```dart\nfinal Result\u003cUser\u003e result = await WaterbusSdk.instance.createToken(\n  AuthPayload(fullName: \"Waterbus\", externalId: \"unique-id\"),\n);\n```\n\n### Refresh Token\n\n```dart\nawait WaterbusSdk.instance.renewToken();\n```\n\n### Delete Token\n\nDelete token for disconnect websocket and prepare for create new token\n\n```dart\nawait WaterbusSdk.instance.deleteToken();\n```\n\n---\n\n## User Management\n\n### Get user profile\n\n```dart\nfinal profile = await WaterbusSdk.instance.getProfile();\n```\n\n### Update profile\n\n```dart\nawait WaterbusSdk.instance.updateProfile(user: updatedUser);\n```\n\n### Change username\n\n```dart\nawait WaterbusSdk.instance.updateUsername(username: \"new_username\");\n```\n\n## Room Management\n\n### Create room\n\n```dart\nfinal RoomParams params = RoomParams(\n  room: Room(title: 'Daily Meeting'),\n  password: '123123',\n  userId: 'user-id',\n);\n\nfinal result = await WaterbusSdk.instance.createRoom(params: params);\n```\n\n### Join room\n\n```dart\nfinal JoinRoomParams params = JoinRoomParams(\n  roomId: 'room-id',\n  password: 123123',\n  userId: 'user-id',\n);\n\nfinal Result\u003cRoom\u003e result = await WaterbusSdk.instance.joinRoom(params: params);\n```\n\n### Leave room\n\n```dart\nawait WaterbusSdk.instance.leaveRoom();\n```\n\n## Media Controls\n\n```dart\nawait WaterbusSdk.instance.prepareMedia();\nawait WaterbusSdk.instance.toggleVideo();\nawait WaterbusSdk.instance.toggleAudio();\nawait WaterbusSdk.instance.switchCamera();\n```\n\n### Screen sharing\n\n```dart\nawait WaterbusSdk.instance.startScreenSharing();\n// Stop\nawait WaterbusSdk.instance.stopScreenSharing();\n```\n\n### Raise or lower hand\n\n```dart\nWaterbusSdk.instance.toggleRaiseHand();\n```\n\n### Virtual Background\n\n```dart\nawait WaterbusSdk.instance.enableVirtualBackground(\n  backgroundImage: yourImageBytes,\n  thresholdConfidence: 0.7,\n);\n\n// Disable:\nawait WaterbusSdk.instance.disableVirtualBackground();\n```\n\n## Additional Utilities\n\nGet supported codecs\n\n```dart\nfinal codecs = await WaterbusSdk.instance.getSupportedVideoCodecs();\n```\n\nPicture-in-Picture\n\n```dart\nawait WaterbusSdk.instance.setPictureInPictureEnabled(\n  textureId: 'your_texture_id',\n  enabled: true,\n);\n```\n\n## Contributing\nContributions are welcome! Please feel free to submit a pull request or open an issue if you encounter any problems or have suggestions for improvements.\n\n## Contact Information\n\nIf you have any questions or suggestions related to this application, please contact me via email: lambiengcode@gmail.com.\n\n## Reference\n\n[flutter_webrtc](https://github.com/flutter-webrtc/flutter-webrtc)\n\n## License\n\nApache License 2.0","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaterbustech%2Fwaterbus-flutter-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwaterbustech%2Fwaterbus-flutter-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaterbustech%2Fwaterbus-flutter-sdk/lists"}