Skip to content

bug: [移动端] MentionSessionController 命名参数以下划线开头导致编译失败 #698

Description

@HalfAnElephant

问题概述

MentionSessionController 构造函数声明了一个以下划线开头的命名参数:

MentionSessionController({
  required this._searchUsers,   // ← Dart 语法错误
  this.debounce = const Duration(milliseconds: 300),
});

Dart 语言规范禁止命名参数以下划线开头(analyzer 报错:"Named parameters can't start with an underscore"),且 _searchUsers 作为私有字段名对调用方不可寻址。结果:该库及其全部测试都无法编译。

影响

  • apps/mobile/packages/forum_app 编译失败,CI 门禁(ci-mobile)必然红灯。
  • 所有构造调用点传的都是 searchUsers:(topic_page.dart:114 及 mention_panel_test.dart / mention_session_test.dart 全部用例),与声明参数名不匹配,即使去掉下划线限制也无法绑定。

证据

复现

cd apps/mobile && flutter analyze packages/forum_app/lib/src/pages/topic/mention_session.dart

或运行任意 mention_session_test.dart / mention_panel_test.dart 用例。

预期行为

库与测试能够编译,searchUsers 参数可正常传入。

实际行为

编译失败(Named parameters can't start with an underscore)。

建议修复

将参数公开化并转发给私有字段:

MentionSessionController({
  required Future<List<MentionUser>> Function(String query) searchUsers,
  this.debounce = const Duration(milliseconds: 300),
}) : _searchUsers = searchUsers;

来源:OCR review session b0a6067d(HEAD~30..HEAD)critical 级发现。

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:mobile移动端 Flutteroryn:kind: 🐛 bugBehavior differs from the intended result.oryn:priority: 🟠 P1High-priority impact supported by the review.oryn:proof: 🔎 supportedEvidence supports this conclusion; see the report for source vs live proof.oryn:status: 🧭 needs inputA maintainer decision or additional information is required.priority:P1type:bug🐛 bugReported defect requiring investigation

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions