小编use*_*251的帖子

Flutter 有状态小部件状态未初始化

我正在使用 Flutter 制作一个命令和控制应用程序,但遇到了一个奇怪的问题。该应用程序的主状态页面显示了一个有状态小部件列表,每个小部件都拥有一个 WebSocket 连接,该连接从连接的机器人平台流式传输状态数据。当机器人本身被硬编码时,这很有效。但是现在我正在动态添加它们(通过条形码扫描),只有第一个小部件显示状态。

使用调试器的进一步调查表明,这是因为仅为列表中的第一个小部件创建了状态。随后添加的窗口小部件越来越成功构建,但没有得到一个状态。这意味着除了添加的第一个小部件之外,不会调用 createState 。我检查了小部件本身是否确实被添加到列表中,并且它们每个都有唯一的哈希码。此外,IOWebSocketChannel 具有唯一的哈希码,并且所有小部件数据对于列表中的不同元素都是正确且唯一的。

关于可能导致此问题的任何想法?

HomePageState 的代码:

class HomePageState extends State<HomePage> {
  String submittedString = "";
  StateContainerState container;
  List<RobotSummary> robotList = [];
  List<String> robotIps = [];
  final GlobalKey<ScaffoldState> scaffoldKey = new GlobalKey<ScaffoldState>();

  void addRobotToList(String ipAddress) {
    var channel = new IOWebSocketChannel.connect('ws://' + container.slsData.slsIpAddress + ':' + container.slsData.wsPort);
    channel.sink.add("http://" + ipAddress);
    var newConnection = new RobotSummary(key: new UniqueKey(), channel: channel, ipAddress: ipAddress, state: -1, fullAddress: 'http://' + container.slsData.slsIpAddress + ':' + container.slsData.wsPort,); …
Run Code Online (Sandbox Code Playgroud)

stateful init flutter

5
推荐指数
1
解决办法
6061
查看次数

标签 统计

flutter ×1

init ×1

stateful ×1