Skip to content

refactor(popup): 收敛蒙层配置到 TPopupOverlayConfig 并对齐圆角与动画时长 - #1037

Open
RSS1102 wants to merge 7 commits into
developfrom
rss1102/cnb-issue-72/integration/popup-review
Open

refactor(popup): 收敛蒙层配置到 TPopupOverlayConfig 并对齐圆角与动画时长#1037
RSS1102 wants to merge 7 commits into
developfrom
rss1102/cnb-issue-72/integration/popup-review

Conversation

@RSS1102

@RSS1102 RSS1102 commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

🤔 这个 PR 的性质是?

勾选规则:
1.只要有新增参数,就勾选”新特性提交“
2.只修改内部bug,未新增参数,才勾选”日常 bug 修复“
3.其他选项视具体改动判断

  • 日常 bug 修复
  • 新特性提交
  • 文档改进
  • 演示代码改进
  • 组件样式/交互改进
  • CI/CD 改进
  • 重构
  • 代码风格优化
  • 测试用例
  • 分支合并
  • 其他

🔗 相关 Issue

💡 需求背景和解决方案

  1. 收敛 Popup 蒙层散参。TPopupOptionsshowOverlaycloseOnOverlayClickoverlayColoroverlayOpacitymodalonOverlayClick 六个字段散落于构造器与各命名工厂,签名膨胀且与 Toast 的 TOverlayConfig 命名割裂。本次新增公开类 TPopupOverlayConfig,将这些参数统一收敛为单个 overlay 参数,并保持 showOverlaypreventTap 解耦;ActionSheet / Dialog / Drawer 同步适配新 API。

    TPopup.show(
      context,
      options: TPopupOptions.bottom(
        height: 300,
        overlay: TPopupOverlayConfig(
          showOverlay: true,
          preventTap: true,
          closeOnClick: false,
          color: Colors.black54,
          opacity: 0.5,
          onClick: () => print('overlay tapped'),
        ),
        child: ...,
      ),
    );
  2. 跨端 UI 对齐:left/right 默认无圆角(对齐官方全高矩形),保留通过 TPopupThemeData.panelRadius / TPopupOptions.radius 自定义圆角能力;默认动画时长由 240ms 调整为 300ms,与官方及其他浮层组件对齐。

  3. 补充组件示例(带标题及操作、自定义关闭按钮、嵌套弹窗),重写站点 Popup 文档与 API 文档。

关联 Spec:

  • specs/007-popup-overlay-config/
  • specs/008-popup-radius-duration-alignment/

📝 更新日志

  • breaking(popup): TPopupOptions 蒙层配置收敛为 TPopupOverlayConfig,原 showOverlay / closeOnOverlayClick / overlayColor / overlayOpacity / modal / onOverlayClick 六个参数迁移到 overlay 配置项,请按新 API 调整既有调用

  • breaking(popup): left/right 默认无圆角(对齐官方全高矩形)、默认动画时长由 240ms 调整为 300ms;如需 left/right 圆角可显式设置 radiusTPopupThemeData.panelRadius

  • 本条 PR 不需要纳入 Changelog

☑️ 请求合并前的自查清单

⚠️ 请自检并全部勾选全部选项⚠️

  • 标题遵循 Conventional Commits 格式:type(<scope>?): 修改描述
    示例:fix(TBottomTabBar): 修复 iconText 模式底部溢出
  • “相关 Issue”处带上修复的 Issue 链接或无关联 Issue
  • 已添加对应的 Spec 链接,或已由 Review 确认本次改动无需 Spec
  • 相关文档已补充或无须补充

RSS1102 and others added 7 commits August 19, 2026 00:47
- 新增公开类 TPopupOverlayConfig(showOverlay/color/opacity/preventTap/closeOnClick/onClick)
- TPopupOptions 移除 showOverlay/closeOnOverlayClick/overlayColor/overlayOpacity/modal/onOverlayClick 六个散参
- 新增可选参数 overlay(默认 null 时行为与现状一致)
- showOverlay 与 preventTap 解耦,支持显示蒙层但不拦截交互
- ActionSheet/Dialog/Drawer 适配新 API
- 更新测试与文档
- t_popup_types.dart: comment_references 告警,TOverlayConfig 不在作用域内,改用反引号
- 测试中 TPopupOptions 及其内部构造改用 const(prefer_const_constructors)
- 新增「组件示例」:带标题及操作、自定义关闭按钮
- 新增「嵌套弹窗」Demo
- 同步生成 example/assets/code 示例片段
- 重写 tdesign-site/docs/components/popup/README.md:
  对齐现网 API(onPressed/variant/colorScheme)与真实 Demo,移除旧版残留
- BorderRadius 局部变量补空判断以消除 unchecked_use_of_nullable_value
- 用 Navigator.of(...).pop() 替代 tester.widget<NavigatorState> 关闭浮层
- 断言路由动画时长前转换为 TransitionRoute
- BorderRadius.horizontal 补 const 关键字
BorderRadiusGeometry 无 topLeftRadius 等属性,需先经 resolve(TextDirection.ltr)
解析为具体 BorderRadius 后再判断内缘圆角,修复 flutter latest 下 analyze 报错。
@github-actions

Copy link
Copy Markdown
Contributor

完成

Web Demo

APK 下载

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant