Skip to content

Commit ea9ef19

Browse files
authored
fix: Volume changes (#246)
2 parents e836a1b + ca3e24d commit ea9ef19

File tree

1 file changed

+15
-19
lines changed

1 file changed

+15
-19
lines changed

lib/screens/layouts/desktop/viewport.dart

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
* along with this program. If not, see <http://www.gnu.org/licenses/>.
1818
*/
1919

20+
import 'dart:async';
21+
2022
import 'package:bluecherry_client/models/device.dart';
2123
import 'package:bluecherry_client/providers/desktop_view_provider.dart';
2224
import 'package:bluecherry_client/providers/settings_provider.dart';
@@ -102,28 +104,25 @@ class DesktopTileViewport extends StatefulWidget {
102104

103105
class _DesktopTileViewportState extends State<DesktopTileViewport> {
104106
bool ptzEnabled = false;
105-
late double? volume = widget.controller?.volume;
106-
107-
void updateVolume() {
108-
if (widget.controller != null && mounted) {
109-
setState(() => volume = widget.controller!.volume);
110-
}
111-
}
107+
double get volume => widget.controller?.volume ?? 0.0;
108+
StreamSubscription<double>? volumeSubscription;
112109

113110
@override
114111
void initState() {
115112
super.initState();
116113
if (widget.controller != null) {
117-
updateVolume();
114+
volumeSubscription = widget.controller!.volumeStream.listen((event) {
115+
if (mounted) {
116+
setState(() {});
117+
}
118+
});
118119
}
119120
}
120121

121122
@override
122-
void didUpdateWidget(covariant DesktopTileViewport oldWidget) {
123-
super.didUpdateWidget(oldWidget);
124-
if (oldWidget.controller == null && widget.controller != null) {
125-
updateVolume();
126-
}
123+
void dispose() {
124+
volumeSubscription?.cancel();
125+
super.dispose();
127126
}
128127

129128
@override
@@ -244,13 +243,11 @@ class _DesktopTileViewportState extends State<DesktopTileViewport> {
244243
tooltip:
245244
isMuted ? loc.enableAudio : loc.disableAudio,
246245
onPressed: () async {
247-
if (isMuted) {
248-
await widget.controller!.setVolume(1.0);
249-
} else {
246+
if (!isMuted) {
250247
await widget.controller!.setVolume(0.0);
248+
} else {
249+
await widget.controller!.setVolume(1.0);
251250
}
252-
253-
updateVolume();
254251
},
255252
),
256253
if (isDesktopPlatform &&
@@ -343,7 +340,6 @@ class _DesktopTileViewportState extends State<DesktopTileViewport> {
343340
device.preferredStreamingType !=
344341
widget.device.preferredStreamingType,
345342
);
346-
updateVolume();
347343
}
348344
},
349345
),

0 commit comments

Comments
 (0)