【发布时间】:2021-09-26 10:24:24
【问题描述】:
我有一个简单的客户端代码,我在其中尝试将 WebSocketChannel 实例传递给内部有状态小部件,并且由于某种原因,当我尝试运行代码时,应用程序崩溃并在屏幕上显示“意外的空值。另请参阅:https://flutter.dev/docs/testing/errors"。如果有人能向我解释为什么会发生这种情况以及如何解决它,我们将不胜感激。
代码:
import 'package:flutter/material.dart';
import 'package:web_socket_channel/web_socket_channel.dart';
class TestWidget extends StatefulWidget {
final WebSocketChannel channel;
const TestWidget(this.channel);
@override
_TestWidgetState createState() => _TestWidgetState();
}
class _TestWidgetState extends State<TestWidget> {
String buttonText = '';
_TestWidgetState() {
widget.channel.stream.listen((data){
setState(() {buttonText = data;});
});
}
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: (){widget.channel.sink.add('hello');},
child: Text(buttonText)
);
}
}
class App extends StatelessWidget {
final WebSocketChannel channel = WebSocketChannel.connect(
Uri.parse('ws://localhost:8000/')
);
@override
Widget build(BuildContext context) {
return MaterialApp(home: Scaffold(body:
TestWidget(channel)
));
}
}
void main() {
runApp(App());
}
提前感谢您的帮助。
【问题讨论】:
-
请发布您在运行此应用程序时看到的错误。更容易看出哪个对象实际上是
null。
标签: flutter dart websocket flutter-web