11import 'dart:async' ;
22import 'dart:io' ;
33
4+ import 'package:firebase_core/firebase_core.dart' ;
45import 'package:firebase_messaging/firebase_messaging.dart' ;
6+ import 'package:flutter/foundation.dart' ;
57import 'package:flutter/material.dart' ;
68import 'package:twilio_voice/twilio_voice.dart' ;
79import 'package:twilio_voice_example/screens/widgets/permission_tile.dart' ;
@@ -116,12 +118,13 @@ class _PermissionsBlockState extends State<PermissionsBlock> with WidgetsBinding
116118 _stateBluetooth = value;
117119 });
118120 }
121+
119122 //#endregion
120123
121124 @override
122125 void didChangeAppLifecycleState (AppLifecycleState state) {
123126 printDebug ("AppLifecycleState: $state " );
124- if (_lastLifecycleState != state && state == AppLifecycleState .resumed) {
127+ if (_lastLifecycleState != state && state == AppLifecycleState .resumed) {
125128 _updatePermissions ();
126129 }
127130 _lastLifecycleState = state;
@@ -189,7 +192,9 @@ class _PermissionsBlockState extends State<PermissionsBlock> with WidgetsBinding
189192 _tv.hasMicAccess ().then ((value) => setMicPermission = value);
190193 _tv.hasReadPhoneStatePermission ().then ((value) => setReadPhoneStatePermission = value);
191194 _tv.hasReadPhoneNumbersPermission ().then ((value) => setReadPhoneNumbersPermission = value);
192- FirebaseMessaging .instance.requestPermission ().then ((value) => setBackgroundPermission = value.authorizationStatus == AuthorizationStatus .authorized);
195+ if (Firebase .apps.isNotEmpty) {
196+ FirebaseMessaging .instance.requestPermission ().then ((value) => setBackgroundPermission = value.authorizationStatus == AuthorizationStatus .authorized);
197+ }
193198 _tv.hasCallPhonePermission ().then ((value) => setCallPhonePermission = value);
194199 _tv.hasRegisteredPhoneAccount ().then ((value) => setPhoneAccountRegistered = value);
195200 _tv.isPhoneAccountEnabled ().then ((value) => setIsPhoneAccountEnabled = value);
@@ -266,22 +271,26 @@ class _PermissionsBlockState extends State<PermissionsBlock> with WidgetsBinding
266271 icon: Icons .mic,
267272 title: "Microphone" ,
268273 granted: _hasMicPermission,
269- onRequestPermission: () => _tv.requestMicAccess (),
270- ),
271-
272- PermissionTile (
273- icon: Icons .notifications,
274- title: "Notifications" ,
275- granted: _hasBackgroundPermissions,
276274 onRequestPermission: () async {
277- await FirebaseMessaging .instance.requestPermission ();
278- final settings = await FirebaseMessaging .instance.getNotificationSettings ();
279- setBackgroundPermission = settings.authorizationStatus == AuthorizationStatus .authorized;
275+ await _tv.requestMicAccess ();
276+ setMicPermission = await _tv.hasMicAccess ();
280277 },
281278 ),
282279
280+ if (Firebase .apps.isNotEmpty)
281+ PermissionTile (
282+ icon: Icons .notifications,
283+ title: "Notifications" ,
284+ granted: _hasBackgroundPermissions,
285+ onRequestPermission: () async {
286+ await FirebaseMessaging .instance.requestPermission ();
287+ final settings = await FirebaseMessaging .instance.getNotificationSettings ();
288+ setBackgroundPermission = settings.authorizationStatus == AuthorizationStatus .authorized;
289+ },
290+ ),
291+
283292 // if android
284- if (Platform .isAndroid)
293+ if (! kIsWeb && Platform .isAndroid)
285294 PermissionTile (
286295 icon: Icons .phone,
287296 title: "Read Phone State" ,
@@ -293,7 +302,7 @@ class _PermissionsBlockState extends State<PermissionsBlock> with WidgetsBinding
293302 ),
294303
295304 // if android
296- if (Platform .isAndroid)
305+ if (! kIsWeb && Platform .isAndroid)
297306 PermissionTile (
298307 icon: Icons .phone,
299308 title: "Read Phone Numbers" ,
@@ -305,7 +314,7 @@ class _PermissionsBlockState extends State<PermissionsBlock> with WidgetsBinding
305314 ),
306315
307316 // if android
308- if (Platform .isAndroid)
317+ if (! kIsWeb && Platform .isAndroid)
309318 PermissionTile (
310319 icon: Icons .call_made,
311320 title: "Call Phone" ,
@@ -317,7 +326,7 @@ class _PermissionsBlockState extends State<PermissionsBlock> with WidgetsBinding
317326 ),
318327
319328 // if android
320- if (Platform .isAndroid)
329+ if (! kIsWeb && Platform .isAndroid)
321330 PermissionTile (
322331 icon: Icons .phonelink_setup,
323332 title: "Phone Account" ,
@@ -329,7 +338,7 @@ class _PermissionsBlockState extends State<PermissionsBlock> with WidgetsBinding
329338 ),
330339
331340 // if android
332- if (Platform .isAndroid)
341+ if (! kIsWeb && Platform .isAndroid)
333342 ListTile (
334343 enabled: _hasRegisteredPhoneAccount,
335344 dense: true ,
@@ -365,4 +374,4 @@ class _PermissionsBlockState extends State<PermissionsBlock> with WidgetsBinding
365374 _subscription.cancel ();
366375 super .dispose ();
367376 }
368- }
377+ }
0 commit comments