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

Flutter使用GetX弹出bottomSheet时报Null check operator空值错误

GetX 调用 bottomSheet 空指针报错解决方案

报错原因

该_CastError: Null check operator used on a null value报错是GetX底层找不到可用的导航上下文导致,绝大多数场景是项目根入口未使用GetX提供的GetMaterialApp组件,普通MaterialApp不会为GetX的弹窗、路由等API提供所需的上下文环境。

解决方案

步骤1:替换根入口组件

修改main.dart中的启动代码,将根组件从MaterialApp替换为GetMaterialApp,示例如下:

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    // 替换此处的MaterialApp为GetMaterialApp
    return GetMaterialApp(
      title: '应用名称',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: const HomePage(),
    );
  }
}

步骤2:(可选)补充上下文参数

如果替换后仍有报错,可在调用Get.bottomSheet时手动传入当前上下文,修改后的代码如下:

GestureDetector(
  onTap:(){
    Get.bottomSheet(
      Container(
        child: Wrap(
            children:<Widget>[
              ListTile(
                leading: Icon(Icons.wb_incandescent),
                title: Text("Testing"),
                onTap: () => Get.changeTheme(ThemeData.light()),
              ),
              ListTile(
                leading: Icon(Icons.wb_incandescent),
                title: Text("Testing"),
                onTap: () => Get.changeTheme(ThemeData.dark()),
              ),
            ]
        ),
      ),
      // 补充当前上下文参数
      context: context,
    );
  },
  child: Container(
    width: 30.0,
    height: 30.0,
    decoration: BoxDecoration(
      color: Color(0xFF1D265F),
      borderRadius: BorderRadius.circular(80.0),
    ),
    child: LayoutBuilder(
      builder: (context, constraint) {
        return Icon(
          Icons.info_outline_rounded,
          color: widget.cardContent.cardColor,
          size: constraint.biggest.height,
        );
      },
    ),
  ),
),

做完以上两步即可正常触发bottomSheet弹窗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:54:01