You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart中Duration?无法赋值给Duration参数的问题如何解决?

解决Dart中Duration?无法分配给Duration的类型错误

这个错误源于Dart的空安全机制:你传入的duration是可空类型Duration?(可能是Duration对象或者null),但toastDuration参数要求的是非空的Duration类型,两者类型不兼容导致报错。

下面是几种实用的解决方法:

  • 非空断言(确定duration不会为null时用)
    如果你能保证duration在传到这里的时候绝对不是null(比如已经在代码前面做过非空判断),可以用!断言强制转为非空类型:

    toastDuration: duration!,
    

    注意:如果duration实际是null,用这个方法会直接触发运行时错误,所以一定要确保变量非空。

  • 提供默认值(最安全的通用方案)
    使用??运算符,当duration为null时自动使用你指定的默认Duration值:

    toastDuration: duration ?? const Duration(seconds: 2),
    

    这里默认设置为2秒,你可以根据需求改成自己需要的时长。

  • 提前处理变量(更清晰的逻辑控制)
    先把可空的duration转为非空变量再传入,适合需要复杂判断的场景:

    // 先处理出非空的Duration对象
    final targetDuration = duration ?? const Duration(seconds: 3);
    // 再传入参数
    toastDuration: targetDuration,
    

    或者用条件判断的方式:

    Duration targetDuration;
    if (duration != null) {
      targetDuration = duration;
    } else {
      targetDuration = const Duration(seconds: 3);
    }
    toastDuration: targetDuration,
    

内容的提问来源于stack exchange,提问作者Muhammad Jahanzaib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 15:35:20