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

Flutter Android端BottomSheet下拉无法关闭问题求助

修复Android端showModalBottomSheet下拉无法关闭的问题

你的问题出在BottomSheet内部嵌套了Scaffold,加上布局层级的影响,导致拖拽事件被内部组件拦截,使得Android端的拖拽关闭逻辑失效(iOS端因手势处理机制不同可正常工作)。

修复方案:

  1. 移除内部Scaffold:BottomSheet依托于当前页面的导航上下文存在,嵌套额外的Scaffold会消费拖拽手势,导致底层BottomSheet的拖拽关闭逻辑无法触发。
  2. 简化布局层级:去掉冗余的容器组件,确保BottomSheet的顶部拖拽区域能正常接收手势事件。

修改后的代码:

void addBankAccountBottomSheet(String? navigateBackRoute) {
  showModalBottomSheet(
    context: StackedService.navigatorKey!.currentContext!,
    shape: RoundedRectangleBorder(
      borderRadius: BorderRadius.vertical(
        top: Radius.circular(16.0),
      ),
    ),
    isScrollControlled: true,
    isDismissible: true,
    enableDrag: true,
    builder: (BuildContext context) {
      return FractionallySizedBox(
        heightFactor: 0.5, 
        child: Padding(
          padding: EdgeInsets.all(25.0),
          child: Column(
            children: [
              Expanded(
                child: SingleChildScrollView(
                  child: Column(
                    children: [
                      Text("Add Bank Account"),
                      TextField(decoration: InputDecoration(labelText: "Account Number")),
                      TextField(decoration: InputDecoration(labelText: "Nickname")),
                    ],
                  ),
                ),
              ),
              SizedBox(height: 16.0),
              Row(
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: [
                  TextButton(
                    onPressed: () => Navigator.of(context).pop(),
                    child: Text("Cancel"),
                  ),
                  TextButton(
                    onPressed: () {
                      // Submit action
                    },
                    child: Text("Next"),
                  ),
                ],
              ),
            ],
          ),
        ),
      );
    },
  );
}

关键修改说明:

  • 移除了内部的Scaffold组件,直接用Padding包裹内容,避免手势被拦截。
  • 保留原有布局的核心逻辑,仅删除冗余的层级结构。

修改后测试Android端,下拉BottomSheet即可正常触发关闭操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:22:32