diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index db9c95314..f57cee1b7 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -19,7 +19,11 @@
-
+
+
+
+
diff --git a/lib/pages/dialer/dialer.dart b/lib/pages/dialer/dialer.dart
index 2891fc547..22e76fd89 100644
--- a/lib/pages/dialer/dialer.dart
+++ b/lib/pages/dialer/dialer.dart
@@ -139,7 +139,7 @@ class MyCallingPage extends State {
Room? get room => call.room;
String get displayName => call.room.getLocalizedDisplayname(
- MatrixLocals(L10n.of(context)!),
+ MatrixLocals(L10n.of(widget.context)!),
);
String get callId => widget.callId;
@@ -248,18 +248,18 @@ class MyCallingPage extends State {
void _resizeLocalVideo(Orientation orientation) {
final shortSide = min(
- MediaQuery.of(context).size.width,
- MediaQuery.of(context).size.height,
+ MediaQuery.of(widget.context).size.width,
+ MediaQuery.of(widget.context).size.height,
);
_localVideoMargin = remoteStream != null
? const EdgeInsets.only(top: 20.0, right: 20.0)
: EdgeInsets.zero;
_localVideoWidth = remoteStream != null
? shortSide / 3
- : MediaQuery.of(context).size.width;
+ : MediaQuery.of(widget.context).size.width;
_localVideoHeight = remoteStream != null
? shortSide / 4
- : MediaQuery.of(context).size.height;
+ : MediaQuery.of(widget.context).size.height;
}
void _handleCallState(CallState state) {
@@ -309,14 +309,15 @@ class MyCallingPage extends State {
androidNotificationOptions: AndroidNotificationOptions(
channelId: 'notification_channel_id',
channelName: 'Foreground Notification',
- channelDescription: L10n.of(context)!.foregroundServiceRunning,
+ channelDescription:
+ L10n.of(widget.context)!.foregroundServiceRunning,
),
iosNotificationOptions: const IOSNotificationOptions(),
foregroundTaskOptions: const ForegroundTaskOptions(),
);
FlutterForegroundTask.startService(
- notificationTitle: L10n.of(context)!.screenSharingTitle,
- notificationText: L10n.of(context)!.screenSharingDetail,
+ notificationTitle: L10n.of(widget.context)!.screenSharingTitle,
+ notificationText: L10n.of(widget.context)!.screenSharingDetail,
);
} else {
FlutterForegroundTask.stopService();
@@ -379,7 +380,7 @@ class MyCallingPage extends State {
child: Icon(_speakerOn ? Icons.volume_up : Icons.volume_off),
onPressed: _switchSpeaker,
foregroundColor: Colors.black54,
- backgroundColor: Theme.of(context).backgroundColor,
+ backgroundColor: Theme.of(widget.context).backgroundColor,
);
*/
final hangupButton = FloatingActionButton(
@@ -481,7 +482,7 @@ class MyCallingPage extends State {
var title = '';
if (call.localHold) {
title = '${call.room.getLocalizedDisplayname(
- MatrixLocals(L10n.of(context)!),
+ MatrixLocals(L10n.of(widget.context)!),
)} held the call.';
} else if (call.remoteOnHold) {
title = 'You held the call.';
diff --git a/lib/utils/voip_plugin.dart b/lib/utils/voip_plugin.dart
index 5d77c8878..f21e50dc3 100644
--- a/lib/utils/voip_plugin.dart
+++ b/lib/utils/voip_plugin.dart
@@ -61,7 +61,8 @@ class VoipPlugin with WidgetsBindingObserver implements WebRTCDelegate {
void addCallingOverlay(String callId, CallSession call) {
final context = kIsWeb
? ChatList.contextForVoip!
- : FluffyChatApp.routerKey.currentContext!; // web is weird
+ : FluffyChatApp.matrixKey.currentContext!; // web is weird
+
if (overlayEntry != null) {
Logs().e('[VOIP] addCallingOverlay: The call session already exists?');
overlayEntry!.remove();
@@ -165,7 +166,7 @@ class VoipPlugin with WidgetsBindingObserver implements WebRTCDelegate {
addCallingOverlay(call.callId, call);
try {
if (!hasCallingAccount) {
- ScaffoldMessenger.of(FluffyChatApp.routerKey.currentContext!)
+ ScaffoldMessenger.of(FluffyChatApp.matrixKey.currentContext!)
.showSnackBar(
const SnackBar(
content: Text(
diff --git a/lib/widgets/fluffy_chat_app.dart b/lib/widgets/fluffy_chat_app.dart
index 5c9025fc2..5967bc728 100644
--- a/lib/widgets/fluffy_chat_app.dart
+++ b/lib/widgets/fluffy_chat_app.dart
@@ -17,6 +17,7 @@ class FluffyChatApp extends StatefulWidget {
final List clients;
final Map? queryParameters;
static GlobalKey routerKey = GlobalKey();
+ static GlobalKey matrixKey = GlobalKey();
const FluffyChatApp({
Key? key,
this.testWidget,
@@ -75,6 +76,7 @@ class FluffyChatAppState extends State {
initialUrl: _initialUrl ?? '/',
routes: AppRoutes(columnMode ?? false).routes,
builder: (context, child) => Matrix(
+ key: FluffyChatApp.matrixKey,
context: context,
router: FluffyChatApp.routerKey,
clients: widget.clients,