evaluateTriggers method

Future<List<WidgetEntry>> evaluateTriggers(
  1. TriggerContext context
)

Evaluate triggers and get matching widgets.

On network failure, returns the last cached trigger evaluation when a cache has been configured. Throws if there is no cache fallback.

Implementation

Future<List<WidgetEntry>> evaluateTriggers(TriggerContext context) async {
  const cacheKey = 'evaluateTriggers';
  try {
    final uri = Uri.parse('$baseUrl/api/widgets/evaluate');
    final response = await _client.post(
      uri,
      headers: _postHeaders,
      body: json.encode(context.toJson()),
    );
    _checkResponse(response);
    await cache?.save(cacheKey, response.body);
    return WidgetResponse.fromJson(
            json.decode(response.body) as Map<String, dynamic>)
        .widgets;
  } catch (_) {
    final cached = await cache?.load(cacheKey);
    if (cached != null) return cached;
    rethrow;
  }
}