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

Mac版Android Studio运行Flutter应用时showSnackBar红线报错怎么解决?

修复Flutter中显示剪贴板提示SnackBar的报错

针对你的代码和报错情况,给出以下修复步骤:

核心问题与修复点

  1. 弃用API替换
    Scaffold.of(context).showSnackBar在Flutter 2.0+版本已被弃用,官方推荐使用ScaffoldMessenger.of(context)来管理SnackBar,这是导致报错的主要原因之一。

  2. SnackBar内容类型错误
    lang.copiedToClipboard(text)返回的是字符串,但SnackBar的content参数要求传入Widget类型,必须用Text组件包裹该字符串。

  3. 代码语法不完整
    你的原始代码缺少函数闭合的大括号,需要补全。同时建议明确指定Future的返回类型为void,避免类型警告。

修复后的完整代码

Future<void> showCopiedToClipboard(BuildContext context, String text) async {
  final lang = Language.of(context);
  await FlutterClipboard.copy(text);
  final contentText = lang.copiedToClipboard(text);
  
  if (ScaffoldMessenger.maybeOf(context) != null) {
    ScaffoldMessenger.of(context).showSnackBar(
      SnackBar(
        content: Text(contentText),
        backgroundColor: Theme.of(context).scaffoldBackgroundColor,
      ),
    );
  }
}

额外排查步骤

  • 执行flutter clean清除项目缓存,再运行flutter pub get确保依赖包正确加载
  • 确认调用该方法的context处于Scaffold组件的子树中,如果不是,可通过Builder组件获取正确的子context,示例:
Builder(
  builder: (context) {
    return ElevatedButton(
      onPressed: () => showCopiedToClipboard(context, "文本内容"),
      child: Text("复制"),
    );
  },
)

内容的提问来源于stack exchange,提问作者Zohaib Arsalan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:00:28