Skip to content

fix(TNoticeBar): 修复水平滚动距离误用屏幕宽度并补全文档与测试 - #1032

Open
RSS1102 wants to merge 2 commits into
developfrom
rss1102/cnb-issue-79/fix/notice-bar-review
Open

fix(TNoticeBar): 修复水平滚动距离误用屏幕宽度并补全文档与测试#1032
RSS1102 wants to merge 2 commits into
developfrom
rss1102/cnb-issue-79/fix/notice-bar-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. 问题TNoticeBar 水平跑马灯在 _scroll() 中计算滚动总距离时误用屏幕宽度 MediaQuery.of(context).size.width,而非公告栏自身的可视区宽度,导致文本滚到尽头后要空转一大段才回绕,窄屏/宽屏表现不一致。
  2. 方案:滚动总距离改为「文本宽度 + 公告栏可视区宽度」,其中可视区宽度通过 _contentKey 测量(_getEmptyWidth());_getFontSize() 文本布局 maxWidth 同步改为可视区宽度,避免窄容器内文本按屏宽换行。同时移除冗余 getter _effectiveMarquee_effectiveInterval,统一使用 widget.marquee / widget.interval
  3. 文档/示例:站点 README API 表同步为当前 API(移除已不存在的 TNoticeBarStyle / TNoticeBarTheme / TNoticeBarType / onTap / interval:int / height / theme / style,补齐 onPressed / items / interval:Duration / TNoticeBarTapTarget / TNoticeBarThemeData / TNoticeBarVariant 等);将官方垂直滚动与自定义内容场景移入公开示例入口,并删除无小程序平台依据的「卡片顶部」Demo。
  4. 测试:新增水平滚动距离回归测试(断言最大滚动位置 ≈ 文本宽 + 可视区宽,显著小于 文本宽 + 屏幕宽),并将 variant 各档色值断言从「非空」收紧为具体 Token 色值。

设计文档见 specs/005-notice-bar-review/

📝 更新日志

  • fix(TNoticeBar): 修复水平跑马灯滚动距离计算误用屏幕宽度的问题,改为基于公告栏可视区宽度

  • 本条 PR 不需要纳入 Changelog

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

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

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

@github-actions

github-actions Bot commented Aug 18, 2026

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