11import 'package:flutter/material.dart' ;
22import 'package:shared_preferences/shared_preferences.dart' ;
33import 'package:sip_ua/sip_ua.dart' ;
4+ import 'package:flutter/foundation.dart' show kIsWeb;
45
56class RegisterWidget extends StatefulWidget {
67 final SIPUAHelper ? _helper;
@@ -14,6 +15,7 @@ class RegisterWidget extends StatefulWidget {
1415class _MyRegisterWidget extends State <RegisterWidget >
1516 implements SipUaHelperListener {
1617 final TextEditingController _passwordController = TextEditingController ();
18+ final TextEditingController _portController = TextEditingController ();
1719 final TextEditingController _wsUriController = TextEditingController ();
1820 final TextEditingController _sipUriController = TextEditingController ();
1921 final TextEditingController _displayNameController = TextEditingController ();
@@ -26,6 +28,8 @@ class _MyRegisterWidget extends State<RegisterWidget>
2628 late SharedPreferences _preferences;
2729 late RegistrationState _registerState;
2830
31+ TransportType _selectedTransport = TransportType .TCP ;
32+
2933 SIPUAHelper ? get helper => widget._helper;
3034
3135 @override
@@ -34,6 +38,9 @@ class _MyRegisterWidget extends State<RegisterWidget>
3438 _registerState = helper! .registerState;
3539 helper! .addSipUaHelperListener (this );
3640 _loadSettings ();
41+ if (kIsWeb) {
42+ _selectedTransport = TransportType .WS ;
43+ }
3744 }
3845
3946 @override
@@ -56,6 +63,7 @@ class _MyRegisterWidget extends State<RegisterWidget>
5663 void _loadSettings () async {
5764 _preferences = await SharedPreferences .getInstance ();
5865 setState (() {
66+ _portController.text = '5060' ;
5967 _wsUriController.text =
6068 _preferences.getString ('ws_uri' ) ?? 'wss://tryit.jssip.net:10443' ;
6169 _sipUriController.text =
@@ -69,6 +77,7 @@ class _MyRegisterWidget extends State<RegisterWidget>
6977 }
7078
7179 void _saveSettings () {
80+ _preferences.setString ('port' , _portController.text);
7281 _preferences.setString ('ws_uri' , _wsUriController.text);
7382 _preferences.setString ('sip_uri' , _sipUriController.text);
7483 _preferences.setString ('display_name' , _displayNameController.text);
@@ -113,12 +122,15 @@ class _MyRegisterWidget extends State<RegisterWidget>
113122
114123 UaSettings settings = UaSettings ();
115124
116- settings.webSocketUrl = _wsUriController .text;
125+ settings.port = _portController .text;
117126 settings.webSocketSettings.extraHeaders = _wsExtraHeaders;
118127 settings.webSocketSettings.allowBadCertificate = true ;
119128 //settings.webSocketSettings.userAgent = 'Dart/2.8 (dart:io) for OpenSIPS.';
120-
129+ settings.tcpSocketSettings.allowBadCertificate = true ;
130+ settings.transportType = _selectedTransport;
121131 settings.uri = _sipUriController.text;
132+ settings.webSocketUrl = _wsUriController.text;
133+ settings.host = _sipUriController.text.split ('@' )[1 ];
122134 settings.authorizationUser = _authorizationUserController.text;
123135 settings.password = _passwordController.text;
124136 settings.displayName = _displayNameController.text;
@@ -143,14 +155,24 @@ class _MyRegisterWidget extends State<RegisterWidget>
143155 style: TextStyle (fontSize: 18 , color: Colors .black54),
144156 ),
145157 ),
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+ ],
154176 SizedBox (height: 20 ),
155177 Text ('SIP URI:' ),
156178 TextFormField (
@@ -192,7 +214,29 @@ class _MyRegisterWidget extends State<RegisterWidget>
192214 hintText: _displayNameController.text.isEmpty ? '[Empty]' : null ,
193215 ),
194216 ),
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 ),
196240 ElevatedButton (
197241 child: Text ('Register' ),
198242 onPressed: () => _handleSave (context),
0 commit comments