diff --git a/.gitignore b/.gitignore
index 0c4dd3865..bd60d1b62 100644
--- a/.gitignore
+++ b/.gitignore
@@ -54,3 +54,4 @@ sample apps/hms-callkit-app/.dart_tool/flutter_build/
.DS_Store
packages/.DS_Store
Runner.ipa
+sample apps/flutterflow-prebuilt-quickstart/.dart_tool/
diff --git a/.trunk/trunk.yaml b/.trunk/trunk.yaml
index e8be4fec8..3d660863f 100644
--- a/.trunk/trunk.yaml
+++ b/.trunk/trunk.yaml
@@ -1,6 +1,6 @@
version: 0.1
cli:
- version: 1.17.2
+ version: 1.18.0
plugins:
sources:
- id: trunk
@@ -10,9 +10,9 @@ lint:
enabled:
- actionlint@1.6.26
- checkov@3.1.9
- - osv-scanner@1.4.3
- - trivy@0.47.0
- - trufflehog@3.63.2-rc0
+ - osv-scanner@1.5.0
+ - trivy@0.48.0
+ - trufflehog@3.63.2
- oxipng@9.0.0
- yamllint@1.33.0
- markdownlint@0.37.0
diff --git a/packages/hms_room_kit/CHANGELOG.md b/packages/hms_room_kit/CHANGELOG.md
index ee07a4e65..5ded47fe0 100644
--- a/packages/hms_room_kit/CHANGELOG.md
+++ b/packages/hms_room_kit/CHANGELOG.md
@@ -5,6 +5,17 @@
| hms_room_kit | [![Pub Version](https://img.shields.io/pub/v/hms_room_kit)](https://pub.dev/packages/hms_room_kit) |
| hmssdk_flutter | [![Pub Version](https://img.shields.io/pub/v/hmssdk_flutter)](https://pub.dev/packages/hmssdk_flutter) |
+## 1.0.8 - 2023-12-15
+
+| Package | Version |
+| -------------- | ------------------------------------------------------------------------------------------------------ |
+| hms_room_kit | 1.0.8 |
+| hmssdk_flutter | 1.9.5 |
+
+### 🔄 Changed
+
+- Updated Streaming and Recording UI
+
## 1.0.7 - 2023-12-08
| Package | Version |
diff --git a/packages/hms_room_kit/README.md b/packages/hms_room_kit/README.md
index e3d302683..216e2c978 100644
--- a/packages/hms_room_kit/README.md
+++ b/packages/hms_room_kit/README.md
@@ -14,12 +14,12 @@
A powerful prebuilt UI library for audio/video conferencing, live streaming, and one-to-one calls.
This package provides developers with a comprehensive set of tools and components to quickly integrate high-quality audio and video communication features into their Flutter applications.
-
| Package | Version |
| -------------- | ------------------------------------------------------------------------------------------------------ |
| hms_room_kit | [![Pub Version](https://img.shields.io/pub/v/hms_room_kit)](https://pub.dev/packages/hms_room_kit) |
| hmssdk_flutter | [![Pub Version](https://img.shields.io/pub/v/hmssdk_flutter)](https://pub.dev/packages/hmssdk_flutter) |
+
🧱 The Prebuilt QuickStart Guide is [available here](https://www.100ms.live/docs/flutter/v2/quickstart/prebuilt).
📖 Read the Complete Documentation here: https://www.100ms.live/docs/flutter/v2/guides/quickstart
diff --git a/packages/hms_room_kit/example/ios/Podfile.lock b/packages/hms_room_kit/example/ios/Podfile.lock
index 5c31dbc5f..5481e0490 100644
--- a/packages/hms_room_kit/example/ios/Podfile.lock
+++ b/packages/hms_room_kit/example/ios/Podfile.lock
@@ -6,14 +6,14 @@ PODS:
- HMSBroadcastExtensionSDK (0.0.9)
- HMSHLSPlayerSDK (0.0.2):
- HMSAnalyticsSDK (= 0.0.2)
- - HMSSDK (1.3.0):
+ - HMSSDK (1.3.1):
- HMSAnalyticsSDK (= 0.0.2)
- HMSWebRTC (= 1.0.5116)
- - hmssdk_flutter (1.9.3):
+ - hmssdk_flutter (1.9.4):
- Flutter
- HMSBroadcastExtensionSDK (= 0.0.9)
- HMSHLSPlayerSDK (= 0.0.2)
- - HMSSDK (= 1.3.0)
+ - HMSSDK (= 1.3.1)
- HMSWebRTC (1.0.5116)
- path_provider_foundation (0.0.1):
- Flutter
@@ -70,8 +70,8 @@ SPEC CHECKSUMS:
HMSAnalyticsSDK: 4d2a88a729b1eb42f3d25f217c28937ec318a5b7
HMSBroadcastExtensionSDK: d80fe325f6c928bd8e5176290b5a4b7ae15d6fbb
HMSHLSPlayerSDK: 6a54ad4d12f3dc2270d1ecd24019d71282a4f6a3
- HMSSDK: 631908d772646b66b3c4f7f4e1fb2681f7abb990
- hmssdk_flutter: 0b17359aefb7ec222e1b0cc44a595759a317ff98
+ HMSSDK: 04aac0fefd95419cd1b4135156d4295cbcd51216
+ hmssdk_flutter: 3876d06f4ad68bf48a2ceb4c797551fedb860bd1
HMSWebRTC: ae54e9dd91b869051b283b43b14f57d43b7bf8e1
path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6
diff --git a/packages/hms_room_kit/example/pubspec.lock b/packages/hms_room_kit/example/pubspec.lock
index 49e421dac..872696dd2 100644
--- a/packages/hms_room_kit/example/pubspec.lock
+++ b/packages/hms_room_kit/example/pubspec.lock
@@ -214,15 +214,15 @@ packages:
path: ".."
relative: true
source: path
- version: "1.0.7"
+ version: "1.0.8"
hmssdk_flutter:
dependency: transitive
description:
name: hmssdk_flutter
- sha256: "27dfc516ee4673ff092fc4e18487c315780b8470a2fbcf0f486bdfa529fc53cb"
+ sha256: f61fb1ffcaf7296e0e2eeff9bc34d699baf9190136b8570a15cde61819cf3276
url: "https://pub.dev"
source: hosted
- version: "1.9.4"
+ version: "1.9.5"
http:
dependency: transitive
description:
@@ -243,10 +243,10 @@ packages:
dependency: transitive
description:
name: intl
- sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d"
+ sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
url: "https://pub.dev"
source: hosted
- version: "0.18.1"
+ version: "0.19.0"
js:
dependency: transitive
description:
@@ -616,10 +616,10 @@ packages:
dependency: transitive
description:
name: url_launcher
- sha256: b1c9e98774adf8820c96fbc7ae3601231d324a7d5ebd8babe27b6dfac91357ba
+ sha256: e9aa5ea75c84cf46b3db4eea212523591211c3cf2e13099ee4ec147f54201c86
url: "https://pub.dev"
source: hosted
- version: "6.2.1"
+ version: "6.2.2"
url_launcher_android:
dependency: transitive
description:
diff --git a/packages/hms_room_kit/example/pubspec.yaml b/packages/hms_room_kit/example/pubspec.yaml
index 60a14146d..f22f2b898 100644
--- a/packages/hms_room_kit/example/pubspec.yaml
+++ b/packages/hms_room_kit/example/pubspec.yaml
@@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
-version: 1.0.7
+version: 1.0.8
environment:
sdk: ">=2.19.6 <3.0.0"
diff --git a/packages/hms_room_kit/lib/src/assets/icons/recording_paused.svg b/packages/hms_room_kit/lib/src/assets/icons/recording_paused.svg
new file mode 100644
index 000000000..9fbd1e990
--- /dev/null
+++ b/packages/hms_room_kit/lib/src/assets/icons/recording_paused.svg
@@ -0,0 +1,3 @@
+
diff --git a/packages/hms_room_kit/lib/src/hls_viewer/hls_viewer_bottom_navigation_bar.dart b/packages/hms_room_kit/lib/src/hls_viewer/hls_viewer_bottom_navigation_bar.dart
index d48687772..2b5960b60 100644
--- a/packages/hms_room_kit/lib/src/hls_viewer/hls_viewer_bottom_navigation_bar.dart
+++ b/packages/hms_room_kit/lib/src/hls_viewer/hls_viewer_bottom_navigation_bar.dart
@@ -4,6 +4,7 @@ import 'dart:io';
///Package imports
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
+import 'package:hms_room_kit/hms_room_kit.dart';
import 'package:provider/provider.dart';
///Project imports
@@ -14,7 +15,6 @@ import 'package:hms_room_kit/src/common/utility_components.dart';
import 'package:hms_room_kit/src/hls_viewer/hls_chat_component.dart';
import 'package:hms_room_kit/src/widgets/bottom_sheets/hls_more_options.dart';
import 'package:hms_room_kit/src/hls_viewer/hls_player_store.dart';
-import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart';
import 'package:hms_room_kit/src/meeting/meeting_store.dart';
import 'package:hms_room_kit/src/widgets/common_widgets/hms_embedded_button.dart';
@@ -223,38 +223,45 @@ class HLSViewerBottomNavigationBar extends StatelessWidget {
),
///Menu Button
- HMSEmbeddedButton(
- onTap: () async => {
- showModalBottomSheet(
- isScrollControlled: true,
- backgroundColor: HMSThemeColors.surfaceDim,
- shape: const RoundedRectangleBorder(
- borderRadius: BorderRadius.only(
- topLeft: Radius.circular(16),
- topRight: Radius.circular(16)),
- ),
- context: context,
- builder: (ctx) => ChangeNotifierProvider.value(
- value: context.read(),
- child:
- const HLSMoreOptionsBottomSheet()),
- )
- },
- enabledBorderColor:
- HMSThemeColors.backgroundDim.withAlpha(64),
- onColor:
- HMSThemeColors.backgroundDim.withAlpha(64),
- isActive: true,
- child: Padding(
- padding: const EdgeInsets.all(8.0),
- child: SvgPicture.asset(
- "packages/hms_room_kit/lib/src/assets/icons/menu.svg",
- colorFilter: ColorFilter.mode(
- HMSThemeColors.onSurfaceHighEmphasis,
- BlendMode.srcIn),
- semanticsLabel: "more_button"),
+ if (HMSRoomLayout.isParticipantsListEnabled ||
+ Constant.prebuiltOptions?.userName == null)
+ HMSEmbeddedButton(
+ onTap: () async => {
+ showModalBottomSheet(
+ isScrollControlled: true,
+ backgroundColor:
+ HMSThemeColors.surfaceDim,
+ shape: const RoundedRectangleBorder(
+ borderRadius: BorderRadius.only(
+ topLeft: Radius.circular(16),
+ topRight: Radius.circular(16)),
+ ),
+ context: context,
+ builder: (ctx) =>
+ ChangeNotifierProvider.value(
+ value:
+ context.read(),
+ child:
+ const HLSMoreOptionsBottomSheet()),
+ )
+ },
+ enabledBorderColor: HMSThemeColors
+ .backgroundDim
+ .withAlpha(64),
+ onColor: HMSThemeColors.backgroundDim
+ .withAlpha(64),
+ isActive: true,
+ child: Padding(
+ padding: const EdgeInsets.all(8.0),
+ child: SvgPicture.asset(
+ "packages/hms_room_kit/lib/src/assets/icons/menu.svg",
+ colorFilter: ColorFilter.mode(
+ HMSThemeColors
+ .onSurfaceHighEmphasis,
+ BlendMode.srcIn),
+ semanticsLabel: "more_button"),
+ ),
),
- ),
],
)
: Container(),
diff --git a/packages/hms_room_kit/lib/src/hls_viewer/hls_viewer_header.dart b/packages/hms_room_kit/lib/src/hls_viewer/hls_viewer_header.dart
index 9e9c139b0..0dcd96025 100644
--- a/packages/hms_room_kit/lib/src/hls_viewer/hls_viewer_header.dart
+++ b/packages/hms_room_kit/lib/src/hls_viewer/hls_viewer_header.dart
@@ -2,9 +2,10 @@
import 'dart:developer';
import 'dart:io';
+///Package imports
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
-import 'package:hms_room_kit/src/common/utility_functions.dart';
+import 'package:hmssdk_flutter/hmssdk_flutter.dart';
import 'package:provider/provider.dart';
import 'package:tuple/tuple.dart';
@@ -13,6 +14,7 @@ import 'package:hms_room_kit/src/layout_api/hms_room_layout.dart';
import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart';
import 'package:hms_room_kit/src/meeting/meeting_store.dart';
import 'package:hms_room_kit/src/widgets/common_widgets/hms_title_text.dart';
+import 'package:hms_room_kit/src/common/utility_functions.dart';
///[HLSViewerHeader] is the header of the HLS Viewer screen
class HLSViewerHeader extends StatelessWidget {
@@ -67,7 +69,10 @@ class HLSViewerHeader extends StatelessWidget {
///If the HLS streaming is not started we show nothing
Selector(
selector: (_, meetingStore) =>
- meetingStore.streamingType['hls'] ?? false,
+ (meetingStore.streamingType['hls'] ==
+ HMSStreamingState.started ||
+ meetingStore.streamingType['rtmp'] ==
+ HMSStreamingState.started),
builder: (_, isHLSStarted, __) {
return isHLSStarted
? Container(
@@ -97,14 +102,24 @@ class HLSViewerHeader extends StatelessWidget {
///If the recording is not started we show nothing
///
///If recording initialising state is true we show the loader
- Selector>(
- selector: (_, meetingStore) => Tuple4(
- meetingStore.recordingType["browser"] ?? false,
- meetingStore.recordingType["server"] ?? false,
- meetingStore.recordingType["hls"] ?? false,
- meetingStore.isRecordingInInitialisingState),
+ Selector<
+ MeetingStore,
+ Tuple3>(
+ selector: (_, meetingStore) => Tuple3(
+ meetingStore.recordingType["browser"] ??
+ HMSRecordingState.none,
+ meetingStore.recordingType["server"] ??
+ HMSRecordingState.none,
+ meetingStore.recordingType["hls"] ??
+ HMSRecordingState.none),
builder: (_, data, __) {
- return (data.item1 || data.item2 || data.item3)
+ return (data.item1 == HMSRecordingState.started ||
+ data.item1 == HMSRecordingState.resumed ||
+ data.item2 == HMSRecordingState.started ||
+ data.item2 == HMSRecordingState.resumed ||
+ data.item3 == HMSRecordingState.started ||
+ data.item3 == HMSRecordingState.resumed)
? SvgPicture.asset(
"packages/hms_room_kit/lib/src/assets/icons/record.svg",
height: 24,
@@ -113,7 +128,9 @@ class HLSViewerHeader extends StatelessWidget {
HMSThemeColors.alertErrorDefault,
BlendMode.srcIn),
)
- : data.item4
+ : (data.item1 == HMSRecordingState.starting ||
+ data.item2 == HMSRecordingState.starting ||
+ data.item3 == HMSRecordingState.starting)
? SizedBox(
height: 24,
width: 24,
@@ -121,18 +138,32 @@ class HLSViewerHeader extends StatelessWidget {
strokeWidth: 1,
color: HMSThemeColors.onSurfaceHighEmphasis,
))
- : Container();
+ : (data.item1 == HMSRecordingState.paused ||
+ data.item2 == HMSRecordingState.paused ||
+ data.item3 == HMSRecordingState.paused)
+ ? SvgPicture.asset(
+ "packages/hms_room_kit/lib/src/assets/icons/recording_paused.svg",
+ height: 24,
+ width: 24,
+ colorFilter: ColorFilter.mode(
+ HMSThemeColors.onSurfaceHighEmphasis,
+ BlendMode.srcIn),
+ )
+ : Container();
}),
const SizedBox(
width: 8,
),
///This renders the number of peers
- ///If the HLS streaming is started, we render the number of peers
+ ///If the HLS or RTMP streaming is started, we render the number of peers
///else we render an empty Container
Selector>(
selector: (_, meetingStore) => Tuple2(
- meetingStore.streamingType['hls'] ?? false,
+ meetingStore.streamingType['hls'] ==
+ HMSStreamingState.started ||
+ meetingStore.streamingType['rtmp'] ==
+ HMSStreamingState.started,
meetingStore.peersInRoom),
builder: (_, data, __) {
return data.item1
diff --git a/packages/hms_room_kit/lib/src/meeting/meeting_header.dart b/packages/hms_room_kit/lib/src/meeting/meeting_header.dart
index b544c57e1..e251bcf62 100644
--- a/packages/hms_room_kit/lib/src/meeting/meeting_header.dart
+++ b/packages/hms_room_kit/lib/src/meeting/meeting_header.dart
@@ -83,7 +83,10 @@ class _MeetingHeaderState extends State {
///If recording initialising state is true we show the loader
Selector(
selector: (_, meetingStore) =>
- meetingStore.streamingType['hls'] ?? false,
+ (meetingStore.streamingType['hls'] ==
+ HMSStreamingState.started ||
+ meetingStore.streamingType['rtmp'] ==
+ HMSStreamingState.started),
builder: (_, isHLSStarted, __) {
return isHLSStarted
? Container(
@@ -115,16 +118,29 @@ class _MeetingHeaderState extends State {
///else we render an empty Container
///
///For recording status we use the recordingType map from the [MeetingStore]
- Selector>(
- selector: (_, meetingStore) => Tuple4(
+ Selector<
+ MeetingStore,
+ Tuple3>(
+ selector: (_, meetingStore) => Tuple3(
meetingStore.recordingType["browser"] ??
- false,
- meetingStore.recordingType["server"] ?? false,
- meetingStore.recordingType["hls"] ?? false,
- meetingStore.isRecordingInInitialisingState),
+ HMSRecordingState.none,
+ meetingStore.recordingType["server"] ??
+ HMSRecordingState.none,
+ meetingStore.recordingType["hls"] ??
+ HMSRecordingState.none),
builder: (_, data, __) {
- return (data.item1 || data.item2 || data.item3)
+ return (data.item1 ==
+ HMSRecordingState.started ||
+ data.item1 ==
+ HMSRecordingState.resumed ||
+ data.item2 ==
+ HMSRecordingState.started ||
+ data.item2 ==
+ HMSRecordingState.resumed ||
+ data.item3 ==
+ HMSRecordingState.started ||
+ data.item3 == HMSRecordingState.resumed)
? SvgPicture.asset(
"packages/hms_room_kit/lib/src/assets/icons/record.svg",
height: 24,
@@ -133,16 +149,36 @@ class _MeetingHeaderState extends State {
HMSThemeColors.alertErrorDefault,
BlendMode.srcIn),
)
- : data.item4
+ : (data.item1 ==
+ HMSRecordingState.starting ||
+ data.item2 ==
+ HMSRecordingState.starting ||
+ data.item3 ==
+ HMSRecordingState.starting)
? SizedBox(
- height: 24,
- width: 24,
+ height: 20,
+ width: 20,
child: CircularProgressIndicator(
strokeWidth: 2,
color: HMSThemeColors
.onSurfaceHighEmphasis,
))
- : Container();
+ : (data.item1 ==
+ HMSRecordingState.paused ||
+ data.item2 ==
+ HMSRecordingState.paused ||
+ data.item3 ==
+ HMSRecordingState.paused)
+ ? SvgPicture.asset(
+ "packages/hms_room_kit/lib/src/assets/icons/recording_paused.svg",
+ height: 24,
+ width: 24,
+ colorFilter: ColorFilter.mode(
+ HMSThemeColors
+ .onSurfaceHighEmphasis,
+ BlendMode.srcIn),
+ )
+ : Container();
}),
const SizedBox(
width: 8,
@@ -153,7 +189,10 @@ class _MeetingHeaderState extends State {
///else we render an empty Container
Selector>(
selector: (_, meetingStore) => Tuple2(
- meetingStore.streamingType['hls'] ?? false,
+ ((meetingStore.streamingType['hls'] ==
+ HMSStreamingState.started) ||
+ (meetingStore.streamingType['rtmp'] ==
+ HMSStreamingState.started)),
meetingStore.peersInRoom),
builder: (_, data, __) {
return data.item1
diff --git a/packages/hms_room_kit/lib/src/meeting/meeting_store.dart b/packages/hms_room_kit/lib/src/meeting/meeting_store.dart
index 0c5e6509c..67964737d 100644
--- a/packages/hms_room_kit/lib/src/meeting/meeting_store.dart
+++ b/packages/hms_room_kit/lib/src/meeting/meeting_store.dart
@@ -87,13 +87,16 @@ class MeetingStore extends ChangeNotifier
List toasts = [];
- Map recordingType = {
- "browser": false,
- "server": false,
- "hls": false
+ Map recordingType = {
+ "browser": HMSRecordingState.none,
+ "server": HMSRecordingState.none,
+ "hls": HMSRecordingState.none
};
- Map streamingType = {"rtmp": false, "hls": false};
+ Map streamingType = {
+ "rtmp": HMSStreamingState.none,
+ "hls": HMSStreamingState.none
+ };
String description = "Meeting Ended";
@@ -228,9 +231,6 @@ class MeetingStore extends ChangeNotifier
///This stores the number of peers in the room
int peersInRoom = 0;
- ///Check whether recording is in intialising state
- bool isRecordingInInitialisingState = false;
-
///Pool of video views
List viewControllers = [];
@@ -529,7 +529,8 @@ class MeetingStore extends ChangeNotifier
meetingUrl: meetingUrl, toRecord: toRecord, rtmpUrls: rtmpUrls);
_hmsSDKInteractor.startRtmpOrRecording(hmsRecordingConfig, this);
- isRecordingInInitialisingState = true;
+ recordingType["browser"] = HMSRecordingState.starting;
+
notifyListeners();
}
@@ -768,27 +769,25 @@ class MeetingStore extends ChangeNotifier
log("onJoin-> room: ${room.toString()}");
isMeetingStarted = true;
hmsRoom = room;
- if (room.hmshlsStreamingState?.running ?? false) {
+ if (room.hmshlsStreamingState?.state == HMSStreamingState.started) {
hasHlsStarted = true;
streamUrl = room.hmshlsStreamingState?.variants[0]?.hlsStreamUrl;
} else {
hasHlsStarted = false;
}
- if (room.hmsBrowserRecordingState?.running == true) {
- recordingType["browser"] = true;
- }
- if (room.hmsServerRecordingState?.running == true) {
- recordingType["server"] = true;
- }
- if (room.hmshlsRecordingState?.running == true) {
- recordingType["hls"] = true;
- }
- if (room.hmsRtmpStreamingState?.running == true) {
- streamingType["rtmp"] = true;
- }
- if (room.hmshlsStreamingState?.running == true) {
- streamingType["hls"] = true;
- }
+
+ recordingType["browser"] =
+ room.hmsBrowserRecordingState?.state ?? HMSRecordingState.none;
+ recordingType["server"] =
+ room.hmsServerRecordingState?.state ?? HMSRecordingState.none;
+ recordingType["hls"] =
+ room.hmshlsRecordingState?.state ?? HMSRecordingState.none;
+
+ streamingType["rtmp"] =
+ room.hmsRtmpStreamingState?.state ?? HMSStreamingState.none;
+ streamingType["hls"] =
+ room.hmshlsStreamingState?.state ?? HMSStreamingState.none;
+
setParticipantsList(roles);
for (HMSPeer each in room.peers!) {
if (each.isLocal) {
@@ -897,30 +896,29 @@ class MeetingStore extends ChangeNotifier
switch (update) {
case HMSRoomUpdate.browserRecordingStateUpdated:
recordingType["browser"] =
- room.hmsBrowserRecordingState?.running ?? false;
- isRecordingInInitialisingState =
- room.hmsBrowserRecordingState?.initialising ?? false;
+ room.hmsBrowserRecordingState?.state ?? HMSRecordingState.none;
break;
case HMSRoomUpdate.serverRecordingStateUpdated:
recordingType["server"] =
- room.hmsServerRecordingState?.running ?? false;
+ room.hmsServerRecordingState?.state ?? HMSRecordingState.none;
break;
case HMSRoomUpdate.hlsRecordingStateUpdated:
- recordingType["hls"] = room.hmshlsRecordingState?.running ?? false;
+ recordingType["hls"] =
+ room.hmshlsRecordingState?.state ?? HMSRecordingState.none;
break;
case HMSRoomUpdate.rtmpStreamingStateUpdated:
- streamingType["rtmp"] = room.hmsRtmpStreamingState?.running ?? false;
+ streamingType["rtmp"] =
+ room.hmsRtmpStreamingState?.state ?? HMSStreamingState.none;
break;
case HMSRoomUpdate.hlsStreamingStateUpdated:
isHLSLoading = false;
- streamingType["hls"] = room.hmshlsStreamingState?.running ?? false;
- hasHlsStarted = room.hmshlsStreamingState?.running ?? false;
+ streamingType["hls"] =
+ room.hmshlsStreamingState?.state ?? HMSStreamingState.none;
+ hasHlsStarted =
+ room.hmshlsStreamingState?.state == HMSStreamingState.started;
streamUrl = hasHlsStarted
? room.hmshlsStreamingState?.variants[0]?.hlsStreamUrl
: null;
- Utilities.showToast(room.hmshlsStreamingState?.running ?? false
- ? "HLS Streaming Started"
- : "HLS Streaming Stopped");
break;
default:
break;
@@ -1075,7 +1073,7 @@ class MeetingStore extends ChangeNotifier
for (var speaker in updateSpeakers) {
int index = peerTracks.indexWhere((previousSpeaker) =>
previousSpeaker.uid == "${speaker.peer.peerId}mainVideo");
- if (index > (peersInActiveSpeakerLayout - 1)) {
+ if (index > ((peersInActiveSpeakerLayout + screenShareCount) - 1)) {
PeerTrackNode activeSpeaker = peerTracks[index];
peerTracks.removeAt(index);
peerTracks.insert(screenShareCount, activeSpeaker);
@@ -2192,7 +2190,7 @@ class MeetingStore extends ChangeNotifier
case HMSActionResultListenerMethod.startRtmpOrRecording:
toasts.add(HMSToastModel(hmsException,
hmsToastType: HMSToastsType.errorToast));
- isRecordingInInitialisingState = false;
+ recordingType["browser"] = HMSRecordingState.failed;
notifyListeners();
break;
case HMSActionResultListenerMethod.stopRtmpAndRecording:
diff --git a/packages/hms_room_kit/lib/src/preview/preview_store.dart b/packages/hms_room_kit/lib/src/preview/preview_store.dart
index 486a56a99..971273c6e 100644
--- a/packages/hms_room_kit/lib/src/preview/preview_store.dart
+++ b/packages/hms_room_kit/lib/src/preview/preview_store.dart
@@ -171,28 +171,31 @@ class PreviewStore extends ChangeNotifier
@override
void onRoomUpdate({required HMSRoom room, required HMSRoomUpdate update}) {
this.room = room;
- log("onRoomUpdate-> room: ${room.toString()} update: ${update.name}");
+ log("onRoomUpdate-> room: ${room.toString()} update: ${update.name} streamingState: ${room.hmshlsStreamingState?.state.name}");
switch (update) {
case HMSRoomUpdate.browserRecordingStateUpdated:
- isRecordingStarted = room.hmsBrowserRecordingState?.running ?? false;
+ isRecordingStarted =
+ room.hmsBrowserRecordingState?.state == HMSRecordingState.started;
break;
case HMSRoomUpdate.serverRecordingStateUpdated:
- isRecordingStarted = room.hmsServerRecordingState?.running ?? false;
- break;
+ isRecordingStarted =
+ room.hmsServerRecordingState?.state == HMSRecordingState.started;
case HMSRoomUpdate.hlsRecordingStateUpdated:
- isRecordingStarted = room.hmshlsRecordingState?.running ?? false;
+ isRecordingStarted =
+ room.hmshlsRecordingState?.state == HMSRecordingState.started;
break;
case HMSRoomUpdate.rtmpStreamingStateUpdated:
- isRTMPStreamingStarted = room.hmsRtmpStreamingState?.running ?? false;
+ isRTMPStreamingStarted =
+ room.hmsRtmpStreamingState?.state == HMSStreamingState.started;
break;
case HMSRoomUpdate.hlsStreamingStateUpdated:
- isHLSStreamingStarted = room.hmshlsStreamingState?.running ?? false;
- if (!isMeetingJoined && isRoomJoined) {
- isRoomJoinedAndHLSStarted =
- (room.hmshlsStreamingState?.running ?? false) && isRoomJoined;
+ isHLSStreamingStarted =
+ room.hmshlsStreamingState?.state == HMSStreamingState.started;
+ if (!isMeetingJoined && isRoomJoined && isHLSStreamingStarted) {
+ isRoomJoinedAndHLSStarted = true;
isMeetingJoined = true;
}
break;
diff --git a/packages/hms_room_kit/lib/src/preview_for_role/preview_for_role_header.dart b/packages/hms_room_kit/lib/src/preview_for_role/preview_for_role_header.dart
index c25deda2e..82c65b90c 100644
--- a/packages/hms_room_kit/lib/src/preview_for_role/preview_for_role_header.dart
+++ b/packages/hms_room_kit/lib/src/preview_for_role/preview_for_role_header.dart
@@ -5,6 +5,7 @@ import 'dart:developer';
import 'package:flutter/cupertino.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:hms_room_kit/hms_room_kit.dart';
+import 'package:hmssdk_flutter/hmssdk_flutter.dart';
import 'package:provider/provider.dart';
import 'package:tuple/tuple.dart';
@@ -59,7 +60,8 @@ class _PreviewForRoleHeaderState extends State {
///If the HLS streaming is not started we show nothing
Selector(
selector: (_, meetingStore) =>
- meetingStore.streamingType['hls'] ?? false,
+ meetingStore.streamingType['hls'] ==
+ HMSStreamingState.started,
builder: (_, isHLSStrted, __) {
return isHLSStrted
? Container(
@@ -86,14 +88,25 @@ class _PreviewForRoleHeaderState extends State {
///We render the recording icon based on the recording status
///If the recording is started we show the recording icon
///If the recording is not started we show nothing
- Selector>(
+ Selector<
+ MeetingStore,
+ Tuple3>(
selector: (_, meetingStore) => Tuple3(
- meetingStore.recordingType["browser"] ?? false,
- meetingStore.recordingType["server"] ?? false,
- meetingStore.recordingType["hls"] ?? false,
+ meetingStore.recordingType["browser"] ??
+ HMSRecordingState.none,
+ meetingStore.recordingType["server"] ??
+ HMSRecordingState.none,
+ meetingStore.recordingType["hls"] ??
+ HMSRecordingState.none,
),
builder: (_, data, __) {
- return (data.item1 || data.item2 || data.item3)
+ return (data.item1 == HMSRecordingState.started ||
+ data.item1 == HMSRecordingState.resumed ||
+ data.item2 == HMSRecordingState.started ||
+ data.item2 == HMSRecordingState.resumed ||
+ data.item3 == HMSRecordingState.started ||
+ data.item3 == HMSRecordingState.resumed)
? SvgPicture.asset(
"packages/hms_room_kit/lib/src/assets/icons/record.svg",
height: 24,
@@ -109,11 +122,14 @@ class _PreviewForRoleHeaderState extends State {
),
///This renders the number of peers
- ///If the HLS streaming is started, we render the number of peers
+ ///If the HLS or RTMP streaming is started, we render the number of peers
///else we render an empty Container
Selector>(
selector: (_, meetingStore) => Tuple2(
- meetingStore.streamingType['hls'] ?? false,
+ meetingStore.streamingType['hls'] ==
+ HMSStreamingState.started ||
+ meetingStore.streamingType['rtmp'] ==
+ HMSStreamingState.started,
meetingStore.peersInRoom),
builder: (_, data, __) {
return data.item1
diff --git a/packages/hms_room_kit/lib/src/service/app_debug_config.dart b/packages/hms_room_kit/lib/src/service/app_debug_config.dart
index f92c2ec00..0c6a78d27 100644
--- a/packages/hms_room_kit/lib/src/service/app_debug_config.dart
+++ b/packages/hms_room_kit/lib/src/service/app_debug_config.dart
@@ -14,6 +14,7 @@ class AppDebugConfig {
static bool isSoftwareDecoderDisabled = true;
static bool isAudioMixerDisabled = true;
static bool isAutoSimulcast = true;
+ static bool nameChangeOnPreview = true;
static bool isDebugMode = false;
static bool isProdRoom = true;
@@ -32,5 +33,6 @@ class AppDebugConfig {
isAudioMixerDisabled = true;
isAutoSimulcast = true;
isProdRoom = true;
+ nameChangeOnPreview = true;
}
}
diff --git a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/app_utilities_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/app_utilities_bottom_sheet.dart
index c43e57643..d46fd1935 100644
--- a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/app_utilities_bottom_sheet.dart
+++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/app_utilities_bottom_sheet.dart
@@ -2,6 +2,7 @@
import 'package:badges/badges.dart' as badge;
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
+import 'package:hmssdk_flutter/hmssdk_flutter.dart';
import 'package:provider/provider.dart';
///Project imports
@@ -205,9 +206,12 @@ class _AppUtilitiesBottomSheetState extends State {
false)
///If streaming is on or in initialising state disable the button
- ((meetingStore.streamingType["hls"] ?? false) ||
- (meetingStore.streamingType["rtmp"] ?? false) ||
- meetingStore.isRecordingInInitialisingState)
+ ((meetingStore.streamingType["hls"] ==
+ HMSStreamingState.started) ||
+ (meetingStore.streamingType["rtmp"] ==
+ HMSStreamingState.started) ||
+ meetingStore.recordingType["browser"] ==
+ HMSRecordingState.starting)
? MoreOptionItem(
onTap: () {},
isActive: false,
@@ -219,17 +223,20 @@ class _AppUtilitiesBottomSheetState extends State {
HMSThemeColors.onSurfaceLowEmphasis,
BlendMode.srcIn),
),
- optionText: "Start Recording",
+ optionText: "Record",
optionTextColor: HMSThemeColors.onSurfaceLowEmphasis,
)
: MoreOptionItem(
onTap: () async {
bool isRecordingRunning =
- ((meetingStore.recordingType["hls"] ?? false) ||
- (meetingStore.recordingType["browser"] ??
- false) ||
- (meetingStore.recordingType["server"] ??
- false));
+ ((meetingStore.recordingType["hls"] ==
+ HMSRecordingState.started) ||
+ meetingStore.recordingType["hls"] ==
+ HMSRecordingState.resumed) ||
+ (meetingStore.recordingType["browser"] ==
+ HMSRecordingState.started ||
+ meetingStore.recordingType["browser"] ==
+ HMSRecordingState.resumed);
if (isRecordingRunning) {
Navigator.pop(context);
showModalBottomSheet(
@@ -276,27 +283,27 @@ class _AppUtilitiesBottomSheetState extends State {
rtmpUrls: null);
}
},
- isActive: ((meetingStore.recordingType["hls"] ??
- false) ||
- (meetingStore.recordingType["browser"] ??
- false) ||
- (meetingStore.recordingType["server"] ?? false)),
+ isActive: false,
optionIcon: SvgPicture.asset(
- "packages/hms_room_kit/lib/src/assets/icons/record.svg",
+ "packages/hms_room_kit/lib/src/assets/icons/${meetingStore.recordingType["browser"] == HMSRecordingState.paused ? "recording_paused" : "record"}.svg",
height: 20,
width: 20,
colorFilter: ColorFilter.mode(
- HMSThemeColors.onSurfaceHighEmphasis,
+ meetingStore.recordingType["browser"] ==
+ HMSRecordingState.started
+ ? HMSThemeColors.alertErrorDefault
+ : HMSThemeColors.onSurfaceHighEmphasis,
BlendMode.srcIn),
),
- optionText:
- ((meetingStore.recordingType["hls"] ?? false) ||
- (meetingStore.recordingType["browser"] ??
- false) ||
- (meetingStore.recordingType["server"] ??
- false))
- ? "Stop Recording"
- : "Start Recording",
+ optionText: meetingStore.recordingType["browser"] ==
+ HMSRecordingState.paused
+ ? "Recording Paused"
+ : ((meetingStore.recordingType["hls"] ==
+ HMSRecordingState.started) ||
+ (meetingStore.recordingType["browser"] ==
+ HMSRecordingState.started))
+ ? "Recording"
+ : "Record",
)
],
),
diff --git a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/hls_more_options.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/hls_more_options.dart
index 71cfa12b9..8660f2113 100644
--- a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/hls_more_options.dart
+++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/hls_more_options.dart
@@ -128,37 +128,38 @@ class _HLSMoreOptionsBottomSheetBottomSheetState
),
),
optionText: "Participants"),
- MoreOptionItem(
- onTap: () async {
- var meetingStore = context.read();
- Navigator.pop(context);
- showModalBottomSheet(
- isScrollControlled: true,
- backgroundColor: HMSThemeColors.surfaceDim,
- shape: const RoundedRectangleBorder(
- borderRadius: BorderRadius.only(
- topLeft: Radius.circular(16),
- topRight: Radius.circular(16)),
- ),
- context: context,
- builder: (ctx) => ChangeNotifierProvider.value(
- value: meetingStore,
- child: Padding(
- padding: EdgeInsets.only(
- bottom:
- MediaQuery.of(ctx).viewInsets.bottom),
- child: const ChangeNameBottomSheet())),
- );
- },
- optionIcon: SvgPicture.asset(
- "packages/hms_room_kit/lib/src/assets/icons/pencil.svg",
- height: 20,
- width: 20,
- colorFilter: ColorFilter.mode(
- HMSThemeColors.onSurfaceHighEmphasis,
- BlendMode.srcIn),
- ),
- optionText: "Change Name")
+ if (Constant.prebuiltOptions?.userName == null)
+ MoreOptionItem(
+ onTap: () async {
+ var meetingStore = context.read();
+ Navigator.pop(context);
+ showModalBottomSheet(
+ isScrollControlled: true,
+ backgroundColor: HMSThemeColors.surfaceDim,
+ shape: const RoundedRectangleBorder(
+ borderRadius: BorderRadius.only(
+ topLeft: Radius.circular(16),
+ topRight: Radius.circular(16)),
+ ),
+ context: context,
+ builder: (ctx) => ChangeNotifierProvider.value(
+ value: meetingStore,
+ child: Padding(
+ padding: EdgeInsets.only(
+ bottom:
+ MediaQuery.of(ctx).viewInsets.bottom),
+ child: const ChangeNameBottomSheet())),
+ );
+ },
+ optionIcon: SvgPicture.asset(
+ "packages/hms_room_kit/lib/src/assets/icons/pencil.svg",
+ height: 20,
+ width: 20,
+ colorFilter: ColorFilter.mode(
+ HMSThemeColors.onSurfaceHighEmphasis,
+ BlendMode.srcIn),
+ ),
+ optionText: "Change Name")
],
),
],
diff --git a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/local_peer_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/local_peer_bottom_sheet.dart
index 89c55d24d..991e67ac7 100644
--- a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/local_peer_bottom_sheet.dart
+++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/local_peer_bottom_sheet.dart
@@ -148,44 +148,45 @@ class _LocalPeerBottomSheetState extends State {
// title: HMSSubheadingText(
// text: "Spotlight Tile for Everyone",
// textColor: HMSThemeColors.onSurfaceHighEmphasis)),
- ListTile(
- horizontalTitleGap: 2,
- onTap: () async {
- Navigator.pop(context);
- showModalBottomSheet(
- isScrollControlled: true,
- backgroundColor: HMSThemeColors.surfaceDim,
- shape: const RoundedRectangleBorder(
- borderRadius: BorderRadius.only(
- topLeft: Radius.circular(16),
- topRight: Radius.circular(16)),
- ),
- context: context,
- builder: (ctx) => ChangeNotifierProvider.value(
- value: widget.meetingStore,
- child: Padding(
- padding: EdgeInsets.only(
- bottom: MediaQuery.of(ctx)
- .viewInsets
- .bottom),
- child: const ChangeNameBottomSheet(
- showPrivacyInfo: false,
- ))),
- );
- },
- contentPadding: EdgeInsets.zero,
- leading: SvgPicture.asset(
- "packages/hms_room_kit/lib/src/assets/icons/pencil.svg",
- semanticsLabel: "fl_local_pin_tile",
- height: 20,
- width: 20,
- colorFilter: ColorFilter.mode(
- HMSThemeColors.onSurfaceHighEmphasis,
- BlendMode.srcIn),
- ),
- title: HMSSubheadingText(
- text: "Change Name",
- textColor: HMSThemeColors.onSurfaceHighEmphasis)),
+ if (Constant.prebuiltOptions?.userName == null)
+ ListTile(
+ horizontalTitleGap: 2,
+ onTap: () async {
+ Navigator.pop(context);
+ showModalBottomSheet(
+ isScrollControlled: true,
+ backgroundColor: HMSThemeColors.surfaceDim,
+ shape: const RoundedRectangleBorder(
+ borderRadius: BorderRadius.only(
+ topLeft: Radius.circular(16),
+ topRight: Radius.circular(16)),
+ ),
+ context: context,
+ builder: (ctx) => ChangeNotifierProvider.value(
+ value: widget.meetingStore,
+ child: Padding(
+ padding: EdgeInsets.only(
+ bottom: MediaQuery.of(ctx)
+ .viewInsets
+ .bottom),
+ child: const ChangeNameBottomSheet(
+ showPrivacyInfo: false,
+ ))),
+ );
+ },
+ contentPadding: EdgeInsets.zero,
+ leading: SvgPicture.asset(
+ "packages/hms_room_kit/lib/src/assets/icons/pencil.svg",
+ semanticsLabel: "fl_local_pin_tile",
+ height: 20,
+ width: 20,
+ colorFilter: ColorFilter.mode(
+ HMSThemeColors.onSurfaceHighEmphasis,
+ BlendMode.srcIn),
+ ),
+ title: HMSSubheadingText(
+ text: "Change Name",
+ textColor: HMSThemeColors.onSurfaceHighEmphasis)),
if (widget.isInsetTile)
ListTile(
horizontalTitleGap: 2,
diff --git a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/more_settings_bottom_sheet.dart b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/more_settings_bottom_sheet.dart
index 4359f54bb..a408ab9ce 100644
--- a/packages/hms_room_kit/lib/src/widgets/bottom_sheets/more_settings_bottom_sheet.dart
+++ b/packages/hms_room_kit/lib/src/widgets/bottom_sheets/more_settings_bottom_sheet.dart
@@ -436,7 +436,8 @@ class _MoreSettingsBottomSheetState extends State {
false)
Selector(
selector: (_, meetingStore) =>
- meetingStore.streamingType["rtmp"] ?? false,
+ meetingStore.streamingType["rtmp"] ==
+ HMSStreamingState.started,
builder: (_, isRTMPRunning, __) {
return ListTile(
horizontalTitleGap: 2,
@@ -453,7 +454,7 @@ class _MoreSettingsBottomSheetState extends State {
"Enter Comma separated RTMP Urls",
isRecordingEnabled: meetingStore
.recordingType["browser"] ==
- true);
+ HMSRecordingState.started);
List? urls;
if (data["url"]!.isNotEmpty) {
urls = data["url"]!.split(",");
@@ -499,7 +500,8 @@ class _MoreSettingsBottomSheetState extends State {
false)
Selector(
selector: (_, meetingStore) =>
- meetingStore.recordingType["browser"] ?? false,
+ meetingStore.recordingType["browser"] ==
+ HMSRecordingState.started,
builder: (_, isBrowserRecording, __) {
return ListTile(
horizontalTitleGap: 2,
diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_subtitle_text.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_subtitle_text.dart
index 8b550777f..2f3e306a7 100644
--- a/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_subtitle_text.dart
+++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/hms_subtitle_text.dart
@@ -23,6 +23,7 @@ class HMSSubtitleText extends StatelessWidget {
final FontWeight? fontWeight;
final TextOverflow? textOverflow;
final TextAlign? textAlign;
+ final int? maxLines;
const HMSSubtitleText(
{Key? key,
@@ -33,7 +34,8 @@ class HMSSubtitleText extends StatelessWidget {
this.fontSize = 12,
this.fontWeight = FontWeight.w400,
this.textOverflow = TextOverflow.ellipsis,
- this.textAlign})
+ this.textAlign,
+ this.maxLines = 1})
: super(key: key);
@override
@@ -41,12 +43,14 @@ class HMSSubtitleText extends StatelessWidget {
return Text(text,
overflow: textOverflow,
softWrap: true,
+ maxLines: maxLines,
textAlign: textAlign,
style: HMSTextStyle.setTextStyle(
- height: lineHeight! / fontSize!,
- fontSize: fontSize,
- letterSpacing: letterSpacing,
- color: textColor,
- fontWeight: fontWeight));
+ height: lineHeight! / fontSize!,
+ fontSize: fontSize,
+ letterSpacing: letterSpacing,
+ color: textColor,
+ fontWeight: fontWeight,
+ ));
}
}
diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/inset_tile.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/inset_tile.dart
index d73311b67..53685bd57 100644
--- a/packages/hms_room_kit/lib/src/widgets/common_widgets/inset_tile.dart
+++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/inset_tile.dart
@@ -9,7 +9,7 @@ import 'package:provider/provider.dart';
///Project imports
import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart';
-import 'package:hms_room_kit/src/widgets/peer_widgets/inset_tile_more_option.dart';
+import 'package:hms_room_kit/src/widgets/peer_widgets/local_peer_more_option.dart';
import 'package:hms_room_kit/src/model/peer_track_node.dart';
import 'package:hms_room_kit/src/widgets/common_widgets/video_view.dart';
import 'package:hms_room_kit/src/widgets/peer_widgets/audio_mute_status.dart';
diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/more_option_item.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/more_option_item.dart
index 7a5dfd018..389615e09 100644
--- a/packages/hms_room_kit/lib/src/widgets/common_widgets/more_option_item.dart
+++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/more_option_item.dart
@@ -40,7 +40,9 @@ class MoreOptionItem extends StatelessWidget {
optionIcon,
const SizedBox(height: 8),
HMSSubtitleText(
+ maxLines: 2,
text: optionText,
+ textAlign: TextAlign.center,
textColor:
optionTextColor ?? HMSThemeColors.onSurfaceHighEmphasis,
fontWeight: FontWeight.w600,
diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/peer_tile.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/peer_tile.dart
index f131045ac..03f783240 100644
--- a/packages/hms_room_kit/lib/src/widgets/common_widgets/peer_tile.dart
+++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/peer_tile.dart
@@ -10,7 +10,7 @@ import 'package:provider/provider.dart';
// Project imports
import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart';
import 'package:hms_room_kit/src/meeting/meeting_store.dart';
-import 'package:hms_room_kit/src/widgets/peer_widgets/inset_tile_more_option.dart';
+import 'package:hms_room_kit/src/widgets/peer_widgets/local_peer_more_option.dart';
import 'package:hms_room_kit/src/widgets/peer_widgets/name_and_network.dart';
import 'package:hms_room_kit/src/widgets/peer_widgets/screen_share_tile_name.dart';
import 'package:hms_room_kit/src/model/peer_track_node.dart';
diff --git a/packages/hms_room_kit/lib/src/widgets/common_widgets/video_view.dart b/packages/hms_room_kit/lib/src/widgets/common_widgets/video_view.dart
index c6c3234cd..0154eeac5 100644
--- a/packages/hms_room_kit/lib/src/widgets/common_widgets/video_view.dart
+++ b/packages/hms_room_kit/lib/src/widgets/common_widgets/video_view.dart
@@ -83,8 +83,6 @@ class _VideoViewState extends State {
// Similarly to avoid rebuilding the key should be kept the same for particular HMSVideoView.
child: HMSTextureView(
controller: widget.videoViewController,
- addTrackByDefault:
- !context.read().isOffscreen,
key: Key(data.item1!.trackId),
scaleType: ScaleType.SCALE_ASPECT_FIT,
track: data.item1!,
@@ -98,8 +96,6 @@ class _VideoViewState extends State {
// Similarly to avoid rebuilding the key should be kept the same for particular HMSVideoView.
child: HMSTextureView(
controller: widget.videoViewController,
- addTrackByDefault:
- !context.read().isOffscreen,
key: Key(data.item1!.trackId),
scaleType: ScaleType.SCALE_ASPECT_FILL,
track: data.item1!,
diff --git a/packages/hms_room_kit/lib/src/widgets/peer_widgets/inset_tile_more_option.dart b/packages/hms_room_kit/lib/src/widgets/peer_widgets/inset_tile_more_option.dart
deleted file mode 100644
index 5652f782d..000000000
--- a/packages/hms_room_kit/lib/src/widgets/peer_widgets/inset_tile_more_option.dart
+++ /dev/null
@@ -1,70 +0,0 @@
-///Package imports
-import 'package:flutter/material.dart';
-import 'package:provider/provider.dart';
-
-///Project imports
-import 'package:hms_room_kit/src/layout_api/hms_theme_colors.dart';
-import 'package:hms_room_kit/src/meeting/meeting_store.dart';
-import 'package:hms_room_kit/src/model/peer_track_node.dart';
-import 'package:hms_room_kit/src/widgets/bottom_sheets/local_peer_bottom_sheet.dart';
-
-///[LocalPeerMoreOption] is a widget that is used to render the more option button on a local peer(inset) tile
-///This is used in the [LocalPeerTile]
-///It has following parameters:
-///[callbackFunction] is a function that is called when the more option button is clicked
-class LocalPeerMoreOption extends StatelessWidget {
- final Function()? callbackFunction;
- final bool isInsetTile;
- const LocalPeerMoreOption(
- {super.key, this.callbackFunction, this.isInsetTile = true});
-
- @override
- Widget build(BuildContext context) {
- return Positioned(
- bottom: 5,
- right: 5,
- child: GestureDetector(
- onTap: () {
- ///[peerTrackNode] is the peerTrackNode of the peer whose more option is clicked
- ///We only show the modal bottom sheet if the peer is the local peer
- var peerTrackNode = context.read();
- showModalBottomSheet(
- isScrollControlled: true,
- backgroundColor: HMSThemeColors.surfaceDim,
- shape: const RoundedRectangleBorder(
- borderRadius: BorderRadius.only(
- topLeft: Radius.circular(16), topRight: Radius.circular(16)),
- ),
- context: context,
- builder: (ctx) => ChangeNotifierProvider.value(
- value: context.read(),
- child: LocalPeerBottomSheet(
- isInsetTile: isInsetTile,
- meetingStore: context.read(),
- peerTrackNode: peerTrackNode,
- callbackFunction: callbackFunction,
- )),
- );
- },
- child: Semantics(
- label: "fl_${context.read().peer.name}more_option",
- child: Container(
- height: 28,
- width: 28,
- decoration: BoxDecoration(
- borderRadius: BorderRadius.circular(8),
- color: HMSThemeColors.backgroundDim.withOpacity(0.64),
- ),
- child: Center(
- child: Icon(
- Icons.more_vert,
- color: HMSThemeColors.onSurfaceHighEmphasis,
- size: 20,
- ),
- ),
- ),
- ),
- ),
- );
- }
-}
diff --git a/packages/hms_room_kit/lib/src/widgets/peer_widgets/local_peer_more_option.dart b/packages/hms_room_kit/lib/src/widgets/peer_widgets/local_peer_more_option.dart
new file mode 100644
index 000000000..8e64da5a8
--- /dev/null
+++ b/packages/hms_room_kit/lib/src/widgets/peer_widgets/local_peer_more_option.dart
@@ -0,0 +1,74 @@
+///Package imports
+import 'package:flutter/material.dart';
+import 'package:hms_room_kit/hms_room_kit.dart';
+import 'package:provider/provider.dart';
+
+///Project imports
+import 'package:hms_room_kit/src/meeting/meeting_store.dart';
+import 'package:hms_room_kit/src/model/peer_track_node.dart';
+import 'package:hms_room_kit/src/widgets/bottom_sheets/local_peer_bottom_sheet.dart';
+
+///[LocalPeerMoreOption] is a widget that is used to render the more option button on a local peer(inset) tile
+///This is used in the [LocalPeerTile]
+///It has following parameters:
+///[callbackFunction] is a function that is called when the more option button is clicked
+class LocalPeerMoreOption extends StatelessWidget {
+ final Function()? callbackFunction;
+ final bool isInsetTile;
+ const LocalPeerMoreOption(
+ {super.key, this.callbackFunction, this.isInsetTile = true});
+
+ @override
+ Widget build(BuildContext context) {
+ return (Constant.prebuiltOptions?.userName != null && !isInsetTile)
+ ? const SizedBox()
+ : Positioned(
+ bottom: 5,
+ right: 5,
+ child: GestureDetector(
+ onTap: () {
+ ///[peerTrackNode] is the peerTrackNode of the peer whose more option is clicked
+ ///We only show the modal bottom sheet if the peer is the local peer
+ var peerTrackNode = context.read();
+ showModalBottomSheet(
+ isScrollControlled: true,
+ backgroundColor: HMSThemeColors.surfaceDim,
+ shape: const RoundedRectangleBorder(
+ borderRadius: BorderRadius.only(
+ topLeft: Radius.circular(16),
+ topRight: Radius.circular(16)),
+ ),
+ context: context,
+ builder: (ctx) => ChangeNotifierProvider.value(
+ value: context.read(),
+ child: LocalPeerBottomSheet(
+ isInsetTile: isInsetTile,
+ meetingStore: context.read(),
+ peerTrackNode: peerTrackNode,
+ callbackFunction: callbackFunction,
+ )),
+ );
+ },
+ child: Semantics(
+ label:
+ "fl_${context.read().peer.name}more_option",
+ child: Container(
+ height: 28,
+ width: 28,
+ decoration: BoxDecoration(
+ borderRadius: BorderRadius.circular(8),
+ color: HMSThemeColors.backgroundDim.withOpacity(0.64),
+ ),
+ child: Center(
+ child: Icon(
+ Icons.more_vert,
+ color: HMSThemeColors.onSurfaceHighEmphasis,
+ size: 20,
+ ),
+ ),
+ ),
+ ),
+ ),
+ );
+ }
+}
diff --git a/packages/hms_room_kit/pubspec.lock b/packages/hms_room_kit/pubspec.lock
index e84a0bdc1..c639d8658 100644
--- a/packages/hms_room_kit/pubspec.lock
+++ b/packages/hms_room_kit/pubspec.lock
@@ -204,10 +204,10 @@ packages:
dependency: "direct main"
description:
name: hmssdk_flutter
- sha256: "27dfc516ee4673ff092fc4e18487c315780b8470a2fbcf0f486bdfa529fc53cb"
+ sha256: f61fb1ffcaf7296e0e2eeff9bc34d699baf9190136b8570a15cde61819cf3276
url: "https://pub.dev"
source: hosted
- version: "1.9.4"
+ version: "1.9.5"
http:
dependency: transitive
description:
@@ -228,10 +228,10 @@ packages:
dependency: "direct main"
description:
name: intl
- sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d"
+ sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
url: "https://pub.dev"
source: hosted
- version: "0.18.1"
+ version: "0.19.0"
js:
dependency: transitive
description:
@@ -601,10 +601,10 @@ packages:
dependency: "direct main"
description:
name: url_launcher
- sha256: b1c9e98774adf8820c96fbc7ae3601231d324a7d5ebd8babe27b6dfac91357ba
+ sha256: e9aa5ea75c84cf46b3db4eea212523591211c3cf2e13099ee4ec147f54201c86
url: "https://pub.dev"
source: hosted
- version: "6.2.1"
+ version: "6.2.2"
url_launcher_android:
dependency: transitive
description:
diff --git a/packages/hms_room_kit/pubspec.yaml b/packages/hms_room_kit/pubspec.yaml
index 8036542eb..961253565 100644
--- a/packages/hms_room_kit/pubspec.yaml
+++ b/packages/hms_room_kit/pubspec.yaml
@@ -1,6 +1,6 @@
name: hms_room_kit
description: 100ms Room Kit provides simple & easy to use UI components to build Live Streaming & Video Conferencing experiences in your apps.
-version: 1.0.7
+version: 1.0.8
homepage: https://www.100ms.live/
repository: https://github.com/100mslive/100ms-flutter
issue_tracker: https://github.com/100mslive/100ms-flutter/issues
@@ -14,8 +14,8 @@ dependencies:
flutter:
sdk: flutter
- hmssdk_flutter: ^1.9.4
- intl: ^0.18.1
+ hmssdk_flutter: ^1.9.5
+ intl: ^0.19.0
permission_handler: ^11.0.0
provider: ^6.0.5
google_fonts: ^6.1.0
diff --git a/packages/hmssdk_flutter/CHANGELOG.md b/packages/hmssdk_flutter/CHANGELOG.md
index a96440978..8c5adf1ae 100644
--- a/packages/hmssdk_flutter/CHANGELOG.md
+++ b/packages/hmssdk_flutter/CHANGELOG.md
@@ -5,6 +5,30 @@
| hms_room_kit | [![Pub Version](https://img.shields.io/pub/v/hms_room_kit)](https://pub.dev/packages/hms_room_kit) |
| hmssdk_flutter | [![Pub Version](https://img.shields.io/pub/v/hmssdk_flutter)](https://pub.dev/packages/hmssdk_flutter) |
+# 1.9.5 - 2023-12-15
+
+| Package | Version |
+| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
+| hms_room_kit | 1.0.8 |
+| hmssdk_flutter | 1.9.5 |
+
+### Added
+
+- Added `state` property to recording and streaming classes to get the current state of recording and streaming.
+
+ Learn more about `HMSStreamingState` and `HMSRecordingState` [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/record-and-live-stream/recording#current-room-status).
+
+### Changed
+
+- Removed `addTrackByDefault` property from `HMSTextureView`.
+
+ This should not affect any existing implementation as `addTrackByDefault` was set to `true` by default.
+ Learn more about `HMSTextureView` [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/set-up-video-conferencing/render-video/hms-texture-view).
+
+Updated to Android SDK 2.8.3 & iOS SDK 1.4.0
+
+**Full Changelog**: [1.9.4...1.9.5](https://github.com/100mslive/100ms-flutter/compare/1.9.4...1.9.5)
+
# 1.9.4 - 2023-12-08
| Package | Version |
diff --git a/packages/hmssdk_flutter/README.md b/packages/hmssdk_flutter/README.md
index b4bce227e..afe2dedff 100644
--- a/packages/hmssdk_flutter/README.md
+++ b/packages/hmssdk_flutter/README.md
@@ -21,6 +21,7 @@ With support for HLS and RTMP Live Streaming and Recording, Picture-in-Picture (
| hms_room_kit | [![Pub Version](https://img.shields.io/pub/v/hms_room_kit)](https://pub.dev/packages/hms_room_kit) |
| hmssdk_flutter | [![Pub Version](https://img.shields.io/pub/v/hmssdk_flutter)](https://pub.dev/packages/hmssdk_flutter) |
+
🧱 The Prebuilt QuickStart Guide is [available here](https://www.100ms.live/docs/flutter/v2/quickstart/prebuilt).
📖 Read the Complete Documentation here: https://www.100ms.live/docs/flutter/v2/guides/quickstart
diff --git a/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSHLSVariantExtension.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSHLSVariantExtension.kt
index 823ea8296..bebd5530e 100644
--- a/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSHLSVariantExtension.kt
+++ b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSHLSVariantExtension.kt
@@ -12,7 +12,7 @@ class HMSHLSVariantExtension {
args["meeting_url"] = hmshlsVariant.meetingUrl ?: ""
args["metadata"] = hmshlsVariant.metadata ?: ""
hmshlsVariant.startedAt?.let {
- args["started_at"] = SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(it).toString()
+ args["started_at"] = it
}
return args
}
diff --git a/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRtmpStreamingState.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRtmpStreamingState.kt
index aca5ed6d1..04e62b4b2 100644
--- a/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRtmpStreamingState.kt
+++ b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HMSRtmpStreamingState.kt
@@ -6,67 +6,89 @@ import java.text.SimpleDateFormat
class HMSStreamingState {
companion object {
- fun toDictionary(hmsRtmpStreamingState: HMSRtmpStreamingState?): HashMap? {
+ fun toDictionary(rtmpStreamingState: HMSRtmpStreamingState?): HashMap? {
val map = HashMap()
- if (hmsRtmpStreamingState == null)return null
- map["running"] = hmsRtmpStreamingState.running
- map["error"] = HMSExceptionExtension.toDictionary(hmsRtmpStreamingState.error)
- if (hmsRtmpStreamingState.running) {
- hmsRtmpStreamingState.startedAt?.let {
- map["started_at"] = SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(hmsRtmpStreamingState.startedAt).toString()
- }
+ if (rtmpStreamingState == null) return null
+
+ map["running"] = rtmpStreamingState.running
+
+ map["error"] = HMSExceptionExtension.toDictionary(rtmpStreamingState.error)
+
+ rtmpStreamingState.startedAt?.let {
+ map["started_at"] = it
}
+
+ map["state"] = rtmpStreamingState.state.name
+
return map
}
- fun toDictionary(hmsServerRecordingState: HMSServerRecordingState?): HashMap? {
+ fun toDictionary(serverRecordingState: HMSServerRecordingState?): HashMap? {
val map = HashMap()
- if (hmsServerRecordingState == null)return null
- map["running"] = hmsServerRecordingState.running
- map["error"] = HMSExceptionExtension.toDictionary(hmsServerRecordingState.error)
- if (hmsServerRecordingState.running) {
- hmsServerRecordingState.startedAt?.let {
- map["started_at"] = SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(hmsServerRecordingState.startedAt).toString()
- }
+ if (serverRecordingState == null) return null
+
+ map["running"] = serverRecordingState.running
+
+ map["error"] = HMSExceptionExtension.toDictionary(serverRecordingState.error)
+
+ serverRecordingState.startedAt?.let {
+ map["started_at"] = it
}
+
+ map["state"] = serverRecordingState.state.name
+
return map
}
- fun toDictionary(hmsBrowserRecordingState: HMSBrowserRecordingState?): HashMap? {
+ fun toDictionary(browserRecordingState: HMSBrowserRecordingState?): HashMap? {
val map = HashMap()
- if (hmsBrowserRecordingState == null)return null
- map["running"] = hmsBrowserRecordingState.running
- map["error"] = HMSExceptionExtension.toDictionary(hmsBrowserRecordingState.error)
- if (hmsBrowserRecordingState.running) {
- hmsBrowserRecordingState.startedAt?.let {
- map["started_at"] = SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(hmsBrowserRecordingState.startedAt).toString()
- }
+ if (browserRecordingState == null) return null
+
+ map["running"] = browserRecordingState.running
+
+ map["error"] = HMSExceptionExtension.toDictionary(browserRecordingState.error)
+
+ browserRecordingState.startedAt?.let {
+ map["started_at"] = it
}
- map["initialising"] = hmsBrowserRecordingState.initialising
+
+ map["initialising"] = browserRecordingState.initialising
+
+ map["state"] = browserRecordingState.state.name
+
return map
}
- fun toDictionary(hmsHlsStreamingState: HMSHLSStreamingState?): HashMap? {
+ fun toDictionary(hlsStreamingState: HMSHLSStreamingState?): HashMap? {
val map = HashMap()
- if (hmsHlsStreamingState == null)return null
- map["running"] = hmsHlsStreamingState.running
+ if (hlsStreamingState == null) return null
+
+ map["running"] = hlsStreamingState.running
+
val args = ArrayList()
- hmsHlsStreamingState.variants?.forEach {
+ hlsStreamingState.variants?.forEach {
args.add(HMSHLSVariantExtension.toDictionary(it)!!)
}
+
map["variants"] = args
+
+ map["state"] = hlsStreamingState.state.name
+
return map
}
- fun toDictionary(hmsHlsRecordingState: HmsHlsRecordingState?): HashMap? {
+ fun toDictionary(hlsRecordingState: HmsHlsRecordingState?): HashMap? {
val map = HashMap()
- if (hmsHlsRecordingState == null)return null
- map["running"] = hmsHlsRecordingState.running
- if (hmsHlsRecordingState.running == true) {
- hmsHlsRecordingState.startedAt?.let {
- map["started_at"] = SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(hmsHlsRecordingState.startedAt).toString()
- }
+ if (hlsRecordingState == null) return null
+
+ map["running"] = hlsRecordingState.running
+
+ hlsRecordingState.startedAt?.let {
+ map["started_at"] = it
}
+
+ map["state"] = hlsRecordingState.state.name
+
return map
}
}
diff --git a/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HmssdkFlutterPlugin.kt b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HmssdkFlutterPlugin.kt
index e80b5aea7..06fb32e83 100644
--- a/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HmssdkFlutterPlugin.kt
+++ b/packages/hmssdk_flutter/android/src/main/kotlin/live/hms/hmssdk_flutter/HmssdkFlutterPlugin.kt
@@ -38,10 +38,7 @@ import live.hms.video.events.AgentType
import live.hms.video.media.tracks.*
import live.hms.video.sdk.*
import live.hms.video.sdk.models.*
-import live.hms.video.sdk.models.enums.AudioMixingMode
-import live.hms.video.sdk.models.enums.HMSPeerUpdate
-import live.hms.video.sdk.models.enums.HMSRoomUpdate
-import live.hms.video.sdk.models.enums.HMSTrackUpdate
+import live.hms.video.sdk.models.enums.*
import live.hms.video.sdk.models.role.HMSRole
import live.hms.video.sdk.models.trackchangerequest.HMSChangeTrackStateRequest
import live.hms.video.sessionstore.HMSKeyChangeListener
@@ -82,9 +79,10 @@ class HmssdkFlutterPlugin :
var hlsStreamUrl: String? = null
private var isRoomAudioUnmutedLocally = true
- private val renderers = HashMap()
+ private val renderers = HashMap()
private var hmsTextureRegistry: TextureRegistry? = null
private var hmsBinaryMessenger: BinaryMessenger? = null
+
override fun onAttachedToEngine(
@NonNull flutterPluginBinding: FlutterPlugin.FlutterPluginBinding,
) {
@@ -136,7 +134,6 @@ class HmssdkFlutterPlugin :
}
}
-
override fun onMethodCall(
@NonNull call: MethodCall,
@NonNull result: Result,
@@ -256,22 +253,22 @@ class HmssdkFlutterPlugin :
}
"create_texture_view" -> {
- createTextureView(call,result)
+ createTextureView(call, result)
}
"dispose_texture_view" -> {
disposeTextureView(call, result)
}
"add_track" -> {
- addTrack(call,result)
+ addTrack(call, result)
}
"remove_track" -> {
- removeTrack(call,result)
+ removeTrack(call, result)
}
"set_display_resolution" -> {
- setDisplayResolution(call,result)
+ setDisplayResolution(call, result)
}
"get_peer_list_iterator", "peer_list_iterator_has_next", "peer_list_iterator_next" -> {
@@ -617,144 +614,156 @@ class HmssdkFlutterPlugin :
return null
}
- private fun createTextureView(call: MethodCall, result: Result){
-
+ private fun createTextureView(
+ call: MethodCall,
+ result: Result,
+ ) {
val trackId = call.argument("track_id")
- val addTrackByDefault = call.argument("add_track_by_def")?:false
- val disableAutoSimulcastLayerSelect = call.argument("disable_auto_simulcast_layer_select")?:false
+ val addTrackByDefault = call.argument("add_track_by_def") ?: false
+ val disableAutoSimulcastLayerSelect = call.argument("disable_auto_simulcast_layer_select") ?: false
val entry: SurfaceTextureEntry? = hmsTextureRegistry?.createSurfaceTexture()
entry?.let { surfaceTextureEntry ->
val surfaceTexture = surfaceTextureEntry.surfaceTexture()
- val renderer = HMSTextureView(surfaceTexture,entry)
- if(addTrackByDefault){
+ val renderer = HMSTextureView(surfaceTexture, entry)
+ if (addTrackByDefault) {
val room = hmssdk?.getRoom()
room?.let { currentRoom ->
- trackId?.let {currentTrackId ->
- val track = HmsUtilities.getVideoTrack(currentTrackId,currentRoom)
+ trackId?.let { currentTrackId ->
+ val track = HmsUtilities.getVideoTrack(currentTrackId, currentRoom)
track?.let { videoTrack ->
- Log.i("HMSTextureView","Init Add Track called for track: ${track.trackId}")
- renderer.addTrack(videoTrack,disableAutoSimulcastLayerSelect)
- }?: run {
- HMSErrorLogger.returnHMSException("createTextureView","No track with $trackId found","Track not found error",result)
+ Log.i("HMSTextureView", "Init Add Track called for track: ${track.trackId}")
+ renderer.addTrack(videoTrack, disableAutoSimulcastLayerSelect)
+ } ?: run {
+ HMSErrorLogger.returnHMSException("createTextureView", "No track with $trackId found", "Track not found error", result)
return
}
- }?: run {
- HMSErrorLogger.returnHMSException("createTextureView","trackId is null"," NULL ERROR",result)
+ } ?: run {
+ HMSErrorLogger.returnHMSException("createTextureView", "trackId is null", " NULL ERROR", result)
return
}
- }?: run {
- HMSErrorLogger.returnHMSException("createTextureView","Room is null","NULL Error",result)
+ } ?: run {
+ HMSErrorLogger.returnHMSException("createTextureView", "Room is null", "NULL Error", result)
return
}
}
renderers["${surfaceTextureEntry.id()}"] = renderer
- val eventChannel = EventChannel(
- hmsBinaryMessenger,
- "HMSTextureView/Texture/" + entry.id()
- )
+ val eventChannel =
+ EventChannel(
+ hmsBinaryMessenger,
+ "HMSTextureView/Texture/" + entry.id(),
+ )
eventChannel.setStreamHandler(renderer)
renderer.setTextureViewEventChannel(eventChannel)
- val data = HashMap()
+ val data = HashMap()
data["texture_id"] = surfaceTextureEntry.id()
- result.success(HMSResultExtension.toDictionary(true,data))
-
- }?:run{
- HMSErrorLogger.returnHMSException("createTextureView","entry is null","NULL Error",result)
+ result.success(HMSResultExtension.toDictionary(true, data))
+ } ?: run {
+ HMSErrorLogger.returnHMSException("createTextureView", "entry is null", "NULL Error", result)
return
}
}
- private fun disposeTextureView(call: MethodCall,result: Result){
+ private fun disposeTextureView(
+ call: MethodCall,
+ result: Result,
+ ) {
val textureId = call.argument("texture_id") ?: HMSErrorLogger.returnArgumentsError("textureId is null")
var renderer = renderers["$textureId"]
- if(renderer != null){
+ if (renderer != null) {
renderer.disposeTextureView()
renderer = null
renderers.remove("$textureId")
- result.success(HMSResultExtension.toDictionary(true,null))
- }
- else {
+ result.success(HMSResultExtension.toDictionary(true, null))
+ } else {
HMSErrorLogger.returnHMSException(
"disposeTextureView",
"No textureView with given textureId found",
"Key not found error",
- result
+ result,
)
}
}
- private fun addTrack(call: MethodCall, result: Result){
+ private fun addTrack(
+ call: MethodCall,
+ result: Result,
+ ) {
val trackId = call.argument("track_id")
val textureId = call.argument("texture_id")
- val disableAutoSimulcastLayerSelect = call.argument("disable_auto_simulcast_layer_select")?:false
+ val disableAutoSimulcastLayerSelect = call.argument("disable_auto_simulcast_layer_select") ?: false
val height = call.argument("height")
val width = call.argument("width")
- textureId?.let {texture ->
+ textureId?.let { texture ->
trackId?.let {
val renderer = renderers["$textureId"]
renderer?.let { textureRenderer ->
val room = hmssdk?.getRoom()
room?.let { currentRoom ->
- val track = HmsUtilities.getVideoTrack(trackId,currentRoom)
- track?.let {videoTrack ->
- textureRenderer.addTrack(videoTrack,disableAutoSimulcastLayerSelect,height,width)
+ val track = HmsUtilities.getVideoTrack(trackId, currentRoom)
+ track?.let { videoTrack ->
+ textureRenderer.addTrack(videoTrack, disableAutoSimulcastLayerSelect, height, width)
result.success(null)
- }?: run {
+ } ?: run {
HMSErrorLogger.returnHMSException(
"addTrack",
"track with given trackId not found",
"Track not found error",
- result
+ result,
)
}
- }?: run {
+ } ?: run {
HMSErrorLogger.returnHMSException(
"addTrack",
"room not found",
"room not found error",
- result
+ result,
)
}
- }?: run {
+ } ?: run {
HMSErrorLogger.returnHMSException(
"addTrack",
"renderer with given $texture not found",
"renderer not found error",
- result
+ result,
)
}
- }?: run {
+ } ?: run {
HMSErrorLogger.returnHMSException(
"addTrack",
"trackId is null",
"NULL ERROR",
- result
+ result,
)
}
- }?:run {
+ } ?: run {
HMSErrorLogger.returnHMSException(
"addTrack",
"textureId is null",
"NULL ERROR",
- result
+ result,
)
}
}
- private fun removeTrack(call: MethodCall, result: Result){
+ private fun removeTrack(
+ call: MethodCall,
+ result: Result,
+ ) {
val textureId = call.argument("texture_id")
val renderer = renderers["$textureId"]
renderer?.removeTrack()
result.success(null)
-
}
- private fun setDisplayResolution(call: MethodCall, result: Result){
+ private fun setDisplayResolution(
+ call: MethodCall,
+ result: Result,
+ ) {
val textureId = call.argument("texture_id")
val height = call.argument("height")
val width = call.argument("width")
@@ -762,7 +771,7 @@ class HmssdkFlutterPlugin :
height?.let { videoViewHeight ->
width?.let { videoViewWidth ->
- renderer?.setDisplayResolution(videoViewWidth,videoViewHeight)
+ renderer?.setDisplayResolution(videoViewWidth, videoViewHeight)
}
}
result.success(null)
@@ -1193,7 +1202,7 @@ class HmssdkFlutterPlugin :
* the stream URL.
*/
room.hlsStreamingState?.let { streamingState ->
- if (streamingState.running) {
+ if (streamingState.state == HMSStreamingState.STARTED) {
streamingState.variants?.let { variants ->
if (variants.isNotEmpty()) {
hlsStreamUrl = variants[0].hlsStreamUrl
@@ -1262,7 +1271,7 @@ class HmssdkFlutterPlugin :
*/
if (type == HMSRoomUpdate.HLS_STREAMING_STATE_UPDATED) {
hmsRoom.hlsStreamingState?.let { streamingState ->
- if (streamingState.running) {
+ if (streamingState.state == HMSStreamingState.STARTED) {
streamingState.variants?.let { variants ->
if (variants.isNotEmpty()) {
hlsStreamUrl = variants[0].hlsStreamUrl
diff --git a/packages/hmssdk_flutter/example/ExampleAppChangelog.txt b/packages/hmssdk_flutter/example/ExampleAppChangelog.txt
index 6292c0c06..92a1109c2 100644
--- a/packages/hmssdk_flutter/example/ExampleAppChangelog.txt
+++ b/packages/hmssdk_flutter/example/ExampleAppChangelog.txt
@@ -1,21 +1,9 @@
Board: https://100ms.atlassian.net/jira/software/projects/FLUT/boards/34/
-- Added TextureView in place of SurfaceView for better performance
-https://100ms.atlassian.net/browse/FLUT-121
+- Beam Intermediate State Updates
+https://100ms.atlassian.net/browse/FLUT-135
-- Disable editing username in preview screen if username is passed to prebuilt in options config
-https://100ms.atlassian.net/browse/FLUT-158
-
-- Getting 3 blank messages for flutter on stage user if declined 3 invite before
-https://100ms.atlassian.net/browse/FLUT-172
-
-- Active Speaker should come within first 2 tiles when doing Screenshare
-https://100ms.atlassian.net/browse/FLUT-161
-
-- Flutter iOS VNRT to stage, app crash.
-https://100ms.atlassian.net/browse/FLUT-173
-
-Room Kit: 1.0.7
-Core SDK: 1.9.4
+Room Kit: 1.0.8
+Core SDK: 1.9.5
Android SDK: 2.8.3
-iOS SDK: 1.3.1
+iOS SDK: 1.4.0
diff --git a/packages/hmssdk_flutter/example/android/Gemfile.lock b/packages/hmssdk_flutter/example/android/Gemfile.lock
index b6be76cfe..84347bec1 100644
--- a/packages/hmssdk_flutter/example/android/Gemfile.lock
+++ b/packages/hmssdk_flutter/example/android/Gemfile.lock
@@ -8,12 +8,12 @@ GEM
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
- addressable (2.8.5)
+ addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
artifactory (3.0.15)
atomos (0.1.3)
aws-eventstream (1.3.0)
- aws-partitions (1.862.0)
+ aws-partitions (1.864.0)
aws-sdk-core (3.190.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0)
@@ -133,11 +133,11 @@ GEM
google-apis-core (>= 0.11.0, < 2.a)
google-apis-storage_v1 (0.29.0)
google-apis-core (>= 0.11.0, < 2.a)
- google-cloud-core (1.6.0)
- google-cloud-env (~> 1.0)
+ google-cloud-core (1.6.1)
+ google-cloud-env (>= 1.0, < 3.a)
google-cloud-errors (~> 1.0)
- google-cloud-env (1.6.0)
- faraday (>= 0.17.3, < 3.0)
+ google-cloud-env (2.0.1)
+ faraday (>= 1.0, < 3.a)
google-cloud-errors (1.3.1)
google-cloud-storage (1.45.0)
addressable (~> 2.8)
@@ -147,8 +147,9 @@ GEM
google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0)
- googleauth (1.8.1)
- faraday (>= 0.17.3, < 3.a)
+ googleauth (1.9.0)
+ faraday (>= 1.0, < 3.a)
+ google-cloud-env (~> 2.0, >= 2.0.1)
jwt (>= 1.4, < 3.0)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
@@ -160,7 +161,7 @@ GEM
i18n (1.14.1)
concurrent-ruby (~> 1.0)
jmespath (1.6.2)
- json (2.7.0)
+ json (2.7.1)
jwt (2.7.1)
mini_magick (4.12.0)
mini_mime (1.1.5)
diff --git a/packages/hmssdk_flutter/example/android/app/build.gradle b/packages/hmssdk_flutter/example/android/app/build.gradle
index 76dd2e826..54a6d0ee7 100644
--- a/packages/hmssdk_flutter/example/android/app/build.gradle
+++ b/packages/hmssdk_flutter/example/android/app/build.gradle
@@ -32,8 +32,8 @@ android {
applicationId "live.hms.flutter"
minSdkVersion 21
targetSdkVersion 33
- versionCode 402
- versionName "1.5.102"
+ versionCode 407
+ versionName "1.5.107"
}
signingConfigs {
diff --git a/packages/hmssdk_flutter/example/ios/Gemfile.lock b/packages/hmssdk_flutter/example/ios/Gemfile.lock
index 61114f35a..3973c327d 100644
--- a/packages/hmssdk_flutter/example/ios/Gemfile.lock
+++ b/packages/hmssdk_flutter/example/ios/Gemfile.lock
@@ -8,12 +8,12 @@ GEM
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
- addressable (2.8.5)
+ addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
artifactory (3.0.15)
atomos (0.1.3)
aws-eventstream (1.3.0)
- aws-partitions (1.862.0)
+ aws-partitions (1.864.0)
aws-sdk-core (3.190.0)
aws-eventstream (~> 1, >= 1.3.0)
aws-partitions (~> 1, >= 1.651.0)
@@ -134,11 +134,11 @@ GEM
google-apis-core (>= 0.11.0, < 2.a)
google-apis-storage_v1 (0.29.0)
google-apis-core (>= 0.11.0, < 2.a)
- google-cloud-core (1.6.0)
- google-cloud-env (~> 1.0)
+ google-cloud-core (1.6.1)
+ google-cloud-env (>= 1.0, < 3.a)
google-cloud-errors (~> 1.0)
- google-cloud-env (1.6.0)
- faraday (>= 0.17.3, < 3.0)
+ google-cloud-env (2.0.1)
+ faraday (>= 1.0, < 3.a)
google-cloud-errors (1.3.1)
google-cloud-storage (1.45.0)
addressable (~> 2.8)
@@ -148,8 +148,9 @@ GEM
google-cloud-core (~> 1.6)
googleauth (>= 0.16.2, < 2.a)
mini_mime (~> 1.0)
- googleauth (1.8.1)
- faraday (>= 0.17.3, < 3.a)
+ googleauth (1.9.0)
+ faraday (>= 1.0, < 3.a)
+ google-cloud-env (~> 2.0, >= 2.0.1)
jwt (>= 1.4, < 3.0)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
@@ -161,7 +162,7 @@ GEM
i18n (1.14.1)
concurrent-ruby (~> 1.0)
jmespath (1.6.2)
- json (2.7.0)
+ json (2.7.1)
jwt (2.7.1)
mini_magick (4.12.0)
mini_mime (1.1.5)
diff --git a/packages/hmssdk_flutter/example/ios/Podfile.lock b/packages/hmssdk_flutter/example/ios/Podfile.lock
index 5ee7a9fc4..f8bb6db68 100644
--- a/packages/hmssdk_flutter/example/ios/Podfile.lock
+++ b/packages/hmssdk_flutter/example/ios/Podfile.lock
@@ -25,15 +25,15 @@ PODS:
- Firebase/Performance (= 10.9.0)
- firebase_core
- Flutter
- - FirebaseABTesting (10.18.0):
+ - FirebaseABTesting (10.19.0):
- FirebaseCore (~> 10.0)
- FirebaseCore (10.9.0):
- FirebaseCoreInternal (~> 10.0)
- GoogleUtilities/Environment (~> 7.8)
- GoogleUtilities/Logger (~> 7.8)
- - FirebaseCoreExtension (10.18.0):
+ - FirebaseCoreExtension (10.19.0):
- FirebaseCore (~> 10.0)
- - FirebaseCoreInternal (10.18.0):
+ - FirebaseCoreInternal (10.19.0):
- "GoogleUtilities/NSData+zlib (~> 7.8)"
- FirebaseCrashlytics (10.9.0):
- FirebaseCore (~> 10.5)
@@ -45,7 +45,7 @@ PODS:
- PromisesObjC (~> 2.1)
- FirebaseDynamicLinks (10.9.0):
- FirebaseCore (~> 10.0)
- - FirebaseInstallations (10.18.0):
+ - FirebaseInstallations (10.19.0):
- FirebaseCore (~> 10.0)
- GoogleUtilities/Environment (~> 7.8)
- GoogleUtilities/UserDefaults (~> 7.8)
@@ -60,14 +60,14 @@ PODS:
- GoogleUtilities/ISASwizzler (~> 7.8)
- GoogleUtilities/MethodSwizzler (~> 7.8)
- nanopb (< 2.30910.0, >= 2.30908.0)
- - FirebaseRemoteConfig (10.18.0):
+ - FirebaseRemoteConfig (10.19.0):
- FirebaseABTesting (~> 10.0)
- FirebaseCore (~> 10.0)
- FirebaseInstallations (~> 10.0)
- FirebaseSharedSwift (~> 10.0)
- GoogleUtilities/Environment (~> 7.8)
- "GoogleUtilities/NSData+zlib (~> 7.8)"
- - FirebaseSessions (10.18.0):
+ - FirebaseSessions (10.19.0):
- FirebaseCore (~> 10.5)
- FirebaseCoreExtension (~> 10.0)
- FirebaseInstallations (~> 10.0)
@@ -75,7 +75,7 @@ PODS:
- GoogleUtilities/Environment (~> 7.10)
- nanopb (< 2.30910.0, >= 2.30908.0)
- PromisesSwift (~> 2.1)
- - FirebaseSharedSwift (10.18.0)
+ - FirebaseSharedSwift (10.19.0)
- Flutter (1.0.0)
- flutter_foreground_task (0.0.1):
- Flutter
@@ -97,14 +97,14 @@ PODS:
- HMSBroadcastExtensionSDK (0.0.9)
- HMSHLSPlayerSDK (0.0.2):
- HMSAnalyticsSDK (= 0.0.2)
- - HMSSDK (1.3.0):
+ - HMSSDK (1.4.0):
- HMSAnalyticsSDK (= 0.0.2)
- HMSWebRTC (= 1.0.5116)
- - hmssdk_flutter (1.9.4):
+ - hmssdk_flutter (1.9.5):
- Flutter
- HMSBroadcastExtensionSDK (= 0.0.9)
- HMSHLSPlayerSDK (= 0.0.2)
- - HMSSDK (= 1.3.0)
+ - HMSSDK (= 1.4.0)
- HMSWebRTC (1.0.5116)
- MTBBarcodeScanner (5.0.11)
- nanopb (2.30909.1):
@@ -217,17 +217,17 @@ SPEC CHECKSUMS:
firebase_crashlytics: 9b80d1944507cc07fa1c4455797f7d2eb7c8873f
firebase_dynamic_links: db9f2ebcc3ea646e76a1d3ee37e9e57890ff0a83
firebase_performance: d11d1fd9591547f6b75f325aaadd6550eaf7e090
- FirebaseABTesting: d8b10ff4c6d1a9d6b11f02a08463ad5fd9fc6b1b
+ FirebaseABTesting: bfa3b384b68cee10a89183649c64cd7998a37a12
FirebaseCore: b68d3616526ec02e4d155166bbafb8eca64af557
- FirebaseCoreExtension: 62b201498aa10535801cdf3448c7f4db5e24ed80
- FirebaseCoreInternal: 8eb002e564b533bdcf1ba011f33f2b5c10e2ed4a
+ FirebaseCoreExtension: c08d14c7b22e07994e876d837e6f58642f340087
+ FirebaseCoreInternal: b444828ea7cfd594fca83046b95db98a2be4f290
FirebaseCrashlytics: b60329455285aff853e54139d8ddbfe1e5f2b9f9
FirebaseDynamicLinks: 8cb66c4f403aa6ddf86ff3bc3c383a652f344ce9
- FirebaseInstallations: e842042ec6ac1fd2e37d7706363ebe7f662afea4
+ FirebaseInstallations: 033d199474164db20c8350736842a94fe717b960
FirebasePerformance: eee2f5da94fd7e5d15487649f8fe10a90c87c174
- FirebaseRemoteConfig: bbd42790a4e84fde6aab7eae810b608e7b5c0bf6
- FirebaseSessions: f90fe9212ee2818641eda051c0835c9c4e30d9ae
- FirebaseSharedSwift: 62e248642c0582324d0390706cadd314687c116b
+ FirebaseRemoteConfig: a7fcc7a5941faa7e09248e91c8797340aa4c85f6
+ FirebaseSessions: e5f4caa188dc8bc6142abc974355be75b042215e
+ FirebaseSharedSwift: f34eeb7d3ea87a34497629b6ca41657beadef76a
Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854
flutter_foreground_task: 21ef182ab0a29a3005cc72cd70e5f45cb7f7f817
GoogleDataTransport: 57c22343ab29bc686febbf7cbb13bad167c2d8fe
@@ -235,8 +235,8 @@ SPEC CHECKSUMS:
HMSAnalyticsSDK: 4d2a88a729b1eb42f3d25f217c28937ec318a5b7
HMSBroadcastExtensionSDK: d80fe325f6c928bd8e5176290b5a4b7ae15d6fbb
HMSHLSPlayerSDK: 6a54ad4d12f3dc2270d1ecd24019d71282a4f6a3
- HMSSDK: 631908d772646b66b3c4f7f4e1fb2681f7abb990
- hmssdk_flutter: ce3c54bbda2a8e1d893be672a877510a546da012
+ HMSSDK: 1bfd81ce70d61864cf2496018892d95335164b53
+ hmssdk_flutter: b8e4641f6839d0492c447b338169a813cb443816
HMSWebRTC: ae54e9dd91b869051b283b43b14f57d43b7bf8e1
MTBBarcodeScanner: f453b33c4b7dfe545d8c6484ed744d55671788cb
nanopb: d4d75c12cd1316f4a64e3c6963f879ecd4b5e0d5
diff --git a/packages/hmssdk_flutter/example/ios/Runner.xcodeproj/project.pbxproj b/packages/hmssdk_flutter/example/ios/Runner.xcodeproj/project.pbxproj
index b4f14f7ae..3f12e3fba 100644
--- a/packages/hmssdk_flutter/example/ios/Runner.xcodeproj/project.pbxproj
+++ b/packages/hmssdk_flutter/example/ios/Runner.xcodeproj/project.pbxproj
@@ -7,14 +7,14 @@
objects = {
/* Begin PBXBuildFile section */
+ 13A4E967BFA539D9C281B0C1 /* Pods_FlutterBroadcastUploadExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FFB31E34C8F8BCED73A0DED /* Pods_FlutterBroadcastUploadExtension.framework */; };
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
- 6A8DAA457993A7BBF808447F /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 650E3B08A6C973442370ABD8 /* Pods_Runner.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
- C45DFE66D74DCDD1B6244A17 /* Pods_FlutterBroadcastUploadExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 683C65A6AADC79CE61E0513E /* Pods_FlutterBroadcastUploadExtension.framework */; };
+ D18F570DD3255ED3EA289977 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 41B8003D2A87475893EBDC35 /* Pods_Runner.framework */; };
EC1052B22858A77D005EAB9E /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC1052B12858A77D005EAB9E /* ReplayKit.framework */; };
EC1052B52858A77D005EAB9E /* SampleHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1052B42858A77D005EAB9E /* SampleHandler.swift */; };
EC1052B92858A77D005EAB9E /* FlutterBroadcastUploadExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = EC1052B02858A77D005EAB9E /* FlutterBroadcastUploadExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
@@ -56,17 +56,17 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
+ 0379B33E02429598E0E5B6DD /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; };
- 238323F347131537C23069F5 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
+ 33004F7844D65ECDC49C7337 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; };
- 41AA5D92A2CC1BB27F1A83DE /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; };
- 650E3B08A6C973442370ABD8 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 683C65A6AADC79CE61E0513E /* Pods_FlutterBroadcastUploadExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_FlutterBroadcastUploadExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 41B8003D2A87475893EBDC35 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 4F65824659E8556B8219638A /* Pods-FlutterBroadcastUploadExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FlutterBroadcastUploadExtension.release.xcconfig"; path = "Target Support Files/Pods-FlutterBroadcastUploadExtension/Pods-FlutterBroadcastUploadExtension.release.xcconfig"; sourceTree = ""; };
+ 6FFB31E34C8F8BCED73A0DED /* Pods_FlutterBroadcastUploadExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_FlutterBroadcastUploadExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; };
74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; };
74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; };
- 89EFF6EE4AAF69984055D76C /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; };
9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; };
97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -74,9 +74,9 @@
97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
- B0623F8FBD08D7EF79FF5844 /* Pods-FlutterBroadcastUploadExtension.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FlutterBroadcastUploadExtension.profile.xcconfig"; path = "Target Support Files/Pods-FlutterBroadcastUploadExtension/Pods-FlutterBroadcastUploadExtension.profile.xcconfig"; sourceTree = ""; };
B44CF4C02A83BCF0003B3D5E /* RunnerRelease.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = RunnerRelease.entitlements; sourceTree = ""; };
- CD3C8BA7497CF5A349499EE7 /* Pods-FlutterBroadcastUploadExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FlutterBroadcastUploadExtension.release.xcconfig"; path = "Target Support Files/Pods-FlutterBroadcastUploadExtension/Pods-FlutterBroadcastUploadExtension.release.xcconfig"; sourceTree = ""; };
+ D0C8C6B4A94A6E15007F7D46 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
+ EA887658136F948769F1129B /* Pods-FlutterBroadcastUploadExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FlutterBroadcastUploadExtension.debug.xcconfig"; path = "Target Support Files/Pods-FlutterBroadcastUploadExtension/Pods-FlutterBroadcastUploadExtension.debug.xcconfig"; sourceTree = ""; };
EC1052B02858A77D005EAB9E /* FlutterBroadcastUploadExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = FlutterBroadcastUploadExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
EC1052B12858A77D005EAB9E /* ReplayKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReplayKit.framework; path = System/Library/Frameworks/ReplayKit.framework; sourceTree = SDKROOT; };
EC1052B42858A77D005EAB9E /* SampleHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SampleHandler.swift; sourceTree = ""; };
@@ -84,7 +84,7 @@
EC3386D4296EBF6B00F565A8 /* Runner.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; };
EC638D182858ABE8005D0AF2 /* FlutterBroadcastUploadExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = FlutterBroadcastUploadExtension.entitlements; sourceTree = ""; };
EC9BCD2A26B1CFDB00D378A0 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; };
- FA1DA48EB088E64EABD2ADFE /* Pods-FlutterBroadcastUploadExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FlutterBroadcastUploadExtension.debug.xcconfig"; path = "Target Support Files/Pods-FlutterBroadcastUploadExtension/Pods-FlutterBroadcastUploadExtension.debug.xcconfig"; sourceTree = ""; };
+ FF549B17CAF9408297610536 /* Pods-FlutterBroadcastUploadExtension.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FlutterBroadcastUploadExtension.profile.xcconfig"; path = "Target Support Files/Pods-FlutterBroadcastUploadExtension/Pods-FlutterBroadcastUploadExtension.profile.xcconfig"; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -92,7 +92,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 6A8DAA457993A7BBF808447F /* Pods_Runner.framework in Frameworks */,
+ D18F570DD3255ED3EA289977 /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -101,7 +101,7 @@
buildActionMask = 2147483647;
files = (
EC1052B22858A77D005EAB9E /* ReplayKit.framework in Frameworks */,
- C45DFE66D74DCDD1B6244A17 /* Pods_FlutterBroadcastUploadExtension.framework in Frameworks */,
+ 13A4E967BFA539D9C281B0C1 /* Pods_FlutterBroadcastUploadExtension.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -112,8 +112,8 @@
isa = PBXGroup;
children = (
EC1052B12858A77D005EAB9E /* ReplayKit.framework */,
- 683C65A6AADC79CE61E0513E /* Pods_FlutterBroadcastUploadExtension.framework */,
- 650E3B08A6C973442370ABD8 /* Pods_Runner.framework */,
+ 6FFB31E34C8F8BCED73A0DED /* Pods_FlutterBroadcastUploadExtension.framework */,
+ 41B8003D2A87475893EBDC35 /* Pods_Runner.framework */,
);
name = Frameworks;
sourceTree = "";
@@ -171,12 +171,12 @@
B2F80193CC408B94D74DE224 /* Pods */ = {
isa = PBXGroup;
children = (
- 89EFF6EE4AAF69984055D76C /* Pods-Runner.debug.xcconfig */,
- 41AA5D92A2CC1BB27F1A83DE /* Pods-Runner.release.xcconfig */,
- 238323F347131537C23069F5 /* Pods-Runner.profile.xcconfig */,
- FA1DA48EB088E64EABD2ADFE /* Pods-FlutterBroadcastUploadExtension.debug.xcconfig */,
- CD3C8BA7497CF5A349499EE7 /* Pods-FlutterBroadcastUploadExtension.release.xcconfig */,
- B0623F8FBD08D7EF79FF5844 /* Pods-FlutterBroadcastUploadExtension.profile.xcconfig */,
+ EA887658136F948769F1129B /* Pods-FlutterBroadcastUploadExtension.debug.xcconfig */,
+ 4F65824659E8556B8219638A /* Pods-FlutterBroadcastUploadExtension.release.xcconfig */,
+ FF549B17CAF9408297610536 /* Pods-FlutterBroadcastUploadExtension.profile.xcconfig */,
+ D0C8C6B4A94A6E15007F7D46 /* Pods-Runner.debug.xcconfig */,
+ 33004F7844D65ECDC49C7337 /* Pods-Runner.release.xcconfig */,
+ 0379B33E02429598E0E5B6DD /* Pods-Runner.profile.xcconfig */,
);
path = Pods;
sourceTree = "";
@@ -198,16 +198,16 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
- D769E267F13386F26EC49DC5 /* [CP] Check Pods Manifest.lock */,
+ 2FFBE73C2E229E9599BF0B6B /* [CP] Check Pods Manifest.lock */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
EC1052BA2858A77D005EAB9E /* Embed App Extensions */,
- 7B56423DDF1948A38AE2EA10 /* [CP] Embed Pods Frameworks */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
CC19BBB77EA3E7F699588CF7 /* [firebase_crashlytics] Crashlytics Upload Symbols */,
+ 6F3F5B27EBB90D146ABDD315 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
@@ -223,7 +223,7 @@
isa = PBXNativeTarget;
buildConfigurationList = EC1052BE2858A77D005EAB9E /* Build configuration list for PBXNativeTarget "FlutterBroadcastUploadExtension" */;
buildPhases = (
- 402164D3899CD572C6304156 /* [CP] Check Pods Manifest.lock */,
+ 35CCB99FE7A87DC47FA18972 /* [CP] Check Pods Manifest.lock */,
EC1052AC2858A77D005EAB9E /* Sources */,
EC1052AD2858A77D005EAB9E /* Frameworks */,
EC1052AE2858A77D005EAB9E /* Resources */,
@@ -298,23 +298,29 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
- 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
+ 2FFBE73C2E229E9599BF0B6B /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
- alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
+ inputFileListPaths = (
+ );
inputPaths = (
- "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
);
- name = "Thin Binary";
outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin\n";
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
};
- 402164D3899CD572C6304156 /* [CP] Check Pods Manifest.lock */ = {
+ 35CCB99FE7A87DC47FA18972 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -336,7 +342,23 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
- 7B56423DDF1948A38AE2EA10 /* [CP] Embed Pods Frameworks */ = {
+ 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
+ isa = PBXShellScriptBuildPhase;
+ alwaysOutOfDate = 1;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}",
+ );
+ name = "Thin Binary";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin\n";
+ };
+ 6F3F5B27EBB90D146ABDD315 /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -388,28 +410,6 @@
shellPath = /bin/sh;
shellScript = "\"$PODS_ROOT/FirebaseCrashlytics/upload-symbols\" --flutter-project \"$PROJECT_DIR/firebase_app_id_file.json\" \n";
};
- D769E267F13386F26EC49DC5 /* [CP] Check Pods Manifest.lock */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
- "${PODS_ROOT}/Manifest.lock",
- );
- name = "[CP] Check Pods Manifest.lock";
- outputFileListPaths = (
- );
- outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
- showEnvVarsInLog = 0;
- };
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -730,7 +730,7 @@
};
EC1052BB2858A77D005EAB9E /* Debug */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = FA1DA48EB088E64EABD2ADFE /* Pods-FlutterBroadcastUploadExtension.debug.xcconfig */;
+ baseConfigurationReference = EA887658136F948769F1129B /* Pods-FlutterBroadcastUploadExtension.debug.xcconfig */;
buildSettings = {
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
@@ -775,7 +775,7 @@
};
EC1052BC2858A77D005EAB9E /* Release */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = CD3C8BA7497CF5A349499EE7 /* Pods-FlutterBroadcastUploadExtension.release.xcconfig */;
+ baseConfigurationReference = 4F65824659E8556B8219638A /* Pods-FlutterBroadcastUploadExtension.release.xcconfig */;
buildSettings = {
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
@@ -815,7 +815,7 @@
};
EC1052BD2858A77D005EAB9E /* Profile */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = B0623F8FBD08D7EF79FF5844 /* Pods-FlutterBroadcastUploadExtension.profile.xcconfig */;
+ baseConfigurationReference = FF549B17CAF9408297610536 /* Pods-FlutterBroadcastUploadExtension.profile.xcconfig */;
buildSettings = {
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
diff --git a/packages/hmssdk_flutter/example/ios/Runner/Info.plist b/packages/hmssdk_flutter/example/ios/Runner/Info.plist
index 07f71b7bd..7cec9b70f 100644
--- a/packages/hmssdk_flutter/example/ios/Runner/Info.plist
+++ b/packages/hmssdk_flutter/example/ios/Runner/Info.plist
@@ -21,7 +21,7 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 1.5.101
+ 1.5.107
CFBundleSignature
????
CFBundleURLTypes
@@ -48,7 +48,7 @@
CFBundleVersion
- 401
+ 407
ITSAppUsesNonExemptEncryption
LSApplicationCategoryType
diff --git a/packages/hmssdk_flutter/example/lib/app_settings_bottom_sheet.dart b/packages/hmssdk_flutter/example/lib/app_settings_bottom_sheet.dart
index dea898ac9..978aeb86c 100644
--- a/packages/hmssdk_flutter/example/lib/app_settings_bottom_sheet.dart
+++ b/packages/hmssdk_flutter/example/lib/app_settings_bottom_sheet.dart
@@ -28,6 +28,7 @@ class _AppSettingsBottomSheetState extends State {
bool isDebugMode = false;
HMSAudioMode currentAudioMode = HMSAudioMode.VOICE;
bool isStreamingFlow = true;
+ bool nameChangeOnPreview = true;
var versions = {};
@@ -72,6 +73,9 @@ class _AppSettingsBottomSheetState extends State {
isStreamingFlow =
await Utilities.getBoolData(key: 'is_streaming_flow') ?? true;
+ nameChangeOnPreview =
+ await Utilities.getBoolData(key: 'name-change-on-preview') ?? true;
+
WidgetsBinding.instance.addPostFrameCallback((_) {
setState(() {});
});
@@ -89,6 +93,7 @@ class _AppSettingsBottomSheetState extends State {
AppDebugConfig.showStats = showStats;
AppDebugConfig.skipPreview = skipPreview;
AppDebugConfig.isDebugMode = isDebugMode;
+ AppDebugConfig.nameChangeOnPreview = true;
}
Future _launchUrl() async {
@@ -336,6 +341,36 @@ class _AppSettingsBottomSheetState extends State {
setState(() {})
}),
),
+ ListTile(
+ horizontalTitleGap: 2,
+ enabled: false,
+ contentPadding: EdgeInsets.zero,
+ leading: SvgPicture.asset(
+ "packages/hms_room_kit/lib/src/assets/icons/pencil.svg",
+ fit: BoxFit.scaleDown,
+ colorFilter:
+ ColorFilter.mode(themeDefaultColor, BlendMode.srcIn),
+ ),
+ title: Text(
+ "Name Change On Preview",
+ semanticsLabel: "fl_disable_name_change_on_preview",
+ style: HMSTextStyle.setTextStyle(
+ fontSize: 14,
+ color: themeDefaultColor,
+ letterSpacing: 0.25,
+ fontWeight: FontWeight.w600),
+ ),
+ trailing: CupertinoSwitch(
+ activeColor: hmsdefaultColor,
+ value: nameChangeOnPreview,
+ onChanged: (value) => {
+ nameChangeOnPreview = value,
+ Utilities.saveBoolData(
+ key: 'name-change-on-preview', value: value),
+ AppDebugConfig.nameChangeOnPreview = value,
+ setState(() {})
+ }),
+ ),
ListTile(
horizontalTitleGap: 2,
enabled: false,
diff --git a/packages/hmssdk_flutter/example/lib/main.dart b/packages/hmssdk_flutter/example/lib/main.dart
index 7cdf8690f..e8b1509ef 100644
--- a/packages/hmssdk_flutter/example/lib/main.dart
+++ b/packages/hmssdk_flutter/example/lib/main.dart
@@ -290,6 +290,9 @@ class _HomePageState extends State {
builder: (_) => HMSPrebuilt(
roomCode: Constant.roomCode,
options: HMSPrebuiltOptions(
+ userName: AppDebugConfig.nameChangeOnPreview
+ ? null
+ : "Flutter User",
endPoints: endPoints,
userId:
"user_flutter", // pass your custom unique user identifier here
diff --git a/packages/hmssdk_flutter/example/lib/qr_code_screen.dart b/packages/hmssdk_flutter/example/lib/qr_code_screen.dart
index 7df014c7e..54a78eddc 100644
--- a/packages/hmssdk_flutter/example/lib/qr_code_screen.dart
+++ b/packages/hmssdk_flutter/example/lib/qr_code_screen.dart
@@ -78,6 +78,9 @@ class _QRCodeScreenState extends State {
builder: (_) => HMSPrebuilt(
roomCode: Constant.roomCode,
options: HMSPrebuiltOptions(
+ userName: AppDebugConfig.nameChangeOnPreview
+ ? null
+ : "Flutter User",
endPoints: endPoints,
iOSScreenshareConfig: HMSIOSScreenshareConfig(
appGroup: "group.flutterhms",
diff --git a/packages/hmssdk_flutter/example/pubspec.lock b/packages/hmssdk_flutter/example/pubspec.lock
index ba7af1473..1f981838a 100644
--- a/packages/hmssdk_flutter/example/pubspec.lock
+++ b/packages/hmssdk_flutter/example/pubspec.lock
@@ -286,15 +286,15 @@ packages:
path: "../../hms_room_kit"
relative: true
source: path
- version: "1.0.7"
+ version: "1.0.8"
hmssdk_flutter:
dependency: transitive
description:
name: hmssdk_flutter
- sha256: "27dfc516ee4673ff092fc4e18487c315780b8470a2fbcf0f486bdfa529fc53cb"
+ sha256: f61fb1ffcaf7296e0e2eeff9bc34d699baf9190136b8570a15cde61819cf3276
url: "https://pub.dev"
source: hosted
- version: "1.9.4"
+ version: "1.9.5"
http:
dependency: transitive
description:
@@ -315,10 +315,10 @@ packages:
dependency: transitive
description:
name: intl
- sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d"
+ sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf
url: "https://pub.dev"
source: hosted
- version: "0.18.1"
+ version: "0.19.0"
js:
dependency: transitive
description:
@@ -728,10 +728,10 @@ packages:
dependency: "direct main"
description:
name: url_launcher
- sha256: b1c9e98774adf8820c96fbc7ae3601231d324a7d5ebd8babe27b6dfac91357ba
+ sha256: e9aa5ea75c84cf46b3db4eea212523591211c3cf2e13099ee4ec147f54201c86
url: "https://pub.dev"
source: hosted
- version: "6.2.1"
+ version: "6.2.2"
url_launcher_android:
dependency: transitive
description:
diff --git a/packages/hmssdk_flutter/example/pubspec.yaml b/packages/hmssdk_flutter/example/pubspec.yaml
index ae66f6208..b152fd524 100644
--- a/packages/hmssdk_flutter/example/pubspec.yaml
+++ b/packages/hmssdk_flutter/example/pubspec.yaml
@@ -4,7 +4,7 @@ description: Demonstrates how to use the hmssdk_flutter plugin.
# The following line prevents the package from being accidentally published to
# pub.dev using `pub publish`. This is preferred for private packages.
publish_to: "none" # Remove this line if you wish to publish to pub.dev
-version: 1.9.4
+version: 1.9.5
environment:
sdk: ">=2.16.0 <4.0.0"
diff --git a/packages/hmssdk_flutter/ios/Classes/Models/HMSHLSVariantExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSHLSVariantExtension.swift
index 8d9e71ffc..965b9bd34 100644
--- a/packages/hmssdk_flutter/ios/Classes/Models/HMSHLSVariantExtension.swift
+++ b/packages/hmssdk_flutter/ios/Classes/Models/HMSHLSVariantExtension.swift
@@ -18,15 +18,14 @@ class HMSHLSVariantExtension {
dict["metadata"] = hmshlsVariant.metadata
- if let url = hmshlsVariant.url{
+ if let url = hmshlsVariant.url {
dict["hls_stream_url"] = url.absoluteString
- }
- else{
+ } else {
dict["hls_stream_url"] = nil
}
if let startedAt = hmshlsVariant.startedAt {
- dict["started_at"] = "\(startedAt)"
+ dict["started_at"] = Int(startedAt.timeIntervalSince1970 * 1000)
}
return dict
diff --git a/packages/hmssdk_flutter/ios/Classes/Models/HMSStreamingStateExtension.swift b/packages/hmssdk_flutter/ios/Classes/Models/HMSStreamingStateExtension.swift
index 549e70c34..e1c1895a1 100644
--- a/packages/hmssdk_flutter/ios/Classes/Models/HMSStreamingStateExtension.swift
+++ b/packages/hmssdk_flutter/ios/Classes/Models/HMSStreamingStateExtension.swift
@@ -15,11 +15,13 @@ class HMSStreamingStateExtension {
dict["running"] = rtmp.running
if let startedAt = rtmp.startedAt {
- dict["started_at"] = "\(startedAt)"
+ dict["started_at"] = Int(startedAt.timeIntervalSince1970 * 1000)
}
if let error = rtmp.error {
dict.merge(HMSErrorExtension.toDictionary(error)) { (_, new) in new }
}
+
+ dict["state"] = rtmp.state.displayString().uppercased()
return dict
}
@@ -29,12 +31,13 @@ class HMSStreamingStateExtension {
dict["running"] = server.running
if let startedAt = server.startedAt {
- dict["started_at"] = "\(startedAt)"
+ dict["started_at"] = Int(startedAt.timeIntervalSince1970 * 1000)
}
if let error = server.error {
dict.merge(HMSErrorExtension.toDictionary(error)) { (_, new) in new }
}
-
+
+ dict["state"] = server.state.displayString().uppercased()
return dict
}
@@ -46,12 +49,13 @@ class HMSStreamingStateExtension {
dict["running"] = browser.running
if let startedAt = browser.startedAt {
- dict["started_at"] = "\(startedAt)"
+ dict["started_at"] = Int(startedAt.timeIntervalSince1970 * 1000)
}
if let error = browser.error {
dict.merge(HMSErrorExtension.toDictionary(error)) { (_, new) in new }
}
+ dict["state"] = browser.state.displayString().uppercased()
return dict
}
@@ -65,6 +69,7 @@ class HMSStreamingStateExtension {
}
dict["variants"]=args
+ dict["state"] = hlsStreaming.state.displayString().uppercased()
return dict
}
@@ -73,12 +78,13 @@ class HMSStreamingStateExtension {
dict["running"] = hlsRecording.running
if let startedAt = hlsRecording.startedAt {
- dict["started_at"] = "\(startedAt)"
+ dict["started_at"] = Int(startedAt.timeIntervalSince1970 * 1000)
}
if let error = hlsRecording.error {
dict.merge(HMSErrorExtension.toDictionary(error)) { (_, new) in new }
}
+ dict["state"] = hlsRecording.state.displayString().uppercased()
return dict
}
}
diff --git a/packages/hmssdk_flutter/ios/Classes/SwiftHmssdkFlutterPlugin.swift b/packages/hmssdk_flutter/ios/Classes/SwiftHmssdkFlutterPlugin.swift
index cc60287fb..158e8d361 100644
--- a/packages/hmssdk_flutter/ios/Classes/SwiftHmssdkFlutterPlugin.swift
+++ b/packages/hmssdk_flutter/ios/Classes/SwiftHmssdkFlutterPlugin.swift
@@ -1200,9 +1200,9 @@ public class SwiftHmssdkFlutterPlugin: NSObject, FlutterPlugin, HMSUpdateListene
* the stream URL.
*/
- if room.hlsStreamingState.running {
+ if room.hlsStreamingState.state == HMSStreamingState.started {
if !room.hlsStreamingState.variants.isEmpty {
- hlsStreamUrl = room.hlsStreamingState.variants[0].url?.absoluteString
+ hlsStreamUrl = room.hlsStreamingState.variants.first?.url?.absoluteString
}
}
@@ -1225,9 +1225,9 @@ public class SwiftHmssdkFlutterPlugin: NSObject, FlutterPlugin, HMSUpdateListene
* the stream URL.
*/
- if room.hlsStreamingState.running {
+ if room.hlsStreamingState.state == HMSStreamingState.started {
if !room.hlsStreamingState.variants.isEmpty {
- hlsStreamUrl = room.hlsStreamingState.variants[0].url?.absoluteString
+ hlsStreamUrl = room.hlsStreamingState.variants.first?.url?.absoluteString
}
}
diff --git a/packages/hmssdk_flutter/lib/assets/sdk-versions.json b/packages/hmssdk_flutter/lib/assets/sdk-versions.json
index 56b239ded..17d0668de 100644
--- a/packages/hmssdk_flutter/lib/assets/sdk-versions.json
+++ b/packages/hmssdk_flutter/lib/assets/sdk-versions.json
@@ -1,6 +1,6 @@
{
- "flutter": "1.9.4",
- "ios": "1.3.1",
+ "flutter": "1.9.5",
+ "ios": "1.4.0",
"iOSBroadcastExtension": "0.0.9",
"iOSHLSPlayerSDK": "0.0.2",
"android": "2.8.3"
diff --git a/packages/hmssdk_flutter/lib/hmssdk_flutter.dart b/packages/hmssdk_flutter/lib/hmssdk_flutter.dart
index 691329cea..121adadd8 100644
--- a/packages/hmssdk_flutter/lib/hmssdk_flutter.dart
+++ b/packages/hmssdk_flutter/lib/hmssdk_flutter.dart
@@ -100,6 +100,8 @@ export 'src/model/hls_player/hms_hls_cue.dart';
export 'src/model/hls_player/hms_hls_timed_metadata.dart';
export 'src/model/hms_peer_list_iterator.dart';
export 'src/model/peer_list_iterator_options.dart';
+export 'src/enum/hms_recording_state.dart';
+export 'src/enum/hms_streaming_state.dart';
//Views
export 'src/ui/meeting/hms_texture_view.dart';
diff --git a/packages/hmssdk_flutter/lib/src/enum/hms_recording_state.dart b/packages/hmssdk_flutter/lib/src/enum/hms_recording_state.dart
new file mode 100644
index 000000000..30e6afcee
--- /dev/null
+++ b/packages/hmssdk_flutter/lib/src/enum/hms_recording_state.dart
@@ -0,0 +1,64 @@
+///Enum for the recording state in room
+enum HMSRecordingState {
+ none,
+
+ starting,
+
+ started,
+
+ paused,
+
+ resumed,
+
+ stopped,
+
+ failed,
+}
+
+extension HMSRecordingStateValues on HMSRecordingState {
+ static HMSRecordingState getRecordingStateFromName(String name) {
+ switch (name) {
+ case 'NONE':
+ return HMSRecordingState.none;
+ case 'STARTING':
+ return HMSRecordingState.starting;
+ case 'STARTED':
+ return HMSRecordingState.started;
+ case 'PAUSED':
+ return HMSRecordingState.paused;
+ case 'RESUMED':
+ return HMSRecordingState.resumed;
+ case 'STOPPED':
+ return HMSRecordingState.stopped;
+ case 'FAILED':
+ return HMSRecordingState.failed;
+ default:
+ return HMSRecordingState.none;
+ }
+ }
+
+ static String getNameFromRecordingState(HMSRecordingState state) {
+ switch (state) {
+ case HMSRecordingState.none:
+ return 'NONE';
+
+ case HMSRecordingState.starting:
+ return 'STARTING';
+
+ case HMSRecordingState.started:
+ return 'STARTED';
+
+ case HMSRecordingState.paused:
+ return 'PAUSED';
+
+ case HMSRecordingState.resumed:
+ return 'RESUMED';
+
+ case HMSRecordingState.stopped:
+ return 'STOPPED';
+
+ case HMSRecordingState.failed:
+ return 'FAILED';
+ }
+ }
+}
diff --git a/packages/hmssdk_flutter/lib/src/enum/hms_streaming_state.dart b/packages/hmssdk_flutter/lib/src/enum/hms_streaming_state.dart
new file mode 100644
index 000000000..ad9b119a5
--- /dev/null
+++ b/packages/hmssdk_flutter/lib/src/enum/hms_streaming_state.dart
@@ -0,0 +1,50 @@
+///Enum for the streaming state in room
+enum HMSStreamingState {
+ none,
+
+ starting,
+
+ started,
+
+ stopped,
+
+ failed,
+}
+
+extension HMSStreamingStateValues on HMSStreamingState {
+ static HMSStreamingState getStreamingStateFromName(String name) {
+ switch (name) {
+ case 'NONE':
+ return HMSStreamingState.none;
+ case 'STARTING':
+ return HMSStreamingState.starting;
+ case 'STARTED':
+ return HMSStreamingState.started;
+ case 'STOPPED':
+ return HMSStreamingState.stopped;
+ case 'FAILED':
+ return HMSStreamingState.failed;
+ default:
+ return HMSStreamingState.none;
+ }
+ }
+
+ static String getNameFromStreamingState(HMSStreamingState state) {
+ switch (state) {
+ case HMSStreamingState.none:
+ return 'NONE';
+
+ case HMSStreamingState.starting:
+ return 'STARTING';
+
+ case HMSStreamingState.started:
+ return 'STARTED';
+
+ case HMSStreamingState.stopped:
+ return 'STOPPED';
+
+ case HMSStreamingState.failed:
+ return 'FAILED';
+ }
+ }
+}
diff --git a/packages/hmssdk_flutter/lib/src/model/hms_browser_recording_state.dart b/packages/hmssdk_flutter/lib/src/model/hms_browser_recording_state.dart
index eab39848f..60dc9115a 100644
--- a/packages/hmssdk_flutter/lib/src/model/hms_browser_recording_state.dart
+++ b/packages/hmssdk_flutter/lib/src/model/hms_browser_recording_state.dart
@@ -1,28 +1,33 @@
// Project imports:
import 'package:hmssdk_flutter/src/exceptions/hms_exception.dart';
import 'package:hmssdk_flutter/src/model/hms_date_extension.dart';
+import 'package:hmssdk_flutter/src/enum/hms_recording_state.dart';
///100ms HMSBrowserRecordingState
///
-///[HMSBrowserRecordingState] contains information about the borwser recording status.
+///[HMSBrowserRecordingState] contains information about the browser recording status.
class HMSBrowserRecordingState {
final HMSException? error;
final bool running;
DateTime? startedAt;
final bool initialising;
+ HMSRecordingState state;
HMSBrowserRecordingState(
{required this.error,
required this.running,
this.startedAt,
- required this.initialising});
+ required this.initialising,
+ required this.state});
factory HMSBrowserRecordingState.fromMap(Map map) {
return HMSBrowserRecordingState(
error: map["error"] != null ? HMSException.fromMap(map) : null,
running: map['running'],
startedAt: map['started_at'] != null
- ? HMSDateExtension.convertDateFromString(map['started_at'])
+ ? HMSDateExtension.convertDateFromEpoch(map['started_at'])
: null,
- initialising: map['initialising']);
+ initialising: map['initialising'],
+ state: HMSRecordingStateValues.getRecordingStateFromName(
+ map['state'] ?? 'NONE'));
}
}
diff --git a/packages/hmssdk_flutter/lib/src/model/hms_hls_recording_state.dart b/packages/hmssdk_flutter/lib/src/model/hms_hls_recording_state.dart
index 840647dca..1ded6f1d6 100644
--- a/packages/hmssdk_flutter/lib/src/model/hms_hls_recording_state.dart
+++ b/packages/hmssdk_flutter/lib/src/model/hms_hls_recording_state.dart
@@ -1,6 +1,7 @@
// Project imports:
import 'package:hmssdk_flutter/src/exceptions/hms_exception.dart';
import 'package:hmssdk_flutter/src/model/hms_date_extension.dart';
+import 'package:hmssdk_flutter/src/enum/hms_recording_state.dart';
///100ms HMSHLSRecordingState
///
@@ -9,8 +10,12 @@ class HMSHLSRecordingState {
final HMSException? error;
final bool running;
DateTime? startedAt;
+ HMSRecordingState state;
HMSHLSRecordingState(
- {required this.error, required this.running, this.startedAt});
+ {required this.error,
+ required this.running,
+ this.startedAt,
+ required this.state});
factory HMSHLSRecordingState.fromMap(Map map) {
return HMSHLSRecordingState(
@@ -19,7 +24,9 @@ class HMSHLSRecordingState {
: null,
running: map['running'],
startedAt: map['started_at'] != null
- ? HMSDateExtension.convertDateFromString(map['started_at'])
- : null);
+ ? HMSDateExtension.convertDateFromEpoch(map['started_at'])
+ : null,
+ state: HMSRecordingStateValues.getRecordingStateFromName(
+ map['state'] ?? 'NONE'));
}
}
diff --git a/packages/hmssdk_flutter/lib/src/model/hms_hls_streaming_state.dart b/packages/hmssdk_flutter/lib/src/model/hms_hls_streaming_state.dart
index 3e2855d07..b1308cabb 100644
--- a/packages/hmssdk_flutter/lib/src/model/hms_hls_streaming_state.dart
+++ b/packages/hmssdk_flutter/lib/src/model/hms_hls_streaming_state.dart
@@ -1,5 +1,6 @@
// Project imports
import 'package:hmssdk_flutter/src/model/hms_hls_variant.dart';
+import 'package:hmssdk_flutter/src/enum/hms_streaming_state.dart';
///100ms HMSHLSStreamingState
///
@@ -7,7 +8,9 @@ import 'package:hmssdk_flutter/src/model/hms_hls_variant.dart';
class HMSHLSStreamingState {
final bool running;
final List variants;
- HMSHLSStreamingState({required this.running, required this.variants});
+ HMSStreamingState state;
+ HMSHLSStreamingState(
+ {required this.running, required this.variants, required this.state});
factory HMSHLSStreamingState.fromMap(Map map) {
List variants = [];
@@ -24,9 +27,13 @@ class HMSHLSStreamingState {
}
}
+ HMSStreamingState state = HMSStreamingStateValues.getStreamingStateFromName(
+ map['state'] ?? 'NONE');
+
return HMSHLSStreamingState(
running: map['running'],
variants: variants,
+ state: state,
);
}
}
diff --git a/packages/hmssdk_flutter/lib/src/model/hms_hls_variant.dart b/packages/hmssdk_flutter/lib/src/model/hms_hls_variant.dart
index d875b9f06..70cd49f67 100644
--- a/packages/hmssdk_flutter/lib/src/model/hms_hls_variant.dart
+++ b/packages/hmssdk_flutter/lib/src/model/hms_hls_variant.dart
@@ -38,7 +38,7 @@ class HMSHLSVariant {
meetingUrl: map['meeting_url'] as String?,
metadata: map['metadata'] as String?,
startedAt: map['started_at'] != null
- ? HMSDateExtension.convertDateFromString(map['started_at'])
+ ? HMSDateExtension.convertDateFromEpoch(map['started_at'])
: null,
);
}
diff --git a/packages/hmssdk_flutter/lib/src/model/hms_rtmp_streaming_state.dart b/packages/hmssdk_flutter/lib/src/model/hms_rtmp_streaming_state.dart
index 65b46dc8e..dc0af80e6 100644
--- a/packages/hmssdk_flutter/lib/src/model/hms_rtmp_streaming_state.dart
+++ b/packages/hmssdk_flutter/lib/src/model/hms_rtmp_streaming_state.dart
@@ -1,23 +1,30 @@
// Project imports:
import 'package:hmssdk_flutter/src/exceptions/hms_exception.dart';
import 'package:hmssdk_flutter/src/model/hms_date_extension.dart';
+import 'package:hmssdk_flutter/src/enum/hms_streaming_state.dart';
-///100ms HMSRtmlStreamingState
+///100ms HMSRtmpStreamingState
///
///[HMSRtmpStreamingState] contains information about the rtmp streaming status.
class HMSRtmpStreamingState {
final HMSException? error;
final bool running;
DateTime? startedAt;
+ HMSStreamingState state;
HMSRtmpStreamingState(
- {required this.error, required this.running, this.startedAt});
+ {required this.error,
+ required this.running,
+ this.startedAt,
+ required this.state});
factory HMSRtmpStreamingState.fromMap(Map map) {
return HMSRtmpStreamingState(
error: map["error"] != null ? HMSException.fromMap(map) : null,
running: map['running'],
startedAt: map['started_at'] != null
- ? HMSDateExtension.convertDateFromString(map['started_at'])
- : null);
+ ? HMSDateExtension.convertDateFromEpoch(map['started_at'])
+ : null,
+ state: HMSStreamingStateValues.getStreamingStateFromName(
+ map['state'] ?? 'NONE'));
}
}
diff --git a/packages/hmssdk_flutter/lib/src/model/hms_server_recording_state.dart b/packages/hmssdk_flutter/lib/src/model/hms_server_recording_state.dart
index 127bd0c24..dbe833a92 100644
--- a/packages/hmssdk_flutter/lib/src/model/hms_server_recording_state.dart
+++ b/packages/hmssdk_flutter/lib/src/model/hms_server_recording_state.dart
@@ -10,15 +10,21 @@ class HMSServerRecordingState {
final HMSException? error;
final bool running;
DateTime? startedAt;
+ HMSRecordingState state;
HMSServerRecordingState(
- {required this.error, required this.running, this.startedAt});
+ {required this.error,
+ required this.running,
+ this.startedAt,
+ required this.state});
factory HMSServerRecordingState.fromMap(Map map) {
return HMSServerRecordingState(
error: map["error"] != null ? HMSException.fromMap(map) : null,
running: map['running'],
startedAt: map['started_at'] != null
- ? HMSDateExtension.convertDateFromString(map['started_at'])
- : null);
+ ? HMSDateExtension.convertDateFromEpoch(map['started_at'])
+ : null,
+ state: HMSRecordingStateValues.getRecordingStateFromName(
+ map['state'] ?? 'NONE'));
}
}
diff --git a/packages/hmssdk_flutter/lib/src/ui/meeting/hms_texture_view.dart b/packages/hmssdk_flutter/lib/src/ui/meeting/hms_texture_view.dart
index 35e188382..db56abf40 100644
--- a/packages/hmssdk_flutter/lib/src/ui/meeting/hms_texture_view.dart
+++ b/packages/hmssdk_flutter/lib/src/ui/meeting/hms_texture_view.dart
@@ -4,6 +4,7 @@ import 'dart:math';
// Flutter imports:
import 'package:flutter/material.dart';
+import 'package:flutter/rendering.dart';
import 'package:flutter/services.dart' show StandardMessageCodec;
// Project imports:
@@ -31,9 +32,7 @@ import 'package:hmssdk_flutter/hmssdk_flutter.dart';
/// **disableAutoSimulcastLayerSelect** - To disable auto simulcast (Adaptive Bitrate)
///
/// **key** - [key] property can be used to forcefully rebuild the video widget by setting a unique key everytime.
-/// Similarly to avoid rebuilding the key should be kept the same for particular HMSVideoView.
-///
-/// **addTrackByDefault** - To call addTrack by default as HMSTextureView is attached to the tree. Default value is [true]
+/// Similarly to avoid rebuilding the key should be kept the same for particular HMSTextureView.
///
/// **controller** - To control the video view, this is useful for custom usecases when you wish to control the addTrack and removeTrack
/// track functionalities on your own.
@@ -57,9 +56,6 @@ class HMSTextureView extends StatelessWidget {
/// Default is [false]
final bool disableAutoSimulcastLayerSelect;
- /// [addTrackByDefault] - To call addTrack by default as HMSVideoView is attached to the tree. Default value is [true]
- final bool addTrackByDefault;
-
/// [controller] - To control the video view, this is useful for custom usecases when you wish to control the addTrack and removeTrack
/// track functionalities on your own.
final HMSTextureViewController? controller;
@@ -70,18 +66,17 @@ class HMSTextureView extends StatelessWidget {
this.setMirror = false,
this.scaleType = ScaleType.SCALE_ASPECT_FIT,
this.disableAutoSimulcastLayerSelect = false,
- this.addTrackByDefault = true,
this.controller})
: super(key: key);
@override
Widget build(BuildContext context) {
return _PlatformView(
+ key: key,
track: track,
setMirror: setMirror,
scaleType: this.scaleType,
disableAutoSimulcastLayerSelect: disableAutoSimulcastLayerSelect,
- addTrackByDefault: addTrackByDefault,
controller: controller,
);
}
@@ -92,7 +87,6 @@ class _PlatformView extends StatefulWidget {
final bool setMirror;
final ScaleType scaleType;
final bool disableAutoSimulcastLayerSelect;
- final bool addTrackByDefault;
final HMSTextureViewController? controller;
_PlatformView(
@@ -101,7 +95,6 @@ class _PlatformView extends StatefulWidget {
this.setMirror = false,
required this.scaleType,
this.disableAutoSimulcastLayerSelect = false,
- this.addTrackByDefault = true,
this.controller})
: super(key: key);
@@ -119,8 +112,10 @@ class _PlatformViewState extends State<_PlatformView> {
/// (Android Only)
if (Platform.isAndroid) {
if (widget.controller == null) {
- viewController =
- HMSTextureViewController(track: widget.track as HMSVideoTrack);
+ viewController = HMSTextureViewController(
+ track: widget.track as HMSVideoTrack,
+ disableAutoSimulcastLayerSelect:
+ widget.disableAutoSimulcastLayerSelect);
} else {
viewController = widget.controller;
}
@@ -191,6 +186,7 @@ class _PlatformViewState extends State<_PlatformView> {
} else if (Platform.isIOS) {
///UIKitView for ios it uses VideoView provided by 100ms ios_sdk internally.
return UiKitView(
+ hitTestBehavior: PlatformViewHitTestBehavior.transparent,
viewType: 'HMSFlutterPlatformView',
creationParamsCodec: StandardMessageCodec(),
creationParams: {
diff --git a/packages/hmssdk_flutter/pubspec.yaml b/packages/hmssdk_flutter/pubspec.yaml
index ecc8f88f7..5208094b9 100644
--- a/packages/hmssdk_flutter/pubspec.yaml
+++ b/packages/hmssdk_flutter/pubspec.yaml
@@ -1,6 +1,6 @@
name: hmssdk_flutter
description: Add Real Time Audio & Video calls, Interactive Live Streaming & Recording, Chat, HLS, RTMP, PiP, CallKit, VoIP, Video conferencing, Stream Player & WebRTC-based communications API
-version: 1.9.4
+version: 1.9.5
homepage: https://www.100ms.live/
repository: https://github.com/100mslive/100ms-flutter
issue_tracker: https://github.com/100mslive/100ms-flutter/issues
diff --git a/sample apps/bloc/pubspec.lock b/sample apps/bloc/pubspec.lock
index 0353333d2..a2aba3ffb 100644
--- a/sample apps/bloc/pubspec.lock
+++ b/sample apps/bloc/pubspec.lock
@@ -45,10 +45,10 @@ packages:
dependency: transitive
description:
name: collection
- sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
+ sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
url: "https://pub.dev"
source: hosted
- version: "1.17.2"
+ version: "1.18.0"
cupertino_icons:
dependency: "direct main"
description:
@@ -159,10 +159,10 @@ packages:
dependency: transitive
description:
name: meta
- sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
+ sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
url: "https://pub.dev"
source: hosted
- version: "1.9.1"
+ version: "1.10.0"
nested:
dependency: transitive
description:
@@ -260,18 +260,18 @@ packages:
dependency: transitive
description:
name: stack_trace
- sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
+ sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
url: "https://pub.dev"
source: hosted
- version: "1.11.0"
+ version: "1.11.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
- sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
+ sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
url: "https://pub.dev"
source: hosted
- version: "2.1.1"
+ version: "2.1.2"
string_scanner:
dependency: transitive
description:
@@ -292,10 +292,10 @@ packages:
dependency: transitive
description:
name: test_api
- sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
+ sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
url: "https://pub.dev"
source: hosted
- version: "0.6.0"
+ version: "0.6.1"
typed_data:
dependency: transitive
description:
@@ -324,10 +324,10 @@ packages:
dependency: transitive
description:
name: web
- sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
+ sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
url: "https://pub.dev"
source: hosted
- version: "0.1.4-beta"
+ version: "0.3.0"
sdks:
- dart: ">=3.1.0-185.0.dev <4.0.0"
+ dart: ">=3.2.0-194.0.dev <4.0.0"
flutter: ">=2.10.0"
diff --git a/sample apps/flutter-audio-room-quickstart/pubspec.lock b/sample apps/flutter-audio-room-quickstart/pubspec.lock
index b9ad621c8..802acb7e2 100644
--- a/sample apps/flutter-audio-room-quickstart/pubspec.lock
+++ b/sample apps/flutter-audio-room-quickstart/pubspec.lock
@@ -37,10 +37,10 @@ packages:
dependency: transitive
description:
name: collection
- sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
+ sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
url: "https://pub.dev"
source: hosted
- version: "1.17.2"
+ version: "1.18.0"
cupertino_icons:
dependency: "direct main"
description:
@@ -111,10 +111,10 @@ packages:
dependency: transitive
description:
name: meta
- sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
+ sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
url: "https://pub.dev"
source: hosted
- version: "1.9.1"
+ version: "1.10.0"
path:
dependency: transitive
description:
@@ -188,18 +188,18 @@ packages:
dependency: transitive
description:
name: stack_trace
- sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
+ sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
url: "https://pub.dev"
source: hosted
- version: "1.11.0"
+ version: "1.11.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
- sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
+ sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
url: "https://pub.dev"
source: hosted
- version: "2.1.1"
+ version: "2.1.2"
string_scanner:
dependency: transitive
description:
@@ -220,10 +220,10 @@ packages:
dependency: transitive
description:
name: test_api
- sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
+ sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
url: "https://pub.dev"
source: hosted
- version: "0.6.0"
+ version: "0.6.1"
vector_math:
dependency: transitive
description:
@@ -236,10 +236,10 @@ packages:
dependency: transitive
description:
name: web
- sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
+ sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
url: "https://pub.dev"
source: hosted
- version: "0.1.4-beta"
+ version: "0.3.0"
sdks:
- dart: ">=3.1.0-185.0.dev <4.0.0"
+ dart: ">=3.2.0-194.0.dev <4.0.0"
flutter: ">=2.8.0"
diff --git a/sample apps/flutter-hls-quickstart/pubspec.lock b/sample apps/flutter-hls-quickstart/pubspec.lock
index 3cc98b632..e93e320f7 100644
--- a/sample apps/flutter-hls-quickstart/pubspec.lock
+++ b/sample apps/flutter-hls-quickstart/pubspec.lock
@@ -37,10 +37,10 @@ packages:
dependency: transitive
description:
name: collection
- sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
+ sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
url: "https://pub.dev"
source: hosted
- version: "1.17.2"
+ version: "1.18.0"
csslib:
dependency: transitive
description:
@@ -132,10 +132,10 @@ packages:
dependency: transitive
description:
name: meta
- sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
+ sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
url: "https://pub.dev"
source: hosted
- version: "1.9.1"
+ version: "1.10.0"
path:
dependency: transitive
description:
@@ -209,18 +209,18 @@ packages:
dependency: transitive
description:
name: stack_trace
- sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
+ sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
url: "https://pub.dev"
source: hosted
- version: "1.11.0"
+ version: "1.11.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
- sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
+ sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
url: "https://pub.dev"
source: hosted
- version: "2.1.1"
+ version: "2.1.2"
string_scanner:
dependency: transitive
description:
@@ -241,10 +241,10 @@ packages:
dependency: transitive
description:
name: test_api
- sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
+ sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
url: "https://pub.dev"
source: hosted
- version: "0.6.0"
+ version: "0.6.1"
vector_math:
dependency: transitive
description:
@@ -297,10 +297,10 @@ packages:
dependency: transitive
description:
name: web
- sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
+ sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
url: "https://pub.dev"
source: hosted
- version: "0.1.4-beta"
+ version: "0.3.0"
sdks:
- dart: ">=3.1.0-185.0.dev <4.0.0"
+ dart: ">=3.2.0-194.0.dev <4.0.0"
flutter: ">=3.3.0"
diff --git a/sample apps/flutter-quickstart-app/pubspec.lock b/sample apps/flutter-quickstart-app/pubspec.lock
index 8f4622fce..707d7c566 100644
--- a/sample apps/flutter-quickstart-app/pubspec.lock
+++ b/sample apps/flutter-quickstart-app/pubspec.lock
@@ -37,10 +37,10 @@ packages:
dependency: transitive
description:
name: collection
- sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
+ sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
url: "https://pub.dev"
source: hosted
- version: "1.17.2"
+ version: "1.18.0"
cupertino_icons:
dependency: "direct main"
description:
@@ -111,10 +111,10 @@ packages:
dependency: transitive
description:
name: meta
- sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
+ sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
url: "https://pub.dev"
source: hosted
- version: "1.9.1"
+ version: "1.10.0"
path:
dependency: transitive
description:
@@ -188,18 +188,18 @@ packages:
dependency: transitive
description:
name: stack_trace
- sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
+ sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
url: "https://pub.dev"
source: hosted
- version: "1.11.0"
+ version: "1.11.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
- sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
+ sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
url: "https://pub.dev"
source: hosted
- version: "2.1.1"
+ version: "2.1.2"
string_scanner:
dependency: transitive
description:
@@ -220,10 +220,10 @@ packages:
dependency: transitive
description:
name: test_api
- sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
+ sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
url: "https://pub.dev"
source: hosted
- version: "0.6.0"
+ version: "0.6.1"
vector_math:
dependency: transitive
description:
@@ -236,10 +236,10 @@ packages:
dependency: transitive
description:
name: web
- sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
+ sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
url: "https://pub.dev"
source: hosted
- version: "0.1.4-beta"
+ version: "0.3.0"
sdks:
- dart: ">=3.1.0-185.0.dev <4.0.0"
+ dart: ">=3.2.0-194.0.dev <4.0.0"
flutter: ">=2.10.0"
diff --git a/sample apps/flutterflow-prebuilt-quickstart/pubspec.lock b/sample apps/flutterflow-prebuilt-quickstart/pubspec.lock
index c259ef983..560354217 100644
--- a/sample apps/flutterflow-prebuilt-quickstart/pubspec.lock
+++ b/sample apps/flutterflow-prebuilt-quickstart/pubspec.lock
@@ -101,10 +101,10 @@ packages:
dependency: transitive
description:
name: collection
- sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
+ sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
url: "https://pub.dev"
source: hosted
- version: "1.17.2"
+ version: "1.18.0"
convert:
dependency: transitive
description:
@@ -425,10 +425,10 @@ packages:
dependency: transitive
description:
name: meta
- sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
+ sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
url: "https://pub.dev"
source: hosted
- version: "1.9.1"
+ version: "1.10.0"
mime:
dependency: transitive
description:
@@ -742,18 +742,18 @@ packages:
dependency: transitive
description:
name: stack_trace
- sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
+ sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
url: "https://pub.dev"
source: hosted
- version: "1.11.0"
+ version: "1.11.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
- sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
+ sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
url: "https://pub.dev"
source: hosted
- version: "2.1.1"
+ version: "2.1.2"
string_scanner:
dependency: transitive
description:
@@ -782,10 +782,10 @@ packages:
dependency: transitive
description:
name: test_api
- sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
+ sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
url: "https://pub.dev"
source: hosted
- version: "0.6.0"
+ version: "0.6.1"
timeago:
dependency: "direct main"
description:
@@ -926,10 +926,10 @@ packages:
dependency: transitive
description:
name: web
- sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
+ sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
url: "https://pub.dev"
source: hosted
- version: "0.1.4-beta"
+ version: "0.3.0"
win32:
dependency: transitive
description:
@@ -955,5 +955,5 @@ packages:
source: hosted
version: "6.3.0"
sdks:
- dart: ">=3.1.0 <4.0.0"
+ dart: ">=3.2.0-194.0.dev <4.0.0"
flutter: ">=3.13.0"
diff --git a/sample apps/getx/pubspec.lock b/sample apps/getx/pubspec.lock
index d775b7e51..f362cecd1 100644
--- a/sample apps/getx/pubspec.lock
+++ b/sample apps/getx/pubspec.lock
@@ -45,10 +45,10 @@ packages:
dependency: transitive
description:
name: collection
- sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
+ sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
url: "https://pub.dev"
source: hosted
- version: "1.17.2"
+ version: "1.18.0"
cupertino_icons:
dependency: "direct main"
description:
@@ -151,10 +151,10 @@ packages:
dependency: transitive
description:
name: meta
- sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
+ sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
url: "https://pub.dev"
source: hosted
- version: "1.9.1"
+ version: "1.10.0"
path:
dependency: transitive
description:
@@ -228,18 +228,18 @@ packages:
dependency: transitive
description:
name: stack_trace
- sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
+ sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
url: "https://pub.dev"
source: hosted
- version: "1.11.0"
+ version: "1.11.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
- sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
+ sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
url: "https://pub.dev"
source: hosted
- version: "2.1.1"
+ version: "2.1.2"
string_scanner:
dependency: transitive
description:
@@ -260,10 +260,10 @@ packages:
dependency: transitive
description:
name: test_api
- sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
+ sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
url: "https://pub.dev"
source: hosted
- version: "0.6.0"
+ version: "0.6.1"
typed_data:
dependency: transitive
description:
@@ -292,10 +292,10 @@ packages:
dependency: transitive
description:
name: web
- sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
+ sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
url: "https://pub.dev"
source: hosted
- version: "0.1.4-beta"
+ version: "0.3.0"
sdks:
- dart: ">=3.1.0-185.0.dev <4.0.0"
+ dart: ">=3.2.0-194.0.dev <4.0.0"
flutter: ">=2.8.0"
diff --git a/sample apps/hms-callkit-app/pubspec.lock b/sample apps/hms-callkit-app/pubspec.lock
index 181a17dfa..277674560 100644
--- a/sample apps/hms-callkit-app/pubspec.lock
+++ b/sample apps/hms-callkit-app/pubspec.lock
@@ -69,10 +69,10 @@ packages:
dependency: transitive
description:
name: collection
- sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
+ sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
url: "https://pub.dev"
source: hosted
- version: "1.17.2"
+ version: "1.18.0"
cross_file:
dependency: transitive
description:
@@ -276,10 +276,10 @@ packages:
dependency: transitive
description:
name: meta
- sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
+ sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
url: "https://pub.dev"
source: hosted
- version: "1.9.1"
+ version: "1.10.0"
mime:
dependency: transitive
description:
@@ -441,18 +441,18 @@ packages:
dependency: transitive
description:
name: stack_trace
- sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
+ sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
url: "https://pub.dev"
source: hosted
- version: "1.11.0"
+ version: "1.11.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
- sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
+ sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
url: "https://pub.dev"
source: hosted
- version: "2.1.1"
+ version: "2.1.2"
string_scanner:
dependency: transitive
description:
@@ -473,10 +473,10 @@ packages:
dependency: transitive
description:
name: test_api
- sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
+ sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
url: "https://pub.dev"
source: hosted
- version: "0.6.0"
+ version: "0.6.1"
typed_data:
dependency: transitive
description:
@@ -537,10 +537,10 @@ packages:
dependency: transitive
description:
name: web
- sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
+ sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
url: "https://pub.dev"
source: hosted
- version: "0.1.4-beta"
+ version: "0.3.0"
win32:
dependency: transitive
description:
@@ -558,5 +558,5 @@ packages:
source: hosted
version: "0.2.0+3"
sdks:
- dart: ">=3.1.0-185.0.dev <4.0.0"
+ dart: ">=3.2.0-194.0.dev <4.0.0"
flutter: ">=3.3.0"
diff --git a/sample apps/mobx/pubspec.lock b/sample apps/mobx/pubspec.lock
index 2fa543676..f6a657bbc 100644
--- a/sample apps/mobx/pubspec.lock
+++ b/sample apps/mobx/pubspec.lock
@@ -141,10 +141,10 @@ packages:
dependency: transitive
description:
name: collection
- sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
+ sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
url: "https://pub.dev"
source: hosted
- version: "1.17.2"
+ version: "1.18.0"
convert:
dependency: transitive
description:
@@ -359,10 +359,10 @@ packages:
dependency: transitive
description:
name: meta
- sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
+ sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
url: "https://pub.dev"
source: hosted
- version: "1.9.1"
+ version: "1.10.0"
mime:
dependency: transitive
description:
@@ -516,18 +516,18 @@ packages:
dependency: transitive
description:
name: stack_trace
- sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
+ sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
url: "https://pub.dev"
source: hosted
- version: "1.11.0"
+ version: "1.11.1"
stream_channel:
dependency: transitive
description:
name: stream_channel
- sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
+ sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
url: "https://pub.dev"
source: hosted
- version: "2.1.1"
+ version: "2.1.2"
stream_transform:
dependency: transitive
description:
@@ -556,10 +556,10 @@ packages:
dependency: transitive
description:
name: test_api
- sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
+ sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
url: "https://pub.dev"
source: hosted
- version: "0.6.0"
+ version: "0.6.1"
timing:
dependency: transitive
description:
@@ -604,10 +604,10 @@ packages:
dependency: transitive
description:
name: web
- sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
+ sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
url: "https://pub.dev"
source: hosted
- version: "0.1.4-beta"
+ version: "0.3.0"
web_socket_channel:
dependency: transitive
description:
@@ -625,5 +625,5 @@ packages:
source: hosted
version: "3.1.1"
sdks:
- dart: ">=3.1.0-185.0.dev <4.0.0"
+ dart: ">=3.2.0-194.0.dev <4.0.0"
flutter: ">=2.8.0"
diff --git a/sample apps/riverpod/pubspec.lock b/sample apps/riverpod/pubspec.lock
index ecdac52f5..7b8d8be33 100644
--- a/sample apps/riverpod/pubspec.lock
+++ b/sample apps/riverpod/pubspec.lock
@@ -37,10 +37,10 @@ packages:
dependency: transitive
description:
name: collection
- sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
+ sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
url: "https://pub.dev"
source: hosted
- version: "1.17.2"
+ version: "1.18.0"
cupertino_icons:
dependency: "direct main"
description:
@@ -135,10 +135,10 @@ packages:
dependency: transitive
description:
name: meta
- sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
+ sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e
url: "https://pub.dev"
source: hosted
- version: "1.9.1"
+ version: "1.10.0"
path:
dependency: transitive
description:
@@ -220,10 +220,10 @@ packages:
dependency: transitive
description:
name: stack_trace
- sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
+ sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
url: "https://pub.dev"
source: hosted
- version: "1.11.0"
+ version: "1.11.1"
state_notifier:
dependency: transitive
description:
@@ -236,10 +236,10 @@ packages:
dependency: transitive
description:
name: stream_channel
- sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
+ sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
url: "https://pub.dev"
source: hosted
- version: "2.1.1"
+ version: "2.1.2"
string_scanner:
dependency: transitive
description:
@@ -260,10 +260,10 @@ packages:
dependency: transitive
description:
name: test_api
- sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
+ sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
url: "https://pub.dev"
source: hosted
- version: "0.6.0"
+ version: "0.6.1"
typed_data:
dependency: transitive
description:
@@ -284,10 +284,10 @@ packages:
dependency: transitive
description:
name: web
- sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
+ sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152
url: "https://pub.dev"
source: hosted
- version: "0.1.4-beta"
+ version: "0.3.0"
sdks:
- dart: ">=3.1.0-185.0.dev <4.0.0"
+ dart: ">=3.2.0-194.0.dev <4.0.0"
flutter: ">=3.0.0"