Future<String> task2() async {
  Duration three = const Duration(seconds: 3);
  String result;

  await Future.delayed(three, () {
    result = 'task 2 data';
  });
  return result;
}

必须先对不可为Null的局部变量‘Result’赋值,然后才能使用它.

现在,如果我在启动时为它赋值或添加一个空判断,该函数只返回该值,而不是预期的值task 2 data

有没有人能找出问题并帮我解决?

推荐答案

你需要这样拨打then:

await Future.delayed(Duration(seconds: 2)).then((_) {
      result = 'task 2 data';
});

whenComplete:

await Future.delayed(Duration(seconds: 2)).whenComplete(() => result = 'task 2 data');

Flutter相关问答推荐

Firebase Auth异常未被catch捕获

flutter -当使用SingleChildScrollView包装我的列小部件时,它不会填充整个高度

如何在容器小部件中的图像旁边添加文本?

Flutter :执行com.android.build.gradle.internal.tasks.MergeNativeLibsTask$MergeNativeLibsTaskWorkAction时出现故障

Flutter 渲染HTML和数学(LaTeX和Katex)

使索引[0]在ListViewBuilder中返回字符串1

在 flutter 的列中使用 Expanded 时出现渲染 Flex 错误

Flutter - Riverpod 2.0 - 如何访问 onDispose 回调?

Flutter Riverpod 没有捕获 List 的嵌套值变化

NotifierProvider 每次更新都会重新构建并且值不更新

在 Dart 中按土耳其语字母顺序对字符串进行排序

如何从 Flutter 中的 App2 远程点击 App1 中的按钮

如何防止键盘将内容向上推?

具有 BLOC 和存储库模式的 Flutter Workmanager

如何根据应用程序主题(深色和浅色)更改谷歌 map 的主题?

在不丢失游戏状态的情况下从 Flame 游戏导航到 Flutter 小部件

如何限制用户每 24 小时执行的操作数?

有什么方法可以将 ChangeNotifier 与 ValueListenableBuilder 一起使用

Flutter 小部件中的视图和逻辑分离

"!" 是什么意思该运算符在使用如下方式时意味着dart ?