1
+ import 'dart:io' ;
2
+
1
3
import 'package:flutter/foundation.dart' ;
2
4
import 'package:flutter/material.dart' ;
3
5
import 'package:flutter_webrtc/flutter_webrtc.dart' ;
6
+ import 'package:permission_handler/permission_handler.dart' ;
4
7
import 'package:shared_preferences/shared_preferences.dart' ;
5
8
import 'package:sip_ua/sip_ua.dart' ;
9
+ import 'package:flutter/foundation.dart' ;
10
+
6
11
7
12
import 'widgets/action_button.dart' ;
8
13
@@ -36,7 +41,7 @@ class _MyDialPadWidget extends State<DialPadWidget>
36
41
_textController = TextEditingController (text: _dest);
37
42
_textController! .text = _dest! ;
38
43
39
- this . setState (() {});
44
+ setState (() {});
40
45
}
41
46
42
47
void _bindEventListeners () {
@@ -46,8 +51,12 @@ class _MyDialPadWidget extends State<DialPadWidget>
46
51
Future <Widget ?> _handleCall (BuildContext context,
47
52
[bool voiceonly = false ]) async {
48
53
var dest = _textController? .text;
54
+ if (defaultTargetPlatform == TargetPlatform .android || defaultTargetPlatform == TargetPlatform .iOS) {
55
+ await Permission .microphone.request ();
56
+ await Permission .camera.request ();
57
+ }
49
58
if (dest == null || dest.isEmpty) {
50
- showDialog <Null >(
59
+ showDialog <void >(
51
60
context: context,
52
61
barrierDismissible: false ,
53
62
builder: (BuildContext context) {
@@ -92,15 +101,15 @@ class _MyDialPadWidget extends State<DialPadWidget>
92
101
void _handleBackSpace ([bool deleteAll = false ]) {
93
102
var text = _textController! .text;
94
103
if (text.isNotEmpty) {
95
- this . setState (() {
104
+ setState (() {
96
105
text = deleteAll ? '' : text.substring (0 , text.length - 1 );
97
106
_textController! .text = text;
98
107
});
99
108
}
100
109
}
101
110
102
111
void _handleNum (String number) {
103
- this . setState (() {
112
+ setState (() {
104
113
_textController! .text += number;
105
114
});
106
115
}
@@ -136,8 +145,8 @@ class _MyDialPadWidget extends State<DialPadWidget>
136
145
mainAxisAlignment: MainAxisAlignment .spaceEvenly,
137
146
children: row
138
147
.map ((label) => ActionButton (
139
- title: '${ label .keys .first }' ,
140
- subTitle: '${ label .values .first }' ,
148
+ title: label.keys.first,
149
+ subTitle: label.values.first,
141
150
onPressed: () => _handleNum (label.keys.first),
142
151
number: true ,
143
152
))
@@ -275,7 +284,7 @@ class _MyDialPadWidget extends State<DialPadWidget>
275
284
padding: const EdgeInsets .all (6.0 ),
276
285
child: Center (
277
286
child: Text (
278
- 'Received Message: ${ receivedMsg } ' ,
287
+ 'Received Message: $receivedMsg ' ,
279
288
style: TextStyle (fontSize: 14 , color: Colors .black54),
280
289
)),
281
290
),
@@ -290,7 +299,7 @@ class _MyDialPadWidget extends State<DialPadWidget>
290
299
291
300
@override
292
301
void registrationStateChanged (RegistrationState state) {
293
- this . setState (() {});
302
+ setState (() {});
294
303
}
295
304
296
305
@override
@@ -314,6 +323,5 @@ class _MyDialPadWidget extends State<DialPadWidget>
314
323
315
324
@override
316
325
void onNewNotify (Notify ntf) {
317
- // TODO: implement onNewNotify
318
326
}
319
327
}
0 commit comments