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

Flutter CountryCodePicker如何移除关闭图标并实现点击弹窗外部关闭

Flutter CountryCodePicker 组件定制实现方案

两个交互需求均可通过组件内置配置参数直接实现,无需修改插件源码:

  • 移除弹窗自带关闭图标:设置showCloseIcon: false即可隐藏弹窗右上角默认的关闭控件。若当前使用的插件版本无该参数,可通过自定义appBar属性传入无关闭按钮的AppBar实现同等效果。
  • 点击弹窗外部关闭:设置barrierDismissible: true即可开启点击遮罩层关闭弹窗的交互,该属性为Flutter弹窗的通用配置,开启后用户点击弹窗以外的遮罩区域会自动关闭选择弹窗。

修改后完整示例代码

CountryCodePicker(
  // 隐藏弹窗默认关闭图标
  showCloseIcon: false,
  // 开启点击外部区域关闭弹窗
  barrierDismissible: true,
  dialogTextStyle: const TextStyle(color: Colors.black54,fontWeight: FontWeight.w100),
  showOnlyCountryWhenClosed: false,
  dialogSize: Size(
      ScreenUtil().setWidth(220), ScreenUtil().setHeight(400)),
  onChanged: (code) {
    print(code);
  },
  boxDecoration: BoxDecoration(
    borderRadius: BorderRadius.circular(8),
    boxShadow:  [
      BoxShadow(
        color: Colors.black54,
        offset: const Offset(0.5, 0.5),
        blurRadius: 50.0.sp,
        spreadRadius: 17.0.sp,
      ),
      const BoxShadow(
        color: Colors.white,
        offset: Offset(0.0, 0.0),
        blurRadius: 0.0,
        spreadRadius: 0.0,
      ),
    ],
  ),
  textStyle: TextStyle(fontSize: 13.0.sp, color: Colors.black54),
  initialSelection: 'IN',
  favorite: const ['+91', 'IN'],
  alignLeft: true,
  onInit: (code) => print("on init ${code?.name} ${code?.dialCode} ${code?.name}"),
)

低版本适配方案

如果使用的是低于2.0版本的country_code_picker,找不到showCloseIcon参数,可通过自定义弹窗AppBar的方式隐藏关闭按钮,添加如下配置即可:

appBar: AppBar(
  automaticallyImplyLeading: false,
  title: const Text("选择国家/地区代码"),
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:39:24