MST
星途 面试题库

面试题:Flutter异步编程中如何避免Future空指针异常陷阱

在Flutter异步编程里,我们经常使用Future来处理异步操作。假设你有一个返回Future的函数,该函数可能返回null值,描述一下如何避免在使用该Future结果时出现空指针异常,并且给出相关代码示例。
26.0万 热度难度
前端开发Flutter

知识考点

AI 面试

面试题答案

一键面试
  1. 使用await结合if判断
    • 当使用await获取Future的结果时,先对结果进行空值判断。
    • 示例代码如下:
Future<String?> fetchData() async {
  // 模拟异步操作,这里简单返回null
  return null;
}

void main() async {
  String? result = await fetchData();
  if (result != null) {
    print(result);
  } else {
    print('数据为空');
  }
}
  1. 使用then方法结合null aware运算符
    • 使用Futurethen方法来处理结果,并使用null aware运算符?.
    • 示例代码如下:
Future<String?> fetchData() async {
  // 模拟异步操作,这里简单返回null
  return null;
}

void main() {
  fetchData().then((result) => result?.length).then((length) {
    if (length != null) {
      print('数据长度: $length');
    } else {
      print('数据为空');
    }
  });
}
  1. 使用FutureOr类型注解和whenComplete
    • 函数可以返回FutureOr类型,结合whenComplete来处理可能的空值情况。
    • 示例代码如下:
FutureOr<String?> fetchData() {
  // 模拟异步操作,这里简单返回null
  return null;
}

void main() async {
  String? result;
  await fetchData().whenComplete(() => result = null);
  if (result != null) {
    print(result);
  } else {
    print('数据为空');
  }
}