@@ -13,8 +13,14 @@ import 'package:quickblox_sdk/quickblox_sdk.dart';
1313import 'package:quickblox_sdk_example/credentials.dart' ;
1414import 'package:quickblox_sdk_example/utils/dialog_utils.dart' ;
1515import 'package:quickblox_sdk_example/utils/snackbar_utils.dart' ;
16+ import 'package:quickblox_sdk_example/widgets/blue_app_bar.dart' ;
17+ import 'package:quickblox_sdk_example/widgets/blue_button.dart' ;
1618
1719class ChatScreen extends StatefulWidget {
20+ static show (BuildContext context) {
21+ Navigator .push (context, MaterialPageRoute (builder: (BuildContext context) => ChatScreen ()));
22+ }
23+
1824 @override
1925 State <StatefulWidget > createState () => _ChatScreenState ();
2026}
@@ -36,6 +42,12 @@ class _ChatScreenState extends State<ChatScreen> with WidgetsBindingObserver {
3642 StreamSubscription ? _reconnectionFailedSubscription;
3743 StreamSubscription ? _reconnectionSuccessSubscription;
3844
45+ @override
46+ void initState () {
47+ super .initState ();
48+ QB .settings.enableXMPPLogging ();
49+ }
50+
3951 @override
4052 void dispose () {
4153 super .dispose ();
@@ -56,61 +68,61 @@ class _ChatScreenState extends State<ChatScreen> with WidgetsBindingObserver {
5668 Widget build (BuildContext context) {
5769 return Scaffold (
5870 key: _scaffoldKey,
59- appBar: _buildAppBar ( ),
71+ appBar: BlueAppBar ( 'Chat' ),
6072 body: Center (
6173 child: SingleChildScrollView (
6274 child: Column (children: [
63- _buildButton ('connect' , () => connect ()),
64- _buildButton ('disconnect' , () => disconnect ()),
65- _buildButton ('is connected' , () => isConnected ()),
66- _buildButton ('ping server' , () => pingServer ()),
67- _buildButton ('ping user' , () => pingUser ()),
68- _buildButton ('get dialogs' , () => getDialogs ()),
69- _buildButton ('get dialogs count' , () => getDialogsCount ()),
70- _buildButton ('update dialog' , () => updateDialog ()),
71- _buildButton ('create dialog' , () => createDialog ()),
72- _buildButton ('delete dialog' , () => deleteDialog ()),
73- _buildButton ('leave dialog' , () => leaveDialog ()),
74- _buildButton ('join dialog' , () => joinDialog ()),
75- _buildButton ('get online users' , () => getOnlineUsers ()),
76- _buildButton ('send message' , () => sendMessage ()),
77- _buildButton ('send system message' , () => sendSystemMessage ()),
78- _buildButton ('subscribe message events' , () {
75+ BlueButton ('connect' , () => connect ()),
76+ BlueButton ('disconnect' , () => disconnect ()),
77+ BlueButton ('is connected' , () => isConnected ()),
78+ BlueButton ('ping server' , () => pingServer ()),
79+ BlueButton ('ping user' , () => pingUser ()),
80+ BlueButton ('get dialogs' , () => getDialogs ()),
81+ BlueButton ('get dialogs count' , () => getDialogsCount ()),
82+ BlueButton ('update dialog' , () => updateDialog ()),
83+ BlueButton ('create dialog' , () => createDialog ()),
84+ BlueButton ('delete dialog' , () => deleteDialog ()),
85+ BlueButton ('leave dialog' , () => leaveDialog ()),
86+ BlueButton ('join dialog' , () => joinDialog ()),
87+ BlueButton ('get online users' , () => getOnlineUsers ()),
88+ BlueButton ('send message' , () => sendMessage ()),
89+ BlueButton ('send system message' , () => sendSystemMessage ()),
90+ BlueButton ('subscribe message events' , () {
7991 subscribeNewMessage ();
8092 subscribeSystemMessage ();
8193 }),
82- _buildButton ('unsubscribe message events' , () {
94+ BlueButton ('unsubscribe message events' , () {
8395 unsubscribeNewMessage ();
8496 unsubscribeSystemMessage ();
8597 }),
86- _buildButton ('mark message read' , () => markMessageRead ()),
87- _buildButton ('mark message delivered' , () => markMessageDelivered ()),
88- _buildButton ('subscribe message status' , () {
98+ BlueButton ('mark message read' , () => markMessageRead ()),
99+ BlueButton ('mark message delivered' , () => markMessageDelivered ()),
100+ BlueButton ('subscribe message status' , () {
89101 subscribeMessageDelivered ();
90102 subscribeMessageRead ();
91103 }),
92- _buildButton ('unsubscribe message status' , () {
104+ BlueButton ('unsubscribe message status' , () {
93105 unsubscribeDeliveredMessage ();
94106 unsubscribeReadMessage ();
95107 }),
96- _buildButton ('send is typing' , () => sendIsTyping ()),
97- _buildButton ('send stopped typing' , () => sendStoppedTyping ()),
98- _buildButton ('subscribe typing' , () {
108+ BlueButton ('send is typing' , () => sendIsTyping ()),
109+ BlueButton ('send stopped typing' , () => sendStoppedTyping ()),
110+ BlueButton ('subscribe typing' , () {
99111 subscribeUserTyping ();
100112 subscribeUserStopTyping ();
101113 }),
102- _buildButton ('unsubscribe typing' , () {
114+ BlueButton ('unsubscribe typing' , () {
103115 unsubscribeUserTyping ();
104116 unsubscribeUserStopTyping ();
105117 }),
106- _buildButton ('get dialog messages' , () => getDialogMessages ()),
107- _buildButton ('subscribe event connections' , () {
118+ BlueButton ('get dialog messages' , () => getDialogMessages ()),
119+ BlueButton ('subscribe event connections' , () {
108120 subscribeConnected ();
109121 subscribeConnectionClosed ();
110122 subscribeReconnectionFailed ();
111123 subscribeReconnectionSuccess ();
112124 }),
113- _buildButton ('unsubscribe event connections' , () {
125+ BlueButton ('unsubscribe event connections' , () {
114126 unsubscribeConnected ();
115127 unsubscribeConnectionClosed ();
116128 unsubscribeReconnectionFailed ();
@@ -119,22 +131,6 @@ class _ChatScreenState extends State<ChatScreen> with WidgetsBindingObserver {
119131 ]))));
120132 }
121133
122- PreferredSizeWidget _buildAppBar () {
123- return AppBar (
124- title: const Text ('Chat' ),
125- centerTitle: true ,
126- leading: IconButton (icon: Icon (Icons .arrow_back), onPressed: () => Navigator .of (context).pop ()));
127- }
128-
129- Widget _buildButton (String title, Function ? callback) {
130- return MaterialButton (
131- minWidth: 200 ,
132- child: Text (title),
133- color: Theme .of (context).primaryColor,
134- textColor: Colors .white,
135- onPressed: () => callback? .call ());
136- }
137-
138134 void connect () async {
139135 try {
140136 await QB .chat.connect (LOGGED_USER_ID , USER_PASSWORD );
0 commit comments