renderDeepLink function
Adds the outcome of a deeplink.open payload to block, stage by
stage, so a link that goes nowhere says which step dropped it.
Implementation
void renderDeepLink(
LiveBlock block,
Map<String, Object?> payload,
PlatformLinks platform,
) {
block.note('${payload['uri']} → ${payload['path']}');
if (payload['registered'] != true) {
block.warning(
payload['usedFallback'] == true
? '${payload['path']} isn\'t registered — falling back to '
'${payload['target']}'
: '${payload['path']} isn\'t registered, and no fallbackRoute is '
'set — the unknown route handles it',
);
}
switch (payload['callback']) {
case 'continued':
block.note('onIncomingLink continued');
case 'stopped':
block.warning('onIncomingLink returned false, so nothing was routed');
case 'skipped':
block.note('onIncomingLink skipped');
}
final Object? query = payload['queryParameters'];
final String parameters = query is Map && query.isNotEmpty
? ' ${query.entries.map((e) => '${e.key}=${e.value}').join(' ')}'
: '';
if (payload['dry'] == true) {
block
..success('Would open ${payload['target']}$parameters')
..note('Nothing was sent to the app');
} else if (payload['routed'] == true) {
block.success(
'${payload['from'] ?? '-'} → ${payload['current'] ?? payload['target']}'
'$parameters',
);
} else {
block.note('Stayed on ${payload['current'] ?? '-'}');
}
renderPlatformReach(block, payload['uri'], platform);
}