目前我正按照chat gpt的建议在DART中使用这个;-)但是有没有更好的方式等待NOT Null?(PS:这是纯DART后端代码,所以Ffltter FutureBuilder是不可能的)

  String? command;

  Stream<({Message message})> detect(List<Message> messages) async* {
    while (command == null) {
      await Future.delayed(const Duration(milliseconds: 100));
    }
  ...

谢谢!

推荐答案

您可以将commanddart:async改为Completer:

final Completer<String> command = Completer<String>();

Stream<({Message message})> detect(List<Message> messages) async* {
  await command.future;
  // ...
}

当你想给你调用的完成器赋值时:

command.complete(yourValue);

与其做某事

command = yourValue;

Dart相关问答推荐

Dart:判断泛型函数的类型 T

Flutter 网页打开网址并获取数据

Flutter:Firebase 基本查询或基本搜索代码

可调用云函数错误:响应缺少数据字段

try 部署到 Google AppEngine 时出现 Dev_appserver.py 错误

Flutter:将照片或图像显示为模态弹出窗口

Flutter-创建value和name数组

Flatter有数据绑定吗?

了解Dart private class

谷歌dart Regions?

dart:web_gl: 渲染警告:texture bound to texture unit 0 is not renderable

如何减少 ListView.builder 中 RaisedButton 的宽度?

如何从 ExpansionTile 的标题中删除默认填充

Flutter - 在 POST 请求中处理状态码 302

Flutter – 连续两个文本,左边一个溢出

在 Dart 中修改类内的最终字段

比较在 Dart 中创建单例的方法

Dart 中的异步可迭代映射

Dart 中的 List.shuffle()?

判断dart中的字符串是否为数字