call_mode 0.1.1 call_mode: ^0.1.1 copied to clipboard
A handy plugin for retrieving and observing a current call mode
call_mode #
A plugin for getting and listening to a current call mode
Basic information #
There are currently implemented only following call modes:
inProgress | ringing | none |
---|---|---|
A call is currently active | Incoming call ringing | No active or ringing calls |
Getting Started #
-
Add the plugin to your dependencies in
pubspec.yaml
dependencies: call_mode: ^0.1.0
-
Run the following command to get the package:
flutter pub get
-
Import plugin to your dart file
import 'package:call_mode/call_mode.dart';
Usage #
Getting current call mode #
You can get current call mode using CallModePlugin.instance.getCallMode()
method.
Listening to call mode changes #
There are 2 ways to listen to call mode changes
-
Using
CallModePlugin
-
Add listener
void someFunction() { CallModePlugin.instance.addListener(_callModeListener); } void _callModeListener(CallMode mode) { // TODO: your logic }
-
Remove listener when you're done
void dispose() { CallModePlugin.instance.removeListener(_callModeListener); }
-
-
Using
CallModeListener
orCallModeBuilder
widgets-
CallModeListener
void _callModeListener(BuildContext context, CallMode mode) { // TODO: your logic } @override Widget build() { return CallModeListener( listener: _callModeListener, child: YourWidget(), ); }
-
CallModeBuilder
@override Widget build() { return CallModeBuilder( builder: (context, callMode) { // TODO: your widgets }, ); }
-
Additional methods #
You can configure how often will an underlying system be checking for a call state.
Use CallModePlugin.instance.setListenerInterval(Duration duration)
method.
!!! WARNING !!!
This method will affect ALL listeners in your app, including ones that are used inside
CallModeBuilder
's and CallModeListener
's. It is because there is only one state watcher
on platform side.
Platform implementations #
Android | iOS | |
---|---|---|
inProgress | AudioManager.MODE_IN_CALL or AudioManager.MODE_IN_COMMUNICATION |
Any CXCall has hasEnded == false and hasConnected == true |
ringing | AudioManager.MODE_RINGTONE |
Any CXCall has hasEnded == false and hasConnected == false |
none | Any other AudioManager mode |
No CXCall 's or all CXCall 's have hasEnded == true |