From 566937f630f84fb77bcff1f4584551eee511cd26 Mon Sep 17 00:00:00 2001 From: Hiroshi Horie <548776+hiroshihorie@users.noreply.github.com> Date: Sun, 15 May 2022 20:56:20 +0900 Subject: [PATCH] compatibility with flutter 3.0 --- example/ios/Runner/Info.plist | 2 ++ example/lib/pages/room.dart | 5 +++-- example/macos/Podfile.lock | 2 +- lib/livekit_client.dart | 1 + lib/src/extensions.dart | 6 ++++++ lib/src/widget/video_track_renderer.dart | 5 +++-- 6 files changed, 16 insertions(+), 5 deletions(-) diff --git a/example/ios/Runner/Info.plist b/example/ios/Runner/Info.plist index 718ab51..3329c40 100644 --- a/example/ios/Runner/Info.plist +++ b/example/ios/Runner/Info.plist @@ -49,5 +49,7 @@ UIViewControllerBasedStatusBarAppearance + CADisableMinimumFrameDurationOnPhone + diff --git a/example/lib/pages/room.dart b/example/lib/pages/room.dart index 171bac9..4bd2d10 100644 --- a/example/lib/pages/room.dart +++ b/example/lib/pages/room.dart @@ -32,7 +32,8 @@ class _RoomPageState extends State { widget.room.addListener(_onRoomDidUpdate); _setUpListeners(); _sortParticipants(); - WidgetsBinding.instance?.addPostFrameCallback((_) => _askPublish()); + WidgetsBindingCompatible.instance + ?.addPostFrameCallback((_) => _askPublish()); } @override @@ -48,7 +49,7 @@ class _RoomPageState extends State { void _setUpListeners() => _listener ..on((_) async { - WidgetsBinding.instance + WidgetsBindingCompatible.instance ?.addPostFrameCallback((timeStamp) => Navigator.pop(context)); }) ..on((event) { diff --git a/example/macos/Podfile.lock b/example/macos/Podfile.lock index 2ee3941..4078742 100644 --- a/example/macos/Podfile.lock +++ b/example/macos/Podfile.lock @@ -42,7 +42,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: device_info_plus_macos: 1ad388a1ef433505c4038e7dd9605aadd1e2e9c7 - flutter_webrtc: cbfa010d869391079d6713d9e0f1cda7dde7a407 + flutter_webrtc: 949e056193e40c1f565f65b4cb680ac001120a72 FlutterMacOS: 57701585bf7de1b3fc2bb61f6378d73bbdea8424 livekit_client: 9201d814b9d5c7c6c0b0edabb341ba1a5253981b path_provider_macos: 160cab0d5461f0c0e02995469a98f24bdb9a3f1f diff --git a/lib/livekit_client.dart b/lib/livekit_client.dart index acbfd84..81fcf62 100644 --- a/lib/livekit_client.dart +++ b/lib/livekit_client.dart @@ -29,3 +29,4 @@ export 'src/types/video_dimensions.dart'; export 'src/types/video_encoding.dart'; export 'src/types/video_parameters.dart'; export 'src/widget/video_track_renderer.dart'; +export 'src/extensions.dart' show WidgetsBindingCompatible; diff --git a/lib/src/extensions.dart b/lib/src/extensions.dart index 69c30df..c0de8da 100644 --- a/lib/src/extensions.dart +++ b/lib/src/extensions.dart @@ -1,5 +1,6 @@ import 'dart:convert'; +import 'package:flutter/material.dart'; import 'package:flutter_webrtc/flutter_webrtc.dart' as rtc; import 'events.dart'; @@ -160,3 +161,8 @@ extension ParticipantTrackPermissionExt on ParticipantTrackPermission { trackSids: allowedTrackSids, ); } + +extension WidgetsBindingCompatible on WidgetsBinding { + // always return optional type for compatibility with flutter v2 and v3 + static WidgetsBinding? get instance => WidgetsBinding.instance; +} diff --git a/lib/src/widget/video_track_renderer.dart b/lib/src/widget/video_track_renderer.dart index 7992f69..51b579c 100644 --- a/lib/src/widget/video_track_renderer.dart +++ b/lib/src/widget/video_track_renderer.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; - import 'package:flutter_webrtc/flutter_webrtc.dart' as rtc; import '../events.dart'; +import '../extensions.dart'; import '../internal/events.dart'; import '../managers/event.dart'; import '../track/local/local.dart'; @@ -83,7 +83,8 @@ class _VideoTrackRendererState extends State { key: _internalKey, builder: (ctx) { // let it render before notifying build - WidgetsBinding.instance?.addPostFrameCallback((timeStamp) { + WidgetsBindingCompatible.instance + ?.addPostFrameCallback((timeStamp) { widget.track.onVideoViewBuild?.call(_internalKey); }); return rtc.RTCVideoView(