import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:web_socket_channel/io.dart';
void main() => runApp(App());
class App extends StatelessWidget {
@OverRide
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Chat(),
);
}
}
class Chat extends StatefulWidget {
@OverRide
State createState() => _ChatState();
}
class _ChatState extends State {
final userChannel = IOWebSocketChannel.connect(
'ws://YOUR_SERVER_IP:8000/ws/user1'
);
final adminChannel = IOWebSocketChannel.connect(
'ws://YOUR_SERVER_IP:8000/admin/ultra_secret_key_123'
);
TextEditingController c = TextEditingController();
List msgs = [];
@OverRide
void initState() {
super.initState();
userChannel.stream.listen((d) {
setState(() {
msgs.add(jsonDecode(d));
});
});
}
void send() {
userChannel.sink.add(jsonEncode({
"to": "user2",
"text": c.text
}));
}
void ban(String user) {
adminChannel.sink.add(jsonEncode({
"action": "ban",
"user_id": user
}));
}
@OverRide
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Color(0xFF2C2C2E),
appBar: AppBar(title: Text("Chat")),
body: Column(
children: [
Expanded(
child: ListView(
children: msgs.map((m) {
return Container(
margin: EdgeInsets.all(8),
padding: EdgeInsets.all(10),
color: Colors.white,
child: Text("${m['from']} → ${m['text']}"),
);
}).toList(),
),
),
Row(
children: [
Expanded(child: TextField(controller: c)),
IconButton(
icon: Icon(Icons.send),
onPressed: send,
)
],
)
],
),
);
}
}
import 'package:flutter/material.dart';
import 'dart:convert';
import 'package:web_socket_channel/io.dart';
void main() => runApp(App());
class App extends StatelessWidget {
@OverRide
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Chat(),
);
}
}
class Chat extends StatefulWidget {
@OverRide
State createState() => _ChatState();
}
class _ChatState extends State {
final userChannel = IOWebSocketChannel.connect(
'ws://YOUR_SERVER_IP:8000/ws/user1'
);
final adminChannel = IOWebSocketChannel.connect(
'ws://YOUR_SERVER_IP:8000/admin/ultra_secret_key_123'
);
TextEditingController c = TextEditingController();
List msgs = [];
@OverRide
void initState() {
super.initState();
}
void send() {
userChannel.sink.add(jsonEncode({
"to": "user2",
"text": c.text
}));
}
void ban(String user) {
adminChannel.sink.add(jsonEncode({
"action": "ban",
"user_id": user
}));
}
@OverRide
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Color(0xFF2C2C2E),
appBar: AppBar(title: Text("Chat")),
body: Column(
children: [
}
}