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

Flutter个人中心滑动面板报错:JsObject无法赋值给BuildContext

解决Flutter中"The argument type 'JsObject' can't be assigned to the parameter type 'BuildContext'"错误

问题根源

你遇到的错误是因为_panelBody方法里的context不是Flutter的BuildContext类型——而是来自dart:js库的全局JsObject类型对象,导致类型不匹配。导入dart:js不仅没用,反而加剧了命名冲突。另外,这个方法本身没有接收Widget树的上下文参数,无法获取正确的BuildContext。

解决办法

1. 给方法添加BuildContext参数

修改_panelBody方法,让它接收BuildContext作为参数,调用时传入当前Widget的上下文:

// Panel Body
SingleChildScrollView _panelBody(BuildContext context, ScrollController controller) {
  double hPadding = 40;
  return SingleChildScrollView(
    controller: controller,
    physics: const ClampingScrollPhysics(),
    child: Column(
      children: <Widget>[
        Container(
          padding: EdgeInsets.symmetric(horizontal: hPadding),
          height: MediaQuery.of(context).size.height * 0.35,
        )
      ],
    ),
  );
}

在build方法中调用时传入上下文:

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: _panelBody(context, _yourScrollController),
  );
}

2. 处理dart:js的命名冲突(如果必须保留该库)

如果项目确实需要用到dart:js,用别名导入避免全局context变量和Flutter上下文冲突:

import 'dart:js' as js;

之后访问dart:js的上下文时要写js.context,不会再和Flutter的BuildContext混淆。

3. 移除不必要的dart:js导入

如果你的项目不是Flutter Web项目,或者根本不需要dart:js的功能,直接删除该库的导入语句,这样context就会默认指向Flutter的BuildContext(前提是已按方法1添加参数)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:23:03