Back to skills
extension
Category: Development & EngineeringNo API key required

add-route-context

Add a route context logging feature to Flutter pages, supporting AI context recognition for parameters such as dates. This is used when you need the AI assistant to obtain the page state (such as date, ID, etc.) through the 'ask about current context' function. Applicable scenarios: (1) Date-driven pages (diaries, events, calendars, etc.), (2) ID-driven pages (user details, order details, etc.), (3) Any scenario where AI needs to understand the current page parameters

personAuthor: jakexiaohubgithub

Add Route Context

为Flutter页面添加路由上下文记录,使AI助手能理解用户当前查看的页面参数。

Workflow

1. Analyze Target File

Read the target file and identify:

  • State class name
  • Parameter variable (e.g., _selectedDate, _userId)
  • Parameter change method (e.g., _onDateChanged)
  • Initialization method (e.g., initState, _initializeService)

2. Add RouteHistoryManager Import

import 'package:Memento/core/route/route_history_manager.dart';

3. Create Update Method

For DateTime parameter:

/// 更新路由上下文,使"询问当前上下文"功能能获取到当前日期
void _updateRouteContext(DateTime date) {
  final dateStr = '${date.year}-${date.month.toString().padLeft(2, '0')}-${date.day.toString().padLeft(2, '0')}';
  RouteHistoryManager.updateCurrentContext(
    pageId: "/route_name",
    title: '页面标题 - $dateStr',
    params: {'date': dateStr},
  );
}

For custom parameter:

/// 更新路由上下文
void _updateRouteContext(String paramValue) {
  RouteHistoryManager.updateCurrentContext(
    pageId: "/route_name",
    title: '页面标题 - $paramValue',
    params: {'paramName': paramValue},
  );
}

4. Call in Initialization

Add call at end of initialization method:

Future<void> _initializeService() async {
  // ... existing code ...

  // 初始化时设置路由上下文
  _updateRouteContext(_initialParam);
}

5. Call on Parameter Change

Add call in parameter change handler:

void _onParamChanged(ParamType newParam) {
  if (newParam == _currentParam) return;

  setState(() {
    _currentParam = newParam;
  });
  // ... existing code ...

  // 更新路由上下文
  _updateRouteContext(newParam);
}

6. Update Route Parser

Add route template to lib/core/action/built_in/ask_context_action/route_parser.dart:

static const Map<String, String> _routeTemplates = {
  // ... existing routes ...

  // 插件名称
  '/route_name': '用户正在查看 {paramName} 的XXX',
};

DateTime parameter example:

'/activity_timeline': '用户正在查看 {date} 的活动时间轴',

Custom parameter example:

'/user_profile': '用户正在查看 {userId} 的用户资料',

Detection Patterns

DateTime Variables

Look for variables matching:

  • Names: _selectedDate, _currentDate, _focusedDay, date
  • Type: DateTime

Look for methods matching:

  • Names: _onDateChanged, _onDayChanged, _selectDate
  • Parameter type: DateTime

Custom Parameters

Look for variables matching the --param argument name.

Result

After execution:

在页面加载时:

  • AI上下文:用户正在查看 2025-12-22 的活动时间轴

在参数变化时:

  • AI上下文自动更新:用户正在查看 2025-12-21 的活动时间轴

Notes

  • Extract update logic to separate method to avoid duplication
  • Use Chinese comments matching existing codebase style
  • Format dates as YYYY-MM-DD for consistency
  • Route parser uses RegExp(r'\{(\w+)\}') for placeholder replacement
  • Verify with flutter analyze after changes