1
1
import 'package:flutter/material.dart' ;
2
2
import 'package:shared_preferences/shared_preferences.dart' ;
3
3
import 'package:sip_ua/sip_ua.dart' ;
4
+ import 'package:flutter/foundation.dart' show kIsWeb;
4
5
5
6
class RegisterWidget extends StatefulWidget {
6
7
final SIPUAHelper ? _helper;
@@ -14,6 +15,7 @@ class RegisterWidget extends StatefulWidget {
14
15
class _MyRegisterWidget extends State <RegisterWidget >
15
16
implements SipUaHelperListener {
16
17
final TextEditingController _passwordController = TextEditingController ();
18
+ final TextEditingController _portController = TextEditingController ();
17
19
final TextEditingController _wsUriController = TextEditingController ();
18
20
final TextEditingController _sipUriController = TextEditingController ();
19
21
final TextEditingController _displayNameController = TextEditingController ();
@@ -26,6 +28,8 @@ class _MyRegisterWidget extends State<RegisterWidget>
26
28
late SharedPreferences _preferences;
27
29
late RegistrationState _registerState;
28
30
31
+ TransportType _selectedTransport = TransportType .TCP ;
32
+
29
33
SIPUAHelper ? get helper => widget._helper;
30
34
31
35
@override
@@ -34,6 +38,9 @@ class _MyRegisterWidget extends State<RegisterWidget>
34
38
_registerState = helper! .registerState;
35
39
helper! .addSipUaHelperListener (this );
36
40
_loadSettings ();
41
+ if (kIsWeb) {
42
+ _selectedTransport = TransportType .WS ;
43
+ }
37
44
}
38
45
39
46
@override
@@ -56,6 +63,7 @@ class _MyRegisterWidget extends State<RegisterWidget>
56
63
void _loadSettings () async {
57
64
_preferences = await SharedPreferences .getInstance ();
58
65
setState (() {
66
+ _portController.text = '5060' ;
59
67
_wsUriController.text =
60
68
_preferences.getString ('ws_uri' ) ?? 'wss://tryit.jssip.net:10443' ;
61
69
_sipUriController.text =
@@ -69,6 +77,7 @@ class _MyRegisterWidget extends State<RegisterWidget>
69
77
}
70
78
71
79
void _saveSettings () {
80
+ _preferences.setString ('port' , _portController.text);
72
81
_preferences.setString ('ws_uri' , _wsUriController.text);
73
82
_preferences.setString ('sip_uri' , _sipUriController.text);
74
83
_preferences.setString ('display_name' , _displayNameController.text);
@@ -113,12 +122,15 @@ class _MyRegisterWidget extends State<RegisterWidget>
113
122
114
123
UaSettings settings = UaSettings ();
115
124
116
- settings.webSocketUrl = _wsUriController .text;
125
+ settings.port = _portController .text;
117
126
settings.webSocketSettings.extraHeaders = _wsExtraHeaders;
118
127
settings.webSocketSettings.allowBadCertificate = true ;
119
128
//settings.webSocketSettings.userAgent = 'Dart/2.8 (dart:io) for OpenSIPS.';
120
-
129
+ settings.tcpSocketSettings.allowBadCertificate = true ;
130
+ settings.transportType = _selectedTransport;
121
131
settings.uri = _sipUriController.text;
132
+ settings.webSocketUrl = _wsUriController.text;
133
+ settings.host = _sipUriController.text.split ('@' )[1 ];
122
134
settings.authorizationUser = _authorizationUserController.text;
123
135
settings.password = _passwordController.text;
124
136
settings.displayName = _displayNameController.text;
@@ -143,14 +155,24 @@ class _MyRegisterWidget extends State<RegisterWidget>
143
155
style: TextStyle (fontSize: 18 , color: Colors .black54),
144
156
),
145
157
),
146
- SizedBox (height: 40 ),
147
- Text ('WebSocket:' ),
148
- TextFormField (
149
- controller: _wsUriController,
150
- keyboardType: TextInputType .text,
151
- autocorrect: false ,
152
- textAlign: TextAlign .center,
153
- ),
158
+ SizedBox (height: 20 ),
159
+ if (_selectedTransport == TransportType .WS ) ...[
160
+ Text ('WebSocket:' ),
161
+ TextFormField (
162
+ controller: _wsUriController,
163
+ keyboardType: TextInputType .text,
164
+ autocorrect: false ,
165
+ textAlign: TextAlign .center,
166
+ ),
167
+ ],
168
+ if (_selectedTransport == TransportType .TCP ) ...[
169
+ Text ('Port:' ),
170
+ TextFormField (
171
+ controller: _portController,
172
+ keyboardType: TextInputType .text,
173
+ textAlign: TextAlign .center,
174
+ ),
175
+ ],
154
176
SizedBox (height: 20 ),
155
177
Text ('SIP URI:' ),
156
178
TextFormField (
@@ -192,7 +214,29 @@ class _MyRegisterWidget extends State<RegisterWidget>
192
214
hintText: _displayNameController.text.isEmpty ? '[Empty]' : null ,
193
215
),
194
216
),
195
- const SizedBox (height: 40 ),
217
+ const SizedBox (height: 20 ),
218
+ if (! kIsWeb) ...[
219
+ Row (
220
+ mainAxisAlignment: MainAxisAlignment .spaceEvenly,
221
+ children: [
222
+ RadioMenuButton <TransportType >(
223
+ value: TransportType .TCP ,
224
+ groupValue: _selectedTransport,
225
+ onChanged: ((value) => setState (() {
226
+ _selectedTransport = value! ;
227
+ })),
228
+ child: Text ("TCP" )),
229
+ RadioMenuButton <TransportType >(
230
+ value: TransportType .WS ,
231
+ groupValue: _selectedTransport,
232
+ onChanged: ((value) => setState (() {
233
+ _selectedTransport = value! ;
234
+ })),
235
+ child: Text ("WS" )),
236
+ ],
237
+ ),
238
+ ],
239
+ const SizedBox (height: 20 ),
196
240
ElevatedButton (
197
241
child: Text ('Register' ),
198
242
onPressed: () => _handleSave (context),
0 commit comments