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

如何在Stacked框架中为URL添加查询参数?

如何在Stacked框架中为URL添加查询参数?

我刚好在Stacked项目里处理过完全一样的查询参数需求,给你拆解下具体的实现步骤,都是亲测能用的:

1. 导航时携带查询参数

Stacked的RouterService其实已经内置了查询参数的支持,你不需要修改原有的/results路由路径,直接在导航时通过queryParams参数传递键值对就行:

// 先获取注入的RouterService实例
final routerService = locator<RouterService>();

// 把过滤条件组装成Map
final filterParams = {
  'color': 'blue',
  'size': 'large',
  'status': 'active',
};

// 导航到Results页面并携带参数
routerService.navigateTo(
  Routes.resultsView, // 这里填你定义的Results页面路由名称
  queryParams: filterParams,
);

执行这段代码后,URL就会自动变成/results?color=blue&size=large&status=active,完全符合你的需求。

2. 在页面ViewModel中接收并使用参数

接下来在Results页面的ViewModel里,你可以通过RouterService拿到当前路由的查询参数,然后用这些参数做结果过滤:

class ResultsViewModel extends BaseViewModel {
  final _routerService = locator<RouterService>();
  Map<String, String>? _currentFilters;

  @override
  void initialise() {
    // 获取当前路由的查询参数
    _currentFilters = _routerService.currentRoute?.queryParams;
    // 用参数执行过滤逻辑
    if (_currentFilters != null) {
      final color = _currentFilters!['color'];
      final size = _currentFilters!['size'];
      final status = _currentFilters!['status'];
      _filterResults(color, size, status);
    }
  }

  void _filterResults(String? color, String? size, String? status) {
    // 这里写你的结果过滤逻辑
    // 比如根据color、size等条件过滤客户数据
  }
}

3. 动态更新URL中的查询参数

如果用户在页面上调整过滤条件(比如切换颜色为red),想要同步更新URL的话,可以用replaceWith方法替换当前路由,这样不会在浏览器历史中新增多余的记录:

void updateFilter(String newColor) {
  // 保留原有参数,只更新颜色
  final updatedParams = {
    ..._currentFilters!,
    'color': newColor,
  };
  // 替换当前路由,更新URL
  _routerService.replaceWith(
    Routes.resultsView,
    queryParams: updatedParams,
  );
  // 更新过滤结果并通知UI刷新
  _filterResults(newColor, updatedParams['size'], updatedParams['status']);
  notifyListeners();
}

最后补充个小提示:如果是外部用户直接访问带查询参数的URL(比如从邮件链接打开/results?status=active),Stacked会自动解析这些参数,ViewModel初始化时一样能正常获取,不需要额外修改路由定义。

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 14:48:11