applyDeeplink method
void
applyDeeplink(
- String params
)
Implementation
void applyDeeplink(String params) {
final parts = params.split(';');
final entries = parts.map(
(pair) {
try {
final [key, value] = pair.split(':');
return MapEntry(key, revive(value));
} catch (error) {
if (kDebugMode) {
print("WARNING: failed to revive $error\n\t$pair");
}
return null;
}
},
).nonNulls;
final map = unflatten(Map.fromEntries(entries));
for (final entry in map.entries) {
final [id, value] = [entry.key, entry.value];
final param = _params.items[id];
if (param == null) {
_params.onParamRegistered.firstWhere((it) => it.$1 == id).then(
(_) {
final param = _params.items[id];
if (param == null) return;
final serializer = param.serializer;
if (serializer == null) return;
final data = serializer.$deserialize(value);
_params.update(id, data);
},
);
} else {
final serializer = param.serializer;
if (serializer == null) return;
final data = serializer.$deserialize(value);
_params.update(id, data);
}
}
state = params;
ref.notifyListeners();
}