will-play/lib/views/information/Information.dart

96 lines
2.5 KiB
Dart

// import 'package:flutter/material.dart';
// class InformationPage extends StatefulWidget {
// InformationPage({Key? key}) : super(key: key);
// @override
// State<InformationPage> createState() => _InformationPageState();
// }
// class _InformationPageState extends State<InformationPage> {
// @override
// Widget build(BuildContext context) {
// return Container(
// child: Text('aa'),
// );
// }
// }
import 'package:flutter/material.dart';
import 'package:web_socket_channel/io.dart';
class InformationPage extends StatefulWidget {
InformationPage({Key? key}) : super(key: key);
@override
_InformationPageState createState() => _InformationPageState();
}
class _InformationPageState extends State<InformationPage> {
TextEditingController _controller = TextEditingController();
late IOWebSocketChannel channel;
String _text = "";
@override
void initState() {
// 创建websocket连接
channel = IOWebSocketChannel.connect(
'ws://101.35.117.69:9093/chat/api/chat/room/${1}');
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("发现页面 WebSocket"),
),
body: Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
child: TextField(
controller: _controller,
decoration: InputDecoration(labelText: '发送消息'),
),
),
StreamBuilder(
stream: channel.stream,
builder: (context, snapshot) {
// 网络不通会走到这
if (snapshot.hasError) {
_text = "网络不通...";
} else if (snapshot.hasData) {
_text = "echo: ${snapshot.data}";
}
return Padding(
padding: const EdgeInsets.symmetric(vertical: 24.0),
child: Text(_text),
);
},
)
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _sendMessage,
tooltip: 'Send message',
child: Icon(Icons.send),
),
);
}
void _sendMessage() {
if (_controller.text.isNotEmpty) {
channel.sink.add(_controller.text);
}
}
@override
void dispose() {
channel.sink.close();
super.dispose();
}
}