diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index b028ee8..6041471 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -37,7 +37,7 @@ jobs: - name: Install project dependencies run: flutter pub get - name: Dart Format Check - run: dart format lib/ test/ --set-exit-if-changed + run: dart format -l 120 lib/ test/ --set-exit-if-changed - name: Import Sorter Check run: dart run import_sorter:main --no-comments --exit-if-changed - name: Dart Analyze Check diff --git a/lib/src/context/chat_context.dart b/lib/src/context/chat_context.dart index f6ad1d6..1c2e8c3 100644 --- a/lib/src/context/chat_context.dart +++ b/lib/src/context/chat_context.dart @@ -50,8 +50,7 @@ class ChatMessage { factory ChatMessage.fromJsonString(String source, Participant? participant) => ChatMessage.fromMap(const JsonDecoder().convert(source), participant); - factory ChatMessage.fromMap( - Map map, Participant? participant) { + factory ChatMessage.fromMap(Map map, Participant? participant) { return ChatMessage( message: map['message'], timestamp: map['timestamp'], @@ -68,8 +67,7 @@ mixin ChatContextMixin on ChangeNotifier { LocalParticipant? _localParticipant; EventsListener? _listener; - void chatContextSetup( - EventsListener? listener, LocalParticipant? localParticipant) { + void chatContextSetup(EventsListener? listener, LocalParticipant? localParticipant) { _listener = listener; _localParticipant = localParticipant; if (listener != null) { @@ -77,8 +75,7 @@ mixin ChatContextMixin on ChangeNotifier { Debug.event('ChatContext: DataReceivedEvent'); if (event.topic == 'lk-chat-topic') { - addMessageFromMap( - const Utf8Decoder().convert(event.data), event.participant); + addMessageFromMap(const Utf8Decoder().convert(event.data), event.participant); } }); } else { @@ -96,8 +93,7 @@ mixin ChatContextMixin on ChangeNotifier { participant: _localParticipant, ); addMessage(msg); - _localParticipant?.publishData(const Utf8Encoder().convert(msg.toJson()), - topic: 'lk-chat-topic'); + _localParticipant?.publishData(const Utf8Encoder().convert(msg.toJson()), topic: 'lk-chat-topic'); } void addMessage(ChatMessage message) { diff --git a/lib/src/context/media_device_context.dart b/lib/src/context/media_device_context.dart index e8800ba..398d007 100644 --- a/lib/src/context/media_device_context.dart +++ b/lib/src/context/media_device_context.dart @@ -66,8 +66,7 @@ class MediaDeviceContext extends ChangeNotifier { Future loadDevices() async { _loadDevices(await Hardware.instance.enumerateDevices()); - _deviceChangeSub = - Hardware.instance.onDeviceChange.stream.listen(_loadDevices); + _deviceChangeSub = Hardware.instance.onDeviceChange.stream.listen(_loadDevices); } _loadDevices(List devices) { @@ -76,14 +75,11 @@ class MediaDeviceContext extends ChangeNotifier { _videoInputs = devices.where((d) => d.kind == 'videoinput').toList(); selectedAudioInputDeviceId ??= - Hardware.instance.selectedAudioInput?.deviceId ?? - _audioInputs?.firstOrNull?.deviceId; + Hardware.instance.selectedAudioInput?.deviceId ?? _audioInputs?.firstOrNull?.deviceId; selectedVideoInputDeviceId ??= - Hardware.instance.selectedVideoInput?.deviceId ?? - _videoInputs?.firstOrNull?.deviceId; + Hardware.instance.selectedVideoInput?.deviceId ?? _videoInputs?.firstOrNull?.deviceId; selectedAudioOutputDeviceId ??= - Hardware.instance.selectedAudioOutput?.deviceId ?? - _audioOutputs?.firstOrNull?.deviceId; + Hardware.instance.selectedAudioOutput?.deviceId ?? _audioOutputs?.firstOrNull?.deviceId; notifyListeners(); } @@ -189,8 +185,7 @@ class MediaDeviceContext extends ChangeNotifier { notifyListeners(); } - bool get isScreenShareEnabled => - _room?.localParticipant?.isScreenShareEnabled() ?? false; + bool get isScreenShareEnabled => _room?.localParticipant?.isScreenShareEnabled() ?? false; Future enableScreenShare(context) async { if (lkPlatformIsDesktop()) { @@ -232,20 +227,16 @@ class MediaDeviceContext extends ChangeNotifier { notificationTitle: 'Screen Sharing', notificationText: 'LiveKit Example is sharing the screen.', notificationImportance: AndroidNotificationImportance.normal, - notificationIcon: AndroidResource( - name: 'livekit_ic_launcher', defType: 'mipmap'), + notificationIcon: AndroidResource(name: 'livekit_ic_launcher', defType: 'mipmap'), ); - hasPermissions = await FlutterBackground.initialize( - androidConfig: androidConfig); + hasPermissions = await FlutterBackground.initialize(androidConfig: androidConfig); } - if (hasPermissions && - !FlutterBackground.isBackgroundExecutionEnabled) { + if (hasPermissions && !FlutterBackground.isBackgroundExecutionEnabled) { await FlutterBackground.enableBackgroundExecution(); } } catch (e) { if (!isRetry) { - return await Future.delayed(const Duration(seconds: 1), - () => requestBackgroundPermission(true)); + return await Future.delayed(const Duration(seconds: 1), () => requestBackgroundPermission(true)); } Debug.log('could not publish video: $e'); } @@ -265,13 +256,11 @@ class MediaDeviceContext extends ChangeNotifier { } if (lkPlatformIsWebMobile()) { - await context - .showErrorDialog('Screen share is not supported on mobile web'); + await context.showErrorDialog('Screen share is not supported on mobile web'); return; } - await _room?.localParticipant - ?.setScreenShareEnabled(true, captureScreenAudio: true); + await _room?.localParticipant?.setScreenShareEnabled(true, captureScreenAudio: true); notifyListeners(); } @@ -284,23 +273,19 @@ class MediaDeviceContext extends ChangeNotifier { bool? get isSpeakerOn => Hardware.instance.speakerOn; - void setSpeakerphoneOn(bool speakerOn, - {bool forceSpeakerOutput = false}) async { - await Hardware.instance - .setSpeakerphoneOn(speakerOn, forceSpeakerOutput: forceSpeakerOutput); + void setSpeakerphoneOn(bool speakerOn, {bool forceSpeakerOutput = false}) async { + await Hardware.instance.setSpeakerphoneOn(speakerOn, forceSpeakerOutput: forceSpeakerOutput); notifyListeners(); } CameraPosition? get currentPosition { - final track = - _room?.localParticipant?.videoTrackPublications.firstOrNull?.track; + final track = _room?.localParticipant?.videoTrackPublications.firstOrNull?.track; if (track == null) return null; return (track.currentOptions as CameraCaptureOptions).cameraPosition; } void switchCamera(CameraPosition newPosition) async { - final track = - _room?.localParticipant?.videoTrackPublications.firstOrNull?.track; + final track = _room?.localParticipant?.videoTrackPublications.firstOrNull?.track; if (track == null) return; try { diff --git a/lib/src/context/participant_context.dart b/lib/src/context/participant_context.dart index 85581cb..d209892 100644 --- a/lib/src/context/participant_context.dart +++ b/lib/src/context/participant_context.dart @@ -28,12 +28,10 @@ class ParticipantContext extends ChangeNotifier { return Provider.of(context); } - ParticipantContext(this._participant) - : _listener = _participant.createListener() { + ParticipantContext(this._participant) : _listener = _participant.createListener() { _listener ..on((event) { - if (event.participant.identity == identity && - isSpeaking != event.speaking) { + if (event.participant.identity == identity && isSpeaking != event.speaking) { Debug.event( 'ParticipantContext: SpeakingChangedEvent identity = ${_participant.identity}, speaking = ${event.speaking}'); _isSpeaking = event.speaking; @@ -41,14 +39,12 @@ class ParticipantContext extends ChangeNotifier { } }) ..on((event) { - Debug.event( - 'ParticipantContext: ParticipantNameUpdatedEvent name = ${event.name}'); + Debug.event('ParticipantContext: ParticipantNameUpdatedEvent name = ${event.name}'); notifyListeners(); }) ..on((event) { if (event.metadata != _metadata) { - Debug.event( - 'ParticipantContext: ParticipantMetadataUpdatedEvent metadata = ${event.metadata}'); + Debug.event('ParticipantContext: ParticipantMetadataUpdatedEvent metadata = ${event.metadata}'); _metadata = event.metadata; notifyListeners(); @@ -67,10 +63,8 @@ class ParticipantContext extends ChangeNotifier { if (_permissions?.canPublish != event.permissions.canPublish || _permissions?.canSubscribe != event.permissions.canSubscribe || _permissions?.canPublishData != event.permissions.canPublishData || - _permissions?.canUpdateMetadata != - event.permissions.canUpdateMetadata || - _permissions?.canPublishSources != - event.permissions.canPublishSources) { + _permissions?.canUpdateMetadata != event.permissions.canUpdateMetadata || + _permissions?.canPublishSources != event.permissions.canPublishSources) { Debug.event( 'ParticipantContext: ParticipantPermissionsUpdatedEvent permissions canPublish = ${event.permissions.canPublish}, canSubscribe = ${event.permissions.canSubscribe}, canPublishData = ${event.permissions.canPublishData}, canUpdateMetadata = ${event.permissions.canUpdateMetadata}, canPublishSources = ${event.permissions.canPublishSources}'); _permissions = event.permissions; @@ -86,23 +80,19 @@ class ParticipantContext extends ChangeNotifier { notifyListeners(); }) ..on((event) { - Debug.event( - 'ParticipantContext: ParticipantAttributesChanged attributes = ${event.attributes}'); + Debug.event('ParticipantContext: ParticipantAttributesChanged attributes = ${event.attributes}'); _attributes = event.attributes; notifyListeners(); }) ..on((event) { - if (event.participant.identity == identity && - event.publication.kind == TrackType.AUDIO) { + if (event.participant.identity == identity && event.publication.kind == TrackType.AUDIO) { Debug.event('TrackContext: TrackMutedEvent for ${_participant.sid}'); notifyListeners(); } }) ..on((event) { - if (event.participant.identity == identity && - event.publication.kind == TrackType.AUDIO) { - Debug.event( - 'TrackContext: TrackUnmutedEvent for ${_participant.sid}'); + if (event.participant.identity == identity && event.publication.kind == TrackType.AUDIO) { + Debug.event('TrackContext: TrackUnmutedEvent for ${_participant.sid}'); notifyListeners(); } }); @@ -124,14 +114,12 @@ class ParticipantContext extends ChangeNotifier { bool get isLocal => _participant is LocalParticipant; - List get tracks => - _participant.trackPublications.values.toList(); + List get tracks => _participant.trackPublications.values.toList(); final Participant _participant; final EventsListener _listener; - bool get isEncrypted => - _participant.trackPublications.isNotEmpty && _participant.isEncrypted; + bool get isEncrypted => _participant.trackPublications.isNotEmpty && _participant.isEncrypted; String get identity => _participant.identity; @@ -144,8 +132,7 @@ class ParticipantContext extends ChangeNotifier { String? _metadata; String? get metadata => _metadata; - String get name => - _participant.name == '' ? _participant.identity : _participant.name; + String get name => _participant.name == '' ? _participant.identity : _participant.name; bool get isMuted => _participant.isMuted; diff --git a/lib/src/context/room_context.dart b/lib/src/context/room_context.dart index e98ece3..63b7a25 100644 --- a/lib/src/context/room_context.dart +++ b/lib/src/context/room_context.dart @@ -23,8 +23,7 @@ import 'package:livekit_components/src/context/transcription_context.dart'; import '../debug/logger.dart'; import 'chat_context.dart'; -class RoomContext extends ChangeNotifier - with ChatContextMixin, TranscriptionContextMixin { +class RoomContext extends ChangeNotifier with ChatContextMixin, TranscriptionContextMixin { /// Get the [RoomContext] from the [context]. /// this method must be called under the [LivekitRoom] widget. static RoomContext? of(BuildContext context) { @@ -96,27 +95,22 @@ class RoomContext extends ChangeNotifier notifyListeners(); }) ..on((event) { - Debug.event( - 'RoomContext: RoomMetadataChangedEvent $roomName metadata = ${event.metadata}'); + Debug.event('RoomContext: RoomMetadataChangedEvent $roomName metadata = ${event.metadata}'); _roomMetadata = event.metadata; notifyListeners(); }) ..on((event) { - Debug.event( - 'RoomContext: RoomRecordingStatusChanged activeRecording = ${event.activeRecording}'); + Debug.event('RoomContext: RoomRecordingStatusChanged activeRecording = ${event.activeRecording}'); _activeRecording = event.activeRecording; notifyListeners(); }) ..on((event) { - Debug.event( - 'RoomContext: ParticipantConnectedEvent $roomName participant = ${event.participant.identity}'); + Debug.event('RoomContext: ParticipantConnectedEvent $roomName participant = ${event.participant.identity}'); _buildParticipants(); }) ..on((event) { - Debug.event( - 'RoomContext: ParticipantDisconnectedEvent $roomName participant = ${event.participant.identity}'); - _participants - .removeWhere((p) => p.identity == event.participant.identity); + Debug.event('RoomContext: ParticipantDisconnectedEvent $roomName participant = ${event.participant.identity}'); + _participants.removeWhere((p) => p.identity == event.participant.identity); notifyListeners(); }) ..on((event) { @@ -130,13 +124,11 @@ class RoomContext extends ChangeNotifier _buildParticipants(); }) ..on((event) { - Debug.event( - 'RoomContext: LocalTrackPublishedEvent track = ${event.publication.sid}'); + Debug.event('RoomContext: LocalTrackPublishedEvent track = ${event.publication.sid}'); _buildParticipants(); }) ..on((event) { - Debug.event( - 'RoomContext: LocalTrackUnpublishedEvent track = ${event.publication.sid}'); + Debug.event('RoomContext: LocalTrackUnpublishedEvent track = ${event.publication.sid}'); _buildParticipants(); }) ..on((event) { @@ -320,8 +312,7 @@ class RoomContext extends ChangeNotifier bool get microphoneOpened => isMicrophoneEnabled ?? _localAudioTrack != null; - bool? get isMicrophoneEnabled => - _room.localParticipant?.isMicrophoneEnabled(); + bool? get isMicrophoneEnabled => _room.localParticipant?.isMicrophoneEnabled(); Future resetLocalTracks() async { _localAudioTrack = null; diff --git a/lib/src/context/track_reference_context.dart b/lib/src/context/track_reference_context.dart index 87e9af8..561b97e 100644 --- a/lib/src/context/track_reference_context.dart +++ b/lib/src/context/track_reference_context.dart @@ -39,29 +39,25 @@ class TrackReferenceContext extends ChangeNotifier { }) ..on((event) { if (event.publication.sid == pub?.sid) { - Debug.event( - 'TrackContext: TrackUnmutedEvent for ${_participant.sid}'); + Debug.event('TrackContext: TrackUnmutedEvent for ${_participant.sid}'); notifyListeners(); } }) ..on((event) { if (event.publication.sid == pub?.sid) { - Debug.event( - 'TrackContext: LocalTrackPublishedEvent for ${_participant.sid}'); + Debug.event('TrackContext: LocalTrackPublishedEvent for ${_participant.sid}'); notifyListeners(); } }) ..on((event) { if (event.publication.sid == pub?.sid) { - Debug.event( - 'TrackContext: TrackSubscribedEvent for ${_participant.sid}'); + Debug.event('TrackContext: TrackSubscribedEvent for ${_participant.sid}'); notifyListeners(); } }) ..on((event) { if (event.publication.sid == pub?.sid) { - Debug.event( - 'TrackContext: TrackStreamStateUpdatedEvent for ${_participant.sid}'); + Debug.event('TrackContext: TrackStreamStateUpdatedEvent for ${_participant.sid}'); notifyListeners(); } }); @@ -140,17 +136,14 @@ class TrackReferenceContext extends ChangeNotifier { stats['layer-$key'] = '${value.frameWidth ?? 0}x${value.frameHeight ?? 0} ${value.framesPerSecond?.toDouble() ?? 0} fps, ${event.bitrateForLayers[key] ?? 0} kbps'; }); - var firstStats = - event.stats['f'] ?? event.stats['h'] ?? event.stats['q']; + var firstStats = event.stats['f'] ?? event.stats['h'] ?? event.stats['q']; if (firstStats != null) { stats['encoder'] = firstStats.encoderImplementation ?? ''; if (firstStats.mimeType != null) { - stats['codec'] = - '${firstStats.mimeType!.split('/')[1]}/${firstStats.clockRate}'; + stats['codec'] = '${firstStats.mimeType!.split('/')[1]}/${firstStats.clockRate}'; } stats['payload'] = '${firstStats.payloadType}'; - stats['qualityLimitationReason'] = - firstStats.qualityLimitationReason ?? ''; + stats['qualityLimitationReason'] = firstStats.qualityLimitationReason ?? ''; } _stats = stats; @@ -161,8 +154,7 @@ class TrackReferenceContext extends ChangeNotifier { Map stats = {}; stats['rx'] = '${event.currentBitrate.toInt()} kpbs'; if (event.stats.mimeType != null) { - stats['codec'] = - '${event.stats.mimeType!.split('/')[1]}/${event.stats.clockRate}'; + stats['codec'] = '${event.stats.mimeType!.split('/')[1]}/${event.stats.clockRate}'; } stats['payload'] = '${event.stats.payloadType}'; stats['size/fps'] = @@ -183,8 +175,7 @@ class TrackReferenceContext extends ChangeNotifier { Map stats = {}; stats['tx'] = '${event.currentBitrate.toInt()} kpbs'; if (event.stats.mimeType != null) { - stats['codec'] = - '${event.stats.mimeType!.split('/')[1]}/${event.stats.clockRate}/${event.stats.channels}'; + stats['codec'] = '${event.stats.mimeType!.split('/')[1]}/${event.stats.clockRate}/${event.stats.channels}'; } stats['payload'] = '${event.stats.payloadType}'; _stats = stats; @@ -196,8 +187,7 @@ class TrackReferenceContext extends ChangeNotifier { stats['rx'] = '${event.currentBitrate.toInt()} kpbs'; if (event.stats.mimeType != null) { - stats['codec'] = - '${event.stats.mimeType!.split('/')[1]}/${event.stats.clockRate}/${event.stats.channels}'; + stats['codec'] = '${event.stats.mimeType!.split('/')[1]}/${event.stats.clockRate}/${event.stats.channels}'; } stats['payload'] = '${event.stats.payloadType}'; stats['jitter'] = '${event.stats.jitter} s'; diff --git a/lib/src/types/track_identifier.dart b/lib/src/types/track_identifier.dart index 3ff4103..c2ad59c 100644 --- a/lib/src/types/track_identifier.dart +++ b/lib/src/types/track_identifier.dart @@ -23,12 +23,9 @@ class TrackIdentifier { TrackSource get source => track?.source ?? TrackSource.unknown; - bool get isAudio => - source == TrackSource.microphone || - source == TrackSource.screenShareAudio; + bool get isAudio => source == TrackSource.microphone || source == TrackSource.screenShareAudio; - bool get isVideo => - source == TrackSource.camera || source == TrackSource.camera; + bool get isVideo => source == TrackSource.camera || source == TrackSource.camera; bool get isLocal => participant is LocalParticipant; diff --git a/lib/src/ui/builder/camera_preview.dart b/lib/src/ui/builder/camera_preview.dart index 99efd1d..b31e38c 100644 --- a/lib/src/ui/builder/camera_preview.dart +++ b/lib/src/ui/builder/camera_preview.dart @@ -25,14 +25,12 @@ class CameraPreview extends StatelessWidget { required this.builder, }); - final Widget Function(BuildContext context, LocalVideoTrack? videoTrack) - builder; + final Widget Function(BuildContext context, LocalVideoTrack? videoTrack) builder; @override Widget build(BuildContext context) { return Consumer( - builder: (context, roomCtx, child) => - Selector( + builder: (context, roomCtx, child) => Selector( selector: (context, track) => roomCtx.localVideoTrack, builder: (context, track, child) => builder(context, track), ), diff --git a/lib/src/ui/builder/participant/participant_attributes.dart b/lib/src/ui/builder/participant/participant_attributes.dart index 05a6106..4ff94e8 100644 --- a/lib/src/ui/builder/participant/participant_attributes.dart +++ b/lib/src/ui/builder/participant/participant_attributes.dart @@ -25,15 +25,12 @@ class ParticipantAttributes extends StatelessWidget { required this.builder, }); - final Widget Function(BuildContext context, Map? attributes) - builder; + final Widget Function(BuildContext context, Map? attributes) builder; @override Widget build(BuildContext context) { - return Consumer( - builder: (context, participantContext, child) { - Debug.log( - '====> ParticipantAttributes for ${participantContext.attributes}'); + return Consumer(builder: (context, participantContext, child) { + Debug.log('====> ParticipantAttributes for ${participantContext.attributes}'); return Selector?>( selector: (context, attributes) => participantContext.attributes, builder: (context, attributes, child) { diff --git a/lib/src/ui/builder/participant/participant_kind.dart b/lib/src/ui/builder/participant/participant_kind.dart index f6a4b86..0d7d709 100644 --- a/lib/src/ui/builder/participant/participant_kind.dart +++ b/lib/src/ui/builder/participant/participant_kind.dart @@ -30,8 +30,7 @@ class ParticipantKind extends StatelessWidget { @override Widget build(BuildContext context) { - return Consumer( - builder: (context, participantContext, child) { + return Consumer(builder: (context, participantContext, child) { Debug.log('====> ParticipantKind for ${participantContext.kind}'); return Selector( selector: (context, name) => participantContext.kind, diff --git a/lib/src/ui/builder/participant/participant_loop.dart b/lib/src/ui/builder/participant/participant_loop.dart index ac9cc7b..88b5f40 100644 --- a/lib/src/ui/builder/participant/participant_loop.dart +++ b/lib/src/ui/builder/participant/participant_loop.dart @@ -25,8 +25,7 @@ import '../../layout/layouts.dart'; import '../../layout/sorting.dart'; import 'participant_track.dart'; -typedef PaticipantTrackBuilder = Widget Function( - BuildContext context, TrackIdentifier identifier); +typedef PaticipantTrackBuilder = Widget Function(BuildContext context, TrackIdentifier identifier); class ParticipantLoop extends StatelessWidget { const ParticipantLoop({ @@ -64,8 +63,7 @@ class ParticipantLoop extends StatelessWidget { } trackMap.add(MapEntry(TrackIdentifier(participant, track), track)); - Debug.log( - '=> ${track.source.toString()} track ${track.sid} for ${participant.identity}'); + Debug.log('=> ${track.source.toString()} track ${track.sid} for ${participant.identity}'); } if (!audio && !tracks.any((t) => t.kind == TrackType.VIDEO) || @@ -92,8 +90,7 @@ class ParticipantLoop extends StatelessWidget { builder: (context, participants, child) { List trackWidgets = []; - var trackMap = buildTracksMap( - showAudioTracks, showVideoTracks, participants); + var trackMap = buildTracksMap(showAudioTracks, showVideoTracks, participants); for (var item in trackMap) { var identifier = item.key; @@ -105,8 +102,7 @@ class ParticipantLoop extends StatelessWidget { ParticipantTrack( participant: identifier.participant, track: track, - builder: (context) => - participantTrackBuilder(context, identifier), + builder: (context) => participantTrackBuilder(context, identifier), ), ), ); @@ -116,8 +112,7 @@ class ParticipantLoop extends StatelessWidget { identifier, ParticipantTrack( participant: identifier.participant, - builder: (context) => - participantTrackBuilder(context, identifier), + builder: (context) => participantTrackBuilder(context, identifier), ), ), ); @@ -129,8 +124,7 @@ class ParticipantLoop extends StatelessWidget { return Selector>( selector: (context, pinnedTracks) => roomCtx.pinnedTracks, builder: (context, pinnedTracks, child) { - return layoutBuilder.build( - context, trackWidgets, pinnedTracks); + return layoutBuilder.build(context, trackWidgets, pinnedTracks); }); }); }, diff --git a/lib/src/ui/builder/participant/participant_metadata.dart b/lib/src/ui/builder/participant/participant_metadata.dart index 71e6f41..9c52931 100644 --- a/lib/src/ui/builder/participant/participant_metadata.dart +++ b/lib/src/ui/builder/participant/participant_metadata.dart @@ -29,10 +29,8 @@ class ParticipantMetadata extends StatelessWidget { @override Widget build(BuildContext context) { - return Consumer( - builder: (context, participantContext, child) { - Debug.log( - '====> ParticipantMetadata for ${participantContext.metadata}'); + return Consumer(builder: (context, participantContext, child) { + Debug.log('====> ParticipantMetadata for ${participantContext.metadata}'); return Selector( selector: (context, metadata) => participantContext.metadata, builder: (context, metadata, child) { diff --git a/lib/src/ui/builder/participant/participant_muted_indicator.dart b/lib/src/ui/builder/participant/participant_muted_indicator.dart index e0ebc6a..a028937 100644 --- a/lib/src/ui/builder/participant/participant_muted_indicator.dart +++ b/lib/src/ui/builder/participant/participant_muted_indicator.dart @@ -29,10 +29,8 @@ class ParticipantMutedIndicator extends StatelessWidget { @override Widget build(BuildContext context) { - return Consumer( - builder: (context, participantContext, child) { - Debug.log( - '====> ParticipantMutedIndicator for ${participantContext.name}'); + return Consumer(builder: (context, participantContext, child) { + Debug.log('====> ParticipantMutedIndicator for ${participantContext.name}'); return Selector( selector: (context, isMuted) => participantContext.isMuted, builder: (context, isMuted, child) => builder(context, isMuted), diff --git a/lib/src/ui/builder/participant/participant_name.dart b/lib/src/ui/builder/participant/participant_name.dart index d898277..d37c7c5 100644 --- a/lib/src/ui/builder/participant/participant_name.dart +++ b/lib/src/ui/builder/participant/participant_name.dart @@ -30,8 +30,7 @@ class ParticipantName extends StatelessWidget { @override Widget build(BuildContext context) { - return Consumer( - builder: (context, participantContext, child) { + return Consumer(builder: (context, participantContext, child) { Debug.log('====> ParticipantName for ${participantContext.name}'); var trackCtx = Provider.of(context); bool isScreenShare = trackCtx?.isScreenShare ?? false; diff --git a/lib/src/ui/builder/participant/participant_permissions.dart b/lib/src/ui/builder/participant/participant_permissions.dart index b3de588..4e1048f 100644 --- a/lib/src/ui/builder/participant/participant_permissions.dart +++ b/lib/src/ui/builder/participant/participant_permissions.dart @@ -26,15 +26,12 @@ class ParticipantPermissions extends StatelessWidget { required this.builder, }); - final Widget Function(BuildContext context, lk.ParticipantPermissions?) - builder; + final Widget Function(BuildContext context, lk.ParticipantPermissions?) builder; @override Widget build(BuildContext context) { - return Consumer( - builder: (context, participantContext, child) { - Debug.log( - '====> ParticipantPermissions for ${participantContext.permissions}'); + return Consumer(builder: (context, participantContext, child) { + Debug.log('====> ParticipantPermissions for ${participantContext.permissions}'); return Selector( selector: (context, permissions) => participantContext.permissions, builder: (context, permissions, child) { diff --git a/lib/src/ui/builder/participant/participant_selector.dart b/lib/src/ui/builder/participant/participant_selector.dart index 4cd59f4..781811b 100644 --- a/lib/src/ui/builder/participant/participant_selector.dart +++ b/lib/src/ui/builder/participant/participant_selector.dart @@ -11,8 +11,7 @@ import 'participant_track.dart'; class ParticipantSelector extends StatelessWidget { final bool Function(TrackIdentifier identifier) filter; - final Widget Function(BuildContext context, TrackIdentifier identifier) - builder; + final Widget Function(BuildContext context, TrackIdentifier identifier) builder; const ParticipantSelector({ required this.filter, required this.builder, @@ -36,8 +35,7 @@ class ParticipantSelector extends StatelessWidget { } trackMap.add(MapEntry(TrackIdentifier(participant, track), track)); - Debug.log( - '=> ${track.source.toString()} track ${track.sid} for ${participant.identity}'); + Debug.log('=> ${track.source.toString()} track ${track.sid} for ${participant.identity}'); } if (!audio && !tracks.any((t) => t.kind == TrackType.VIDEO) || @@ -61,8 +59,7 @@ class ParticipantSelector extends StatelessWidget { shouldRebuild: (previous, next) => previous.length != next.length, builder: (context, participants, child) { var trackMap = buildTracksMap(true, true, participants); - var identifier = - trackMap.firstWhereOrNull((entry) => filter(entry.key))?.key; + var identifier = trackMap.firstWhereOrNull((entry) => filter(entry.key))?.key; if (identifier == null) { return const SizedBox(); diff --git a/lib/src/ui/builder/participant/participant_transcription.dart b/lib/src/ui/builder/participant/participant_transcription.dart index 523d23b..3b1a682 100644 --- a/lib/src/ui/builder/participant/participant_transcription.dart +++ b/lib/src/ui/builder/participant/participant_transcription.dart @@ -26,15 +26,12 @@ class ParticipantTranscription extends StatelessWidget { required this.builder, }); - final Widget Function( - BuildContext context, List segments) builder; + final Widget Function(BuildContext context, List segments) builder; @override Widget build(BuildContext context) { - return Consumer( - builder: (context, participantContext, child) { - Debug.log( - '====> ParticipantTranscription for ${participantContext.segments}'); + return Consumer(builder: (context, participantContext, child) { + Debug.log('====> ParticipantTranscription for ${participantContext.segments}'); return Selector>( selector: (context, segments) => participantContext.segments, builder: (context, segments, child) { diff --git a/lib/src/ui/builder/room/camera_switch.dart b/lib/src/ui/builder/room/camera_switch.dart index 1eac20b..b92acbd 100644 --- a/lib/src/ui/builder/room/camera_switch.dart +++ b/lib/src/ui/builder/room/camera_switch.dart @@ -28,8 +28,8 @@ class CameraSwitch extends StatelessWidget { required this.builder, }); - final Function(BuildContext context, RoomContext roomCtx, - MediaDeviceContext deviceCtx, CameraPosition? position) builder; + final Function(BuildContext context, RoomContext roomCtx, MediaDeviceContext deviceCtx, CameraPosition? position) + builder; @override Widget build(BuildContext context) { diff --git a/lib/src/ui/builder/room/chat.dart b/lib/src/ui/builder/room/chat.dart index d924cc9..82b2704 100644 --- a/lib/src/ui/builder/room/chat.dart +++ b/lib/src/ui/builder/room/chat.dart @@ -25,8 +25,7 @@ class ChatBuilder extends StatelessWidget { required this.builder, }); - final Function(BuildContext context, bool enabled, ChatContextMixin chatCtx, - List messages) builder; + final Function(BuildContext context, bool enabled, ChatContextMixin chatCtx, List messages) builder; @override Widget build(BuildContext context) { diff --git a/lib/src/ui/builder/room/chat_toggle.dart b/lib/src/ui/builder/room/chat_toggle.dart index aed7955..86d936a 100644 --- a/lib/src/ui/builder/room/chat_toggle.dart +++ b/lib/src/ui/builder/room/chat_toggle.dart @@ -21,16 +21,14 @@ import '../../../context/room_context.dart'; class ChatToggle extends StatelessWidget { const ChatToggle({super.key, required this.builder}); - final Widget Function( - BuildContext context, RoomContext roomCtx, bool isChatEnabled) builder; + final Widget Function(BuildContext context, RoomContext roomCtx, bool isChatEnabled) builder; @override Widget build(BuildContext context) { return Consumer(builder: (context, roomCtx, child) { return Selector( selector: (context, isChatEnabled) => roomCtx.isChatEnabled, - builder: (context, isChatEnabled, child) => - builder(context, roomCtx, isChatEnabled), + builder: (context, isChatEnabled, child) => builder(context, roomCtx, isChatEnabled), ); }); } diff --git a/lib/src/ui/builder/room/disconnect_button.dart b/lib/src/ui/builder/room/disconnect_button.dart index bde1836..978235c 100644 --- a/lib/src/ui/builder/room/disconnect_button.dart +++ b/lib/src/ui/builder/room/disconnect_button.dart @@ -21,8 +21,7 @@ import '../../../context/room_context.dart'; class DisconnectButton extends StatelessWidget { const DisconnectButton({super.key, required this.builder}); - final Function(BuildContext context, RoomContext roomCtx, bool connected) - builder; + final Function(BuildContext context, RoomContext roomCtx, bool connected) builder; @override Widget build(BuildContext context) { @@ -30,8 +29,7 @@ class DisconnectButton extends StatelessWidget { builder: (context, roomCtx, child) { return Selector( selector: (context, connected) => roomCtx.connected, - builder: (context, connected, child) => - builder(context, roomCtx, connected), + builder: (context, connected, child) => builder(context, roomCtx, connected), ); }, ); diff --git a/lib/src/ui/builder/room/join_button.dart b/lib/src/ui/builder/room/join_button.dart index 5db5c5a..00e706e 100644 --- a/lib/src/ui/builder/room/join_button.dart +++ b/lib/src/ui/builder/room/join_button.dart @@ -24,16 +24,14 @@ class JoinButton extends StatelessWidget { required this.builder, }); - final Function(BuildContext context, RoomContext roomCtx, bool connected) - builder; + final Function(BuildContext context, RoomContext roomCtx, bool connected) builder; @override Widget build(BuildContext context) { return Consumer(builder: (context, roomCtx, child) { return Selector( selector: (context, connected) => roomCtx.connected, - builder: (context, connected, child) => - builder(context, roomCtx, connected), + builder: (context, connected, child) => builder(context, roomCtx, connected), ); }); } diff --git a/lib/src/ui/builder/room/media_device.dart b/lib/src/ui/builder/room/media_device.dart index c660f4d..66eaf18 100644 --- a/lib/src/ui/builder/room/media_device.dart +++ b/lib/src/ui/builder/room/media_device.dart @@ -22,8 +22,7 @@ import '../../../context/room_context.dart'; class MediaDeviceContextBuilder extends StatelessWidget { const MediaDeviceContextBuilder({super.key, required this.builder}); - final Widget Function(BuildContext context, RoomContext roomContext, - MediaDeviceContext mediaDeviceContext) builder; + final Widget Function(BuildContext context, RoomContext roomContext, MediaDeviceContext mediaDeviceContext) builder; @override Widget build(BuildContext context) { @@ -31,8 +30,7 @@ class MediaDeviceContextBuilder extends StatelessWidget { builder: (context, roomCtx, child) => ChangeNotifierProvider( create: (_) => MediaDeviceContext(roomCtx: roomCtx), child: Consumer( - builder: (context, mediaDeviceCtx, child) => - builder(context, roomCtx, mediaDeviceCtx), + builder: (context, mediaDeviceCtx, child) => builder(context, roomCtx, mediaDeviceCtx), ), ), ); diff --git a/lib/src/ui/builder/room/media_device_select_button.dart b/lib/src/ui/builder/room/media_device_select_button.dart index 678c11c..45a7e87 100644 --- a/lib/src/ui/builder/room/media_device_select_button.dart +++ b/lib/src/ui/builder/room/media_device_select_button.dart @@ -35,8 +35,7 @@ class MediaDeviceSelectButton extends StatelessWidget { Widget build(BuildContext context) { return Consumer( builder: (context, roomCtx, child) => Consumer( - builder: (context, deviceCtx, child) => - builder(context, roomCtx, deviceCtx), + builder: (context, deviceCtx, child) => builder(context, roomCtx, deviceCtx), ), ); } diff --git a/lib/src/ui/builder/room/room.dart b/lib/src/ui/builder/room/room.dart index 10e0bda..38747ba 100644 --- a/lib/src/ui/builder/room/room.dart +++ b/lib/src/ui/builder/room/room.dart @@ -20,8 +20,7 @@ import '../../../context/room_context.dart'; import 'media_device.dart'; class LivekitRoom extends StatelessWidget { - const LivekitRoom( - {super.key, required this.roomContext, required this.builder}); + const LivekitRoom({super.key, required this.roomContext, required this.builder}); final RoomContext roomContext; final Widget Function(BuildContext context, RoomContext roomCtx) builder; @@ -32,8 +31,7 @@ class LivekitRoom extends StatelessWidget { create: (_) => roomContext, child: Consumer( builder: (context, roomCtx, child) => MediaDeviceContextBuilder( - builder: (context, roomCtx, mediaDeviceCtx) => - builder(context, roomCtx), + builder: (context, roomCtx, mediaDeviceCtx) => builder(context, roomCtx), ), ), ); diff --git a/lib/src/ui/builder/room/room_active_recording_indicator.dart b/lib/src/ui/builder/room/room_active_recording_indicator.dart index 737c222..c89c965 100644 --- a/lib/src/ui/builder/room/room_active_recording_indicator.dart +++ b/lib/src/ui/builder/room/room_active_recording_indicator.dart @@ -31,8 +31,7 @@ class RoomActiveRecording extends StatelessWidget { @override Widget build(BuildContext context) { return Consumer(builder: (context, roomCtx, child) { - Debug.log( - '====> RoomActiveRecording for ${roomCtx.activeRecording}'); + Debug.log('====> RoomActiveRecording for ${roomCtx.activeRecording}'); return Selector( selector: (context, activeRecording) => roomCtx.activeRecording, builder: (context, activeRecording, child) { diff --git a/lib/src/ui/builder/room/room_connection_state.dart b/lib/src/ui/builder/room/room_connection_state.dart index d7a0e24..53ad981 100644 --- a/lib/src/ui/builder/room/room_connection_state.dart +++ b/lib/src/ui/builder/room/room_connection_state.dart @@ -26,14 +26,12 @@ class RoomConnectionState extends StatelessWidget { required this.builder, }); - final Widget Function(BuildContext context, ConnectionState connectionState) - builder; + final Widget Function(BuildContext context, ConnectionState connectionState) builder; @override Widget build(BuildContext context) { return Consumer(builder: (context, roomCtx, child) { - Debug.log( - '====> RoomConnectionState for ${roomCtx.connectionState}'); + Debug.log('====> RoomConnectionState for ${roomCtx.connectionState}'); return Selector( selector: (context, connectionState) => roomCtx.connectionState, builder: (context, connectionState, child) { diff --git a/lib/src/ui/builder/room/room_participants.dart b/lib/src/ui/builder/room/room_participants.dart index 64989fc..827b241 100644 --- a/lib/src/ui/builder/room/room_participants.dart +++ b/lib/src/ui/builder/room/room_participants.dart @@ -26,8 +26,7 @@ class RoomParticipants extends StatelessWidget { required this.builder, }); - final Widget Function(BuildContext context, List participants) - builder; + final Widget Function(BuildContext context, List participants) builder; @override Widget build(BuildContext context) { diff --git a/lib/src/ui/builder/room/screenshare_toggle.dart b/lib/src/ui/builder/room/screenshare_toggle.dart index 2b77fa7..1bd8ee9 100644 --- a/lib/src/ui/builder/room/screenshare_toggle.dart +++ b/lib/src/ui/builder/room/screenshare_toggle.dart @@ -25,8 +25,8 @@ class ScreenShareToggle extends StatelessWidget { required this.builder, }); - final Function(BuildContext context, RoomContext roomCtx, - MediaDeviceContext deviceCtx, bool screenShareEnabled) builder; + final Function(BuildContext context, RoomContext roomCtx, MediaDeviceContext deviceCtx, bool screenShareEnabled) + builder; @override Widget build(BuildContext context) { @@ -35,8 +35,7 @@ class ScreenShareToggle extends StatelessWidget { return Consumer( builder: (context, deviceCtx, child) { return Selector( - selector: (context, screenShareEnabled) => - deviceCtx.isScreenShareEnabled, + selector: (context, screenShareEnabled) => deviceCtx.isScreenShareEnabled, builder: (context, screenShareEnabled, child) => builder( context, roomCtx, diff --git a/lib/src/ui/builder/room/speaker_switch.dart b/lib/src/ui/builder/room/speaker_switch.dart index 8a10ea5..c2ff403 100644 --- a/lib/src/ui/builder/room/speaker_switch.dart +++ b/lib/src/ui/builder/room/speaker_switch.dart @@ -25,8 +25,7 @@ class SpeakerSwitch extends StatelessWidget { required this.builder, }); - final Function(BuildContext context, RoomContext roomCtx, - MediaDeviceContext deviceCtx, bool? isSpeakerOn) builder; + final Function(BuildContext context, RoomContext roomCtx, MediaDeviceContext deviceCtx, bool? isSpeakerOn) builder; @override Widget build(BuildContext context) { diff --git a/lib/src/ui/builder/track/connection_quality_indicator.dart b/lib/src/ui/builder/track/connection_quality_indicator.dart index e304627..9afecf9 100644 --- a/lib/src/ui/builder/track/connection_quality_indicator.dart +++ b/lib/src/ui/builder/track/connection_quality_indicator.dart @@ -12,20 +12,15 @@ class ConnectionQualityIndicator extends StatelessWidget { required this.builder, }); - final Widget Function( - BuildContext context, ConnectionQuality connectionQuality) builder; + final Widget Function(BuildContext context, ConnectionQuality connectionQuality) builder; @override Widget build(BuildContext context) { - return Consumer( - builder: (context, participantContext, child) { - Debug.log( - '====> ConnectionQualityIndicator for ${participantContext.name}'); + return Consumer(builder: (context, participantContext, child) { + Debug.log('====> ConnectionQualityIndicator for ${participantContext.name}'); return Selector( - selector: (context, connectionQuality) => - participantContext.connectionQuality, - builder: (context, connectionQuality, child) => - builder(context, connectionQuality), + selector: (context, connectionQuality) => participantContext.connectionQuality, + builder: (context, connectionQuality, child) => builder(context, connectionQuality), ); }); } diff --git a/lib/src/ui/builder/track/e2e_encryption_indicator.dart b/lib/src/ui/builder/track/e2e_encryption_indicator.dart index 70fb300..2bc9822 100644 --- a/lib/src/ui/builder/track/e2e_encryption_indicator.dart +++ b/lib/src/ui/builder/track/e2e_encryption_indicator.dart @@ -15,10 +15,8 @@ class E2EEncryptionIndicator extends StatelessWidget { @override Widget build(BuildContext context) { - return Consumer( - builder: (context, participantContext, child) { - Debug.log( - '====> E2EEncryptionIndicator for ${participantContext.name}'); + return Consumer(builder: (context, participantContext, child) { + Debug.log('====> E2EEncryptionIndicator for ${participantContext.name}'); return Selector( selector: (context, isEncrypted) => participantContext.isEncrypted, builder: (context, isEncrypted, child) => builder(context, isEncrypted), diff --git a/lib/src/ui/builder/track/is_speaking_indicator.dart b/lib/src/ui/builder/track/is_speaking_indicator.dart index 8629ce2..f6da119 100644 --- a/lib/src/ui/builder/track/is_speaking_indicator.dart +++ b/lib/src/ui/builder/track/is_speaking_indicator.dart @@ -24,8 +24,7 @@ class IsSpeakingIndicator extends StatelessWidget { Debug.log('===> IsSpeakingIndicator for ${participantContext.name}'); return Selector( selector: (context, isSpeaking) => participantContext.isSpeaking, - builder: (context, isSpeaking, child) => - builder(context, showSpeakingIndicator ? isSpeaking : null), + builder: (context, isSpeaking, child) => builder(context, showSpeakingIndicator ? isSpeaking : null), ); } } diff --git a/lib/src/ui/layout/carousel_layout.dart b/lib/src/ui/layout/carousel_layout.dart index c22c8d8..8699602 100644 --- a/lib/src/ui/layout/carousel_layout.dart +++ b/lib/src/ui/layout/carousel_layout.dart @@ -35,10 +35,8 @@ class CarouselLayoutBuilder implements ParticipantLayoutBuilder { /// Move focused tracks to the pinned list for (var sid in pinnedTracks) { - var widget = children - .where((element) => element.trackIdentifier.identifier == sid) - .map((e) => e.widget) - .firstOrNull; + var widget = + children.where((element) => element.trackIdentifier.identifier == sid).map((e) => e.widget).firstOrNull; if (widget != null) { pinnedWidgets.add(widget); } diff --git a/lib/src/ui/layout/grid_layout.dart b/lib/src/ui/layout/grid_layout.dart index d5132a1..d48b9c9 100644 --- a/lib/src/ui/layout/grid_layout.dart +++ b/lib/src/ui/layout/grid_layout.dart @@ -30,10 +30,7 @@ class GridLayoutBuilder implements ParticipantLayoutBuilder { var deviceScreenType = getDeviceType(MediaQuery.of(context).size); var orientation = MediaQuery.of(context).orientation; return GridView.count( - crossAxisCount: deviceScreenType == DeviceScreenType.mobile && - orientation == Orientation.portrait - ? 2 - : 4, + crossAxisCount: deviceScreenType == DeviceScreenType.mobile && orientation == Orientation.portrait ? 2 : 4, childAspectRatio: 1.5, children: children.map((e) => e.widget).toList(), ); diff --git a/lib/src/ui/layout/sorting.dart b/lib/src/ui/layout/sorting.dart index 80d9236..76a3aba 100644 --- a/lib/src/ui/layout/sorting.dart +++ b/lib/src/ui/layout/sorting.dart @@ -56,8 +56,7 @@ List defaultSorting(List trackWidgets) { } // joinedAt - return participantA.joinedAt.millisecondsSinceEpoch - - participantB.joinedAt.millisecondsSinceEpoch; + return participantA.joinedAt.millisecondsSinceEpoch - participantB.joinedAt.millisecondsSinceEpoch; }); return trackWidgetsSorted; diff --git a/lib/src/ui/prejoin/prejoin.dart b/lib/src/ui/prejoin/prejoin.dart index daa2109..8815309 100644 --- a/lib/src/ui/prejoin/prejoin.dart +++ b/lib/src/ui/prejoin/prejoin.dart @@ -27,8 +27,7 @@ import '../widgets/room/microphone_select_button.dart'; import 'text_input.dart'; class Prejoin extends StatelessWidget { - Prejoin( - {super.key, required this.token, required this.url, this.onJoinPressed}); + Prejoin({super.key, required this.token, required this.url, this.onJoinPressed}); final Function(RoomContext roomCtx, String url, String token)? onJoinPressed; @@ -63,8 +62,7 @@ class Prejoin extends StatelessWidget { @override Widget build(BuildContext context) { return Consumer( - builder: (context, roomCtx, child) => !roomCtx.connected && - !roomCtx.connecting + builder: (context, roomCtx, child) => !roomCtx.connected && !roomCtx.connecting ? Center( child: SizedBox( width: 480, @@ -77,8 +75,7 @@ class Prejoin extends StatelessWidget { Container( padding: const EdgeInsets.all(8.0), child: CameraPreview( - builder: (context, videoTrack) => - CameraPreviewWidget(track: videoTrack), + builder: (context, videoTrack) => CameraPreviewWidget(track: videoTrack), ), ), SizedBox( @@ -86,8 +83,7 @@ class Prejoin extends StatelessWidget { child: Container( padding: const EdgeInsets.all(8.0), child: Row( - mainAxisAlignment: - MainAxisAlignment.spaceEvenly, + mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ MicrophoneSelectButton(), CameraSelectButton( @@ -124,8 +120,7 @@ class Prejoin extends StatelessWidget { child: Container( padding: const EdgeInsets.all(8.0), child: JoinButton( - builder: (context, roomCtx, connected) => - JoinButtonWidget( + builder: (context, roomCtx, connected) => JoinButtonWidget( roomCtx: roomCtx, connected: connected, onPressed: () => _handleJoinPressed(roomCtx), diff --git a/lib/src/ui/prejoin/text_input.dart b/lib/src/ui/prejoin/text_input.dart index 36403ca..c7e0484 100644 --- a/lib/src/ui/prejoin/text_input.dart +++ b/lib/src/ui/prejoin/text_input.dart @@ -15,11 +15,7 @@ import 'package:flutter/material.dart'; class TextInput extends StatelessWidget { - TextInput( - {super.key, - required this.onTextChanged, - required this.hintText, - String? text}) + TextInput({super.key, required this.onTextChanged, required this.hintText, String? text}) : _textController = TextEditingController(text: text ?? ''); final TextEditingController _textController; @@ -45,8 +41,7 @@ class TextInput extends StatelessWidget { decoration: InputDecoration( hintText: hintText, hintMaxLines: 1, - contentPadding: - const EdgeInsets.symmetric(horizontal: 8.0, vertical: 10), + contentPadding: const EdgeInsets.symmetric(horizontal: 8.0, vertical: 10), hintStyle: const TextStyle( fontSize: 16, color: Colors.grey, diff --git a/lib/src/ui/widgets/camera_preview.dart b/lib/src/ui/widgets/camera_preview.dart index f528fd3..2b16208 100644 --- a/lib/src/ui/widgets/camera_preview.dart +++ b/lib/src/ui/widgets/camera_preview.dart @@ -42,9 +42,7 @@ class CameraPreviewWidget extends StatelessWidget { builder: (context, constraints) => Icon( Icons.videocam_off_outlined, color: iconColor, - size: - math.min(constraints.maxHeight, constraints.maxWidth) * - 0.33, + size: math.min(constraints.maxHeight, constraints.maxWidth) * 0.33, ), ), ), diff --git a/lib/src/ui/widgets/participant/connection_quality_indicator.dart b/lib/src/ui/widgets/participant/connection_quality_indicator.dart index 37702bf..734bb67 100644 --- a/lib/src/ui/widgets/participant/connection_quality_indicator.dart +++ b/lib/src/ui/widgets/participant/connection_quality_indicator.dart @@ -26,9 +26,7 @@ class ConnectionQualityIndicatorWidget extends StatelessWidget { return Padding( padding: const EdgeInsets.only(left: 5), child: Icon( - connectionQuality == ConnectionQuality.poor - ? Icons.wifi_off_outlined - : Icons.wifi, + connectionQuality == ConnectionQuality.poor ? Icons.wifi_off_outlined : Icons.wifi, color: { ConnectionQuality.excellent: Colors.green, ConnectionQuality.good: Colors.orange, diff --git a/lib/src/ui/widgets/participant/participant_status_bar.dart b/lib/src/ui/widgets/participant/participant_status_bar.dart index bd1afa6..edaf042 100644 --- a/lib/src/ui/widgets/participant/participant_status_bar.dart +++ b/lib/src/ui/widgets/participant/participant_status_bar.dart @@ -43,67 +43,63 @@ class ParticipantStatusBar extends StatelessWidget { Widget build(BuildContext context) { return Consumer( builder: (context, participantContext, child) { - Debug.log( - '===> ParticipantStatusBar for ${participantContext.name}'); + Debug.log('===> ParticipantStatusBar for ${participantContext.name}'); var trackCtx = Provider.of(context); var isScreenShare = trackCtx?.isScreenShare ?? false; return Container( padding: const EdgeInsets.symmetric(horizontal: 6), color: Colors.black.withValues(alpha: 0.6), - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - if (showMuteStatus && !isScreenShare) - ParticipantMutedIndicator( - builder: (context, isMuted) => isMuted - ? const Icon( - Icons.mic_off, + child: + Row(mainAxisAlignment: MainAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.center, children: [ + if (showMuteStatus && !isScreenShare) + ParticipantMutedIndicator( + builder: (context, isMuted) => isMuted + ? const Icon( + Icons.mic_off, + color: Colors.white54, + size: 20, + ) + : const SizedBox(), + ), + if (isScreenShare) + const Icon( + Icons.screen_share, + color: Colors.white54, + size: 20, + ), + if (showName) + ParticipantName( + builder: (context, name) => name != null + ? Flexible( + child: Text( + isScreenShare ? '$name\'s screen' : name, + style: const TextStyle( color: Colors.white54, - size: 20, - ) - : const SizedBox(), - ), - if (isScreenShare) - const Icon( - Icons.screen_share, + fontSize: 16, + ), + overflow: TextOverflow.ellipsis, + ), + ) + : Container(), + ), + if (showConnectionQuality) + ConnectionQualityIndicator( + builder: (context, connectionQuality) => ConnectionQualityIndicatorWidget( + connectionQuality: connectionQuality, + ), + ), + if (showE2EEStatus) + E2EEncryptionIndicator( + builder: (context, isEncrypted) => Padding( + padding: const EdgeInsets.only(left: 5), + child: Icon( + isEncrypted ? Icons.lock : Icons.lock_open, color: Colors.white54, size: 20, ), - if (showName) - ParticipantName( - builder: (context, name) => name != null - ? Flexible( - child: Text( - isScreenShare ? '$name\'s screen' : name, - style: const TextStyle( - color: Colors.white54, - fontSize: 16, - ), - overflow: TextOverflow.ellipsis, - ), - ) - : Container(), - ), - if (showConnectionQuality) - ConnectionQualityIndicator( - builder: (context, connectionQuality) => - ConnectionQualityIndicatorWidget( - connectionQuality: connectionQuality, - ), - ), - if (showE2EEStatus) - E2EEncryptionIndicator( - builder: (context, isEncrypted) => Padding( - padding: const EdgeInsets.only(left: 5), - child: Icon( - isEncrypted ? Icons.lock : Icons.lock_open, - color: Colors.white54, - size: 20, - ), - ), - ), - ]), + ), + ), + ]), ); }, ); diff --git a/lib/src/ui/widgets/participant/participant_tile_widget.dart b/lib/src/ui/widgets/participant/participant_tile_widget.dart index 156f3a5..cd1bffe 100644 --- a/lib/src/ui/widgets/participant/participant_tile_widget.dart +++ b/lib/src/ui/widgets/participant/participant_tile_widget.dart @@ -33,8 +33,7 @@ class ParticipantTileWidget extends StatelessWidget { @override Widget build(BuildContext context) { var trackCtx = Provider.of(context); - Debug.log( - '> ParticipantTile for track ${trackCtx?.sid}@${trackCtx?.participant.identity}'); + Debug.log('> ParticipantTile for track ${trackCtx?.sid}@${trackCtx?.participant.identity}'); return Stack( children: [ diff --git a/lib/src/ui/widgets/room/camera_select_button.dart b/lib/src/ui/widgets/room/camera_select_button.dart index 8916b81..0e72155 100644 --- a/lib/src/ui/widgets/room/camera_select_button.dart +++ b/lib/src/ui/widgets/room/camera_select_button.dart @@ -58,8 +58,7 @@ class CameraSelectButton extends StatelessWidget { selectedDeviceId: deviceCtx.selectedVideoInputDeviceId, deviceIsOpened: deviceCtx.cameraOpened, onSelect: (device) => deviceCtx.selectVideoInput(device), - onToggle: (enabled) => - enabled ? deviceCtx.enableCamera() : deviceCtx.disableCamera(), + onToggle: (enabled) => enabled ? deviceCtx.enableCamera() : deviceCtx.disableCamera(), showTitleWidget: showTitleWidget, ), ); diff --git a/lib/src/ui/widgets/room/camera_switch_button.dart b/lib/src/ui/widgets/room/camera_switch_button.dart index 139433a..2252a14 100644 --- a/lib/src/ui/widgets/room/camera_switch_button.dart +++ b/lib/src/ui/widgets/room/camera_switch_button.dart @@ -38,25 +38,21 @@ class CameraSwitchButton extends StatelessWidget { Widget build(BuildContext context) { return ElevatedButton( style: ButtonStyle( - backgroundColor: - WidgetStateProperty.all(backgroundColor.withValues(alpha: 0.9)), + backgroundColor: WidgetStateProperty.all(backgroundColor.withValues(alpha: 0.9)), foregroundColor: WidgetStateProperty.all(foregroundColor), overlayColor: WidgetStateProperty.all(overlayColor), - shape: WidgetStateProperty.all(const RoundedRectangleBorder( - borderRadius: BorderRadius.all(Radius.circular(20.0)))), + shape: WidgetStateProperty.all( + const RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(20.0)))), padding: WidgetStateProperty.all( const EdgeInsets.all(12), ), ), - onPressed: () => onToggle?.call(currentPosition == CameraPosition.front - ? CameraPosition.back - : CameraPosition.front), + onPressed: () => + onToggle?.call(currentPosition == CameraPosition.front ? CameraPosition.back : CameraPosition.front), child: Row( mainAxisSize: MainAxisSize.min, children: [ - Icon(currentPosition == CameraPosition.back - ? Icons.video_camera_back - : Icons.video_camera_front), + Icon(currentPosition == CameraPosition.back ? Icons.video_camera_back : Icons.video_camera_front), ], ), ); diff --git a/lib/src/ui/widgets/room/chat_toggle.dart b/lib/src/ui/widgets/room/chat_toggle.dart index bc9c26d..fecd8f5 100644 --- a/lib/src/ui/widgets/room/chat_toggle.dart +++ b/lib/src/ui/widgets/room/chat_toggle.dart @@ -45,12 +45,9 @@ class ChatToggleWidget extends StatelessWidget { var deviceScreenType = getDeviceType(MediaQuery.of(context).size); return ElevatedButton( style: ButtonStyle( - backgroundColor: WidgetStateProperty.all(isChatOpen - ? selectedColor - : backgroundColor.withValues(alpha: 0.9)), + backgroundColor: WidgetStateProperty.all(isChatOpen ? selectedColor : backgroundColor.withValues(alpha: 0.9)), foregroundColor: WidgetStateProperty.all(foregroundColor), - overlayColor: WidgetStateProperty.all( - isChatOpen ? selectedOverlayColor : backgroundColor), + overlayColor: WidgetStateProperty.all(isChatOpen ? selectedOverlayColor : backgroundColor), shape: WidgetStateProperty.all( const RoundedRectangleBorder( borderRadius: BorderRadius.all( diff --git a/lib/src/ui/widgets/room/chat_widget.dart b/lib/src/ui/widgets/room/chat_widget.dart index 06600ef..cb4384d 100644 --- a/lib/src/ui/widgets/room/chat_widget.dart +++ b/lib/src/ui/widgets/room/chat_widget.dart @@ -39,14 +39,12 @@ class ChatWidget extends StatelessWidget { String lastPartcipantId = ''; for (ChatMessage msg in messages) { if (DateTime.fromMillisecondsSinceEpoch(msg.timestamp) - .difference( - DateTime.fromMillisecondsSinceEpoch(lastTimestamp)) + .difference(DateTime.fromMillisecondsSinceEpoch(lastTimestamp)) .inMinutes > 1 || lastPartcipantId != msg.participant?.identity) { msgWidgets.add(CustomDateNameChip( - name: msg.participant?.name ?? 'Unknown', - date: DateTime.fromMillisecondsSinceEpoch(msg.timestamp))); + name: msg.participant?.name ?? 'Unknown', date: DateTime.fromMillisecondsSinceEpoch(msg.timestamp))); } msgWidgets.add(BubbleNormal( text: msg.message, @@ -83,10 +81,7 @@ class ChatWidget extends StatelessWidget { child: Center( child: Text( 'Messages', - style: TextStyle( - color: Colors.white, - fontSize: 20.0, - fontWeight: FontWeight.bold), + style: TextStyle(color: Colors.white, fontSize: 20.0, fontWeight: FontWeight.bold), ), ), ), diff --git a/lib/src/ui/widgets/room/control_bar.dart b/lib/src/ui/widgets/room/control_bar.dart index 06f0e60..e2baf22 100644 --- a/lib/src/ui/widgets/room/control_bar.dart +++ b/lib/src/ui/widgets/room/control_bar.dart @@ -94,14 +94,11 @@ class ControlBar extends StatelessWidget { selectedDeviceId: deviceCtx.selectedAudioInputDeviceId, deviceIsOpened: deviceCtx.microphoneOpened, onSelect: (device) => deviceCtx.selectAudioInput(device), - onToggle: (enabled) => enabled - ? deviceCtx.enableMicrophone() - : deviceCtx.disableMicrophone(), + onToggle: (enabled) => enabled ? deviceCtx.enableMicrophone() : deviceCtx.disableMicrophone(), showTitleWidget: showTitleWidget, ), ), - if (audioOutput && - (lkPlatformIsDesktop() || lkPlatformIs(PlatformType.web))) + if (audioOutput && (lkPlatformIsDesktop() || lkPlatformIs(PlatformType.web))) MediaDeviceSelectButton( builder: (context, roomCtx, deviceCtx) => MediaDeviceSelectWidget( titleWidget: Text( @@ -142,32 +139,25 @@ class ControlBar extends StatelessWidget { selectedDeviceId: deviceCtx.selectedVideoInputDeviceId, deviceIsOpened: deviceCtx.cameraOpened, onSelect: (device) => deviceCtx.selectVideoInput(device), - onToggle: (enabled) => enabled - ? deviceCtx.enableCamera() - : deviceCtx.disableCamera(), + onToggle: (enabled) => enabled ? deviceCtx.enableCamera() : deviceCtx.disableCamera(), showTitleWidget: showTitleWidget, ), ), if (isMobile && microphone) SpeakerSwitch( - builder: (context, roomCtx, deviceCtx, isSpeakerOn) => - SpeakerSwitchButton( + builder: (context, roomCtx, deviceCtx, isSpeakerOn) => SpeakerSwitchButton( isSpeakerOn: isSpeakerOn ?? false, - onToggle: (speakerOn) => - deviceCtx.setSpeakerphoneOn(speakerOn), + onToggle: (speakerOn) => deviceCtx.setSpeakerphoneOn(speakerOn), )), if (isMobile && camera) CameraSwitch( - builder: (context, roomCtx, deviceCtx, position) => - CameraSwitchButton( + builder: (context, roomCtx, deviceCtx, position) => CameraSwitchButton( currentPosition: position, - onToggle: (newPosition) => - deviceCtx.switchCamera(newPosition), + onToggle: (newPosition) => deviceCtx.switchCamera(newPosition), )), if (screenShare) ScreenShareToggle( - builder: (context, roomCtx, deviceCtx, screenShareEnabled) => - ScreenShareToggleWidget( + builder: (context, roomCtx, deviceCtx, screenShareEnabled) => ScreenShareToggleWidget( roomCtx: roomCtx, deviceCtx: deviceCtx, screenShareEnabled: screenShareEnabled, diff --git a/lib/src/ui/widgets/room/disconnect_button.dart b/lib/src/ui/widgets/room/disconnect_button.dart index 6d9c524..bb20941 100644 --- a/lib/src/ui/widgets/room/disconnect_button.dart +++ b/lib/src/ui/widgets/room/disconnect_button.dart @@ -52,11 +52,9 @@ class DisconnectButtonWidget extends StatelessWidget { var deviceScreenType = getDeviceType(MediaQuery.of(context).size); return ElevatedButton( style: ButtonStyle( - backgroundColor: WidgetStateProperty.all( - connected ? selectedColor : backgroundColor.withValues(alpha: 0.9)), + backgroundColor: WidgetStateProperty.all(connected ? selectedColor : backgroundColor.withValues(alpha: 0.9)), foregroundColor: WidgetStateProperty.all(foregroundColor), - overlayColor: WidgetStateProperty.all( - connected ? selectedOverlayColor : overlayColor), + overlayColor: WidgetStateProperty.all(connected ? selectedOverlayColor : overlayColor), shape: WidgetStateProperty.all( const RoundedRectangleBorder( borderRadius: BorderRadius.all( @@ -70,8 +68,7 @@ class DisconnectButtonWidget extends StatelessWidget { : const EdgeInsets.fromLTRB(12, 20, 12, 20), ), ), - onPressed: () => - onPressed?.call() ?? connected ? roomCtx.disconnect() : null, + onPressed: () => onPressed?.call() ?? connected ? roomCtx.disconnect() : null, child: Row( mainAxisSize: MainAxisSize.min, children: [ diff --git a/lib/src/ui/widgets/room/join_button.dart b/lib/src/ui/widgets/room/join_button.dart index 2f1baf0..12306f9 100644 --- a/lib/src/ui/widgets/room/join_button.dart +++ b/lib/src/ui/widgets/room/join_button.dart @@ -49,11 +49,9 @@ class JoinButtonWidget extends StatelessWidget { ? roomCtx.connect() : null, style: ButtonStyle( - backgroundColor: WidgetStateProperty.all( - connected ? disabledColor : backgroundColor), + backgroundColor: WidgetStateProperty.all(connected ? disabledColor : backgroundColor), foregroundColor: WidgetStateProperty.all(foregroundColor), - overlayColor: WidgetStateProperty.all( - connected ? overlayColor : disabledOverlayColor), + overlayColor: WidgetStateProperty.all(connected ? overlayColor : disabledOverlayColor), shape: WidgetStateProperty.all( const RoundedRectangleBorder( borderRadius: BorderRadius.all( diff --git a/lib/src/ui/widgets/room/media_device_select_button.dart b/lib/src/ui/widgets/room/media_device_select_button.dart index ca6baaa..c61598c 100644 --- a/lib/src/ui/widgets/room/media_device_select_button.dart +++ b/lib/src/ui/widgets/room/media_device_select_button.dart @@ -61,17 +61,13 @@ class MediaDeviceSelectWidget extends StatelessWidget { return Row(mainAxisSize: MainAxisSize.min, children: [ ElevatedButton( style: ButtonStyle( - backgroundColor: WidgetStateProperty.all(deviceIsOpened - ? selectedColor - : backgroundColor.withValues(alpha: 0.9)), + backgroundColor: + WidgetStateProperty.all(deviceIsOpened ? selectedColor : backgroundColor.withValues(alpha: 0.9)), foregroundColor: WidgetStateProperty.all(foregroundColor), - overlayColor: WidgetStateProperty.all( - deviceIsOpened ? selectedOverlayColor : backgroundColor), + overlayColor: WidgetStateProperty.all(deviceIsOpened ? selectedOverlayColor : backgroundColor), shadowColor: WidgetStateProperty.all(Colors.transparent), shape: WidgetStateProperty.all(const RoundedRectangleBorder( - borderRadius: BorderRadius.only( - topLeft: Radius.circular(20.0), - bottomLeft: Radius.circular(20.0)))), + borderRadius: BorderRadius.only(topLeft: Radius.circular(20.0), bottomLeft: Radius.circular(20.0)))), padding: WidgetStateProperty.all( (lkPlatformIsMobile() || lkPlatformIsWebMobile()) ? const EdgeInsets.all(12) @@ -82,13 +78,9 @@ class MediaDeviceSelectWidget extends StatelessWidget { child: Row( mainAxisSize: MainAxisSize.min, children: [ - Icon(deviceIsOpened || defaultSelectable ? iconOn : iconOff, - color: iconColor), + Icon(deviceIsOpened || defaultSelectable ? iconOn : iconOff, color: iconColor), const SizedBox(width: 2), - if (titleWidget != null && - (deviceScreenType != DeviceScreenType.mobile || - showTitleWidget)) - titleWidget!, + if (titleWidget != null && (deviceScreenType != DeviceScreenType.mobile || showTitleWidget)) titleWidget!, ], ), ), @@ -100,19 +92,14 @@ class MediaDeviceSelectWidget extends StatelessWidget { Icons.arrow_drop_down, color: iconColor, ), - offset: Offset( - 0, ((deviceList.isNotEmpty ? deviceList.length : 1) * -55.0)), + offset: Offset(0, ((deviceList.isNotEmpty ? deviceList.length : 1) * -55.0)), style: ButtonStyle( - backgroundColor: WidgetStateProperty.all(deviceIsOpened - ? selectedColor - : backgroundColor.withValues(alpha: 0.9)), + backgroundColor: + WidgetStateProperty.all(deviceIsOpened ? selectedColor : backgroundColor.withValues(alpha: 0.9)), foregroundColor: WidgetStateProperty.all(foregroundColor), - overlayColor: WidgetStateProperty.all( - deviceIsOpened ? selectedOverlayColor : backgroundColor), + overlayColor: WidgetStateProperty.all(deviceIsOpened ? selectedOverlayColor : backgroundColor), shape: WidgetStateProperty.all(const RoundedRectangleBorder( - borderRadius: BorderRadius.only( - topRight: Radius.circular(20.0), - bottomRight: Radius.circular(20.0)))), + borderRadius: BorderRadius.only(topRight: Radius.circular(20.0), bottomRight: Radius.circular(20.0)))), ), enabled: deviceIsOpened || defaultSelectable, itemBuilder: (BuildContext context) { @@ -127,9 +114,7 @@ class MediaDeviceSelectWidget extends StatelessWidget { leading: (device.deviceId == selectedDeviceId) ? Icon( Icons.check_box_outlined, - color: (device.deviceId == selectedDeviceId) - ? selectedColor - : backgroundColor, + color: (device.deviceId == selectedDeviceId) ? selectedColor : backgroundColor, ) : Icon( Icons.check_box_outline_blank, diff --git a/lib/src/ui/widgets/room/microphone_select_button.dart b/lib/src/ui/widgets/room/microphone_select_button.dart index f8458a6..cba27ec 100644 --- a/lib/src/ui/widgets/room/microphone_select_button.dart +++ b/lib/src/ui/widgets/room/microphone_select_button.dart @@ -58,9 +58,7 @@ class MicrophoneSelectButton extends StatelessWidget { selectedDeviceId: deviceCtx.selectedAudioInputDeviceId, deviceIsOpened: deviceCtx.microphoneOpened, onSelect: (device) => deviceCtx.selectAudioInput(device), - onToggle: (enabled) => enabled - ? deviceCtx.enableMicrophone() - : deviceCtx.disableMicrophone(), + onToggle: (enabled) => enabled ? deviceCtx.enableMicrophone() : deviceCtx.disableMicrophone(), showTitleWidget: showtitleWidget, ), ); diff --git a/lib/src/ui/widgets/room/screenshare_toggle.dart b/lib/src/ui/widgets/room/screenshare_toggle.dart index 18b4809..8dcdbbc 100644 --- a/lib/src/ui/widgets/room/screenshare_toggle.dart +++ b/lib/src/ui/widgets/room/screenshare_toggle.dart @@ -50,12 +50,10 @@ class ScreenShareToggleWidget extends StatelessWidget { var deviceScreenType = getDeviceType(MediaQuery.of(context).size); return ElevatedButton( style: ButtonStyle( - backgroundColor: WidgetStateProperty.all(screenShareEnabled - ? selectedColor - : backgroundColor.withValues(alpha: 0.9)), + backgroundColor: + WidgetStateProperty.all(screenShareEnabled ? selectedColor : backgroundColor.withValues(alpha: 0.9)), foregroundColor: WidgetStateProperty.all(foregroundColor), - overlayColor: WidgetStateProperty.all( - screenShareEnabled ? selectedOverlayColor : overlayColor), + overlayColor: WidgetStateProperty.all(screenShareEnabled ? selectedOverlayColor : overlayColor), shape: WidgetStateProperty.all( const RoundedRectangleBorder( borderRadius: BorderRadius.all( @@ -69,15 +67,11 @@ class ScreenShareToggleWidget extends StatelessWidget { : const EdgeInsets.fromLTRB(12, 20, 12, 20), ), ), - onPressed: () => screenShareEnabled - ? deviceCtx.disableScreenShare() - : deviceCtx.enableScreenShare(context), + onPressed: () => screenShareEnabled ? deviceCtx.disableScreenShare() : deviceCtx.enableScreenShare(context), child: Row( mainAxisSize: MainAxisSize.min, children: [ - Icon(screenShareEnabled - ? Icons.stop_screen_share_outlined - : Icons.screen_share_outlined), + Icon(screenShareEnabled ? Icons.stop_screen_share_outlined : Icons.screen_share_outlined), const SizedBox(width: 2), if (deviceScreenType != DeviceScreenType.mobile || showLabel) Text( diff --git a/lib/src/ui/widgets/room/speaker_switch_button.dart b/lib/src/ui/widgets/room/speaker_switch_button.dart index a35be40..f04909a 100644 --- a/lib/src/ui/widgets/room/speaker_switch_button.dart +++ b/lib/src/ui/widgets/room/speaker_switch_button.dart @@ -36,12 +36,11 @@ class SpeakerSwitchButton extends StatelessWidget { Widget build(BuildContext context) { return ElevatedButton( style: ButtonStyle( - backgroundColor: - WidgetStateProperty.all(backgroundColor.withValues(alpha: 0.9)), + backgroundColor: WidgetStateProperty.all(backgroundColor.withValues(alpha: 0.9)), foregroundColor: WidgetStateProperty.all(foregroundColor), overlayColor: WidgetStateProperty.all(overlayColor), - shape: WidgetStateProperty.all(const RoundedRectangleBorder( - borderRadius: BorderRadius.all(Radius.circular(20.0)))), + shape: WidgetStateProperty.all( + const RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(20.0)))), padding: WidgetStateProperty.all(const EdgeInsets.all(12)), ), onPressed: () => onToggle?.call(!isSpeakerOn), diff --git a/lib/src/ui/widgets/theme.dart b/lib/src/ui/widgets/theme.dart index 6dc7cfa..39c803b 100644 --- a/lib/src/ui/widgets/theme.dart +++ b/lib/src/ui/widgets/theme.dart @@ -48,14 +48,12 @@ class LiveKitTheme { ), elevatedButtonTheme: ElevatedButtonThemeData( style: ButtonStyle( - textStyle: - WidgetStateProperty.all(GoogleFonts.montserrat( + textStyle: WidgetStateProperty.all(GoogleFonts.montserrat( fontSize: 15, )), - padding: WidgetStateProperty.all( - const EdgeInsets.symmetric(vertical: 20, horizontal: 25)), - shape: WidgetStateProperty.all( - RoundedRectangleBorder(borderRadius: BorderRadius.circular(8))), + padding: WidgetStateProperty.all(const EdgeInsets.symmetric(vertical: 20, horizontal: 25)), + shape: + WidgetStateProperty.all(RoundedRectangleBorder(borderRadius: BorderRadius.circular(8))), foregroundColor: WidgetStateProperty.all(Colors.white), // backgroundColor: WidgetStateProperty.all(accentColor), backgroundColor: WidgetStateProperty.resolveWith((states) { diff --git a/lib/src/ui/widgets/toast.dart b/lib/src/ui/widgets/toast.dart index 2629f4d..c3db64e 100644 --- a/lib/src/ui/widgets/toast.dart +++ b/lib/src/ui/widgets/toast.dart @@ -39,8 +39,7 @@ class ToastWidget extends StatefulWidget { ToastState createState() => ToastState(); } -class ToastState extends State - with SingleTickerProviderStateMixin { +class ToastState extends State with SingleTickerProviderStateMixin { AnimationController? _animationController; late Animation _fadeAnimation; Timer? _timer; @@ -71,8 +70,7 @@ class ToastState extends State vsync: this, duration: widget.fadeDuration, ); - _fadeAnimation = - CurvedAnimation(parent: _animationController!, curve: Curves.easeIn); + _fadeAnimation = CurvedAnimation(parent: _animationController!, curve: Curves.easeIn); super.initState(); } @@ -93,8 +91,7 @@ class ToastState extends State @override Widget build(BuildContext context) { return Consumer( - builder: (context, roomCtx, child) => - Selector( + builder: (context, roomCtx, child) => Selector( selector: (context, connectionState) => roomCtx.connectionState, builder: (context, connectionState, child) { if (connectionState != _connectionState) { diff --git a/lib/src/ui/widgets/track/audio_visualizer_widget.dart b/lib/src/ui/widgets/track/audio_visualizer_widget.dart index 05f25c3..9b34651 100644 --- a/lib/src/ui/widgets/track/audio_visualizer_widget.dart +++ b/lib/src/ui/widgets/track/audio_visualizer_widget.dart @@ -53,8 +53,7 @@ class AudioVisualizerWidget extends StatelessWidget { } return Consumer( - builder: (context, trackCtx, child) => - Selector( + builder: (context, trackCtx, child) => Selector( selector: (context, audioTrack) => trackCtx.audioTrack, builder: (BuildContext context, AudioTrack? audioTrack, Widget? child) { if (trackCtx.audioTrack == null) { @@ -92,8 +91,7 @@ class SoundWaveformWidget extends StatefulWidget { State createState() => _SoundWaveformWidgetState(); } -class _SoundWaveformWidgetState extends State - with TickerProviderStateMixin { +class _SoundWaveformWidgetState extends State with TickerProviderStateMixin { late AnimationController controller; late List samples; AudioVisualizer? _visualizer; @@ -109,18 +107,15 @@ class _SoundWaveformWidgetState extends State _participantListener?.on((e) { if (mounted) { setState(() { - samples = List.filled(widget.options.barCount, - widget.options.minHeight / widget.options.maxHeight); + samples = List.filled(widget.options.barCount, widget.options.minHeight / widget.options.maxHeight); }); } }); - samples = List.filled(widget.options.barCount, - widget.options.minHeight / widget.options.maxHeight); + samples = List.filled(widget.options.barCount, widget.options.minHeight / widget.options.maxHeight); _visualizer ??= createVisualizer(track, - options: AudioVisualizerOptions( - barCount: widget.options.barCount, - centeredBands: widget.options.centeredBands)); + options: + AudioVisualizerOptions(barCount: widget.options.barCount, centeredBands: widget.options.centeredBands)); _listener ??= _visualizer?.createListener(); _listener?.on((e) { if (mounted) { @@ -170,8 +165,7 @@ class _SoundWaveformWidgetState extends State final minHeight = widget.options.minHeight; final maxHeight = widget.options.maxHeight; return LayoutBuilder( - builder: (BuildContext context, BoxConstraints constraints) => - AnimatedBuilder( + builder: (BuildContext context, BoxConstraints constraints) => AnimatedBuilder( animation: controller, builder: (c, child) { return Row( @@ -179,20 +173,12 @@ class _SoundWaveformWidgetState extends State children: List.generate( count, (i) { - final heightPercent = - ((samples[i] - minHeight) / (maxHeight - minHeight)) - .clamp(0.0, 1.0); - final barOpacity = - (1.0 - widget.options.barMinOpacity) * heightPercent + - widget.options.barMinOpacity; + final heightPercent = ((samples[i] - minHeight) / (maxHeight - minHeight)).clamp(0.0, 1.0); + final barOpacity = (1.0 - widget.options.barMinOpacity) * heightPercent + widget.options.barMinOpacity; return AnimatedContainer( - duration: Duration( - milliseconds: - widget.options.durationInMilliseconds ~/ count), - margin: i == (samples.length - 1) - ? EdgeInsets.zero - : EdgeInsets.only(right: widget.options.spacing), + duration: Duration(milliseconds: widget.options.durationInMilliseconds ~/ count), + margin: i == (samples.length - 1) ? EdgeInsets.zero : EdgeInsets.only(right: widget.options.spacing), height: samples[i] < minHeight ? minHeight : samples[i] > maxHeight @@ -201,8 +187,7 @@ class _SoundWaveformWidgetState extends State width: widget.options.width, decoration: BoxDecoration( color: widget.options.color.withValues(alpha: barOpacity), - borderRadius: - BorderRadius.circular(widget.options.cornerRadius), + borderRadius: BorderRadius.circular(widget.options.cornerRadius), ), ); }, diff --git a/lib/src/ui/widgets/track/focus_toggle.dart b/lib/src/ui/widgets/track/focus_toggle.dart index d64565e..cc596ff 100644 --- a/lib/src/ui/widgets/track/focus_toggle.dart +++ b/lib/src/ui/widgets/track/focus_toggle.dart @@ -37,8 +37,7 @@ class FocusToggle extends StatelessWidget { if (trackCtx == null) { return const SizedBox(); } - var shouldShowBackToGridView = - roomCtx.pinnedTracks.contains(sid) && sid == roomCtx.pinnedTracks.first; + var shouldShowBackToGridView = roomCtx.pinnedTracks.contains(sid) && sid == roomCtx.pinnedTracks.first; if (shouldShowBackToGridView && !showBackToGridView) { return const SizedBox(); @@ -47,8 +46,7 @@ class FocusToggle extends StatelessWidget { return Padding( padding: const EdgeInsets.all(2), child: IconButton( - icon: Icon( - shouldShowBackToGridView ? Icons.grid_view : Icons.open_in_full), + icon: Icon(shouldShowBackToGridView ? Icons.grid_view : Icons.open_in_full), color: Colors.white70, onPressed: () { if (sid == null) { diff --git a/lib/src/ui/widgets/track/track_stats_widget.dart b/lib/src/ui/widgets/track/track_stats_widget.dart index 815f46c..a58c34b 100644 --- a/lib/src/ui/widgets/track/track_stats_widget.dart +++ b/lib/src/ui/widgets/track/track_stats_widget.dart @@ -16,11 +16,9 @@ class TrackStatsWidget extends StatelessWidget { } return Consumer( - builder: (context, trackCtx, child) => - Selector>( + builder: (context, trackCtx, child) => Selector>( selector: (context, trackCtx) => trackCtx.stats, - builder: - (BuildContext context, Map stats, Widget? child) { + builder: (BuildContext context, Map stats, Widget? child) { return Center( child: Stack( children: [ @@ -33,18 +31,15 @@ class TrackStatsWidget extends StatelessWidget { ), child: Column(children: [ Text('${trackCtx.isVideo ? 'video' : 'audio'} stats', - style: const TextStyle( - fontWeight: FontWeight.bold, fontSize: 16)), - ...stats.entries - .map((e) => Text('${e.key}: ${e.value}')), + style: const TextStyle(fontWeight: FontWeight.bold, fontSize: 16)), + ...stats.entries.map((e) => Text('${e.key}: ${e.value}')), ]), ) : const SizedBox(), Container( padding: const EdgeInsets.all(2), child: IconButton( - icon: Icon( - trackCtx.showStatistics ? Icons.close : Icons.info), + icon: Icon(trackCtx.showStatistics ? Icons.close : Icons.info), color: Colors.white70, onPressed: () { // show stats diff --git a/lib/src/ui/widgets/track/video_track_widget.dart b/lib/src/ui/widgets/track/video_track_widget.dart index 1987cb9..864c433 100644 --- a/lib/src/ui/widgets/track/video_track_widget.dart +++ b/lib/src/ui/widgets/track/video_track_widget.dart @@ -40,12 +40,8 @@ class VideoTrackWidget extends StatelessWidget { return Selector( selector: (context, isMuted) => trackCtx.isMuted, - builder: (BuildContext context, isMuted, child) => !isMuted && - trackCtx.videoTrack != null - ? Container( - color: LKColors.lkDarkBlue, - child: - VideoTrackRenderer(trackCtx.videoTrack!, key: ValueKey(sid))) + builder: (BuildContext context, isMuted, child) => !isMuted && trackCtx.videoTrack != null + ? Container(color: LKColors.lkDarkBlue, child: VideoTrackRenderer(trackCtx.videoTrack!, key: ValueKey(sid))) : const NoTrackWidget(), ); }