Skip to content

Instantly share code, notes, and snippets.

@febritecno
Created October 14, 2022 06:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save febritecno/84c7953ba4be90a273f2dcc9fb9937b3 to your computer and use it in GitHub Desktop.
Save febritecno/84c7953ba4be90a273f2dcc9fb9937b3 to your computer and use it in GitHub Desktop.
Dart helper
// handle null and handle deepest data json
T? resolve<T>({
required Map<String, dynamic>? json,
required String path,
T? defaultValue,
}) {
try {
if (json == null) {
return defaultValue;
}
dynamic current = json;
path.split('.').forEach((segment) {
final maybeInt = int.tryParse(segment);
if (maybeInt != null && current is List<dynamic>) {
current = current[maybeInt];
} else if (current is Map<String, dynamic>) {
current = current[segment];
}
});
return (current as T?) ?? defaultValue;
} catch (error) {
return defaultValue;
}
}
T? isNull<T>(
dynamic value, {
defaultValue = "-",
}) {
try {
if (value == null) {
return defaultValue;
}
return (value as T?) ?? defaultValue;
} catch (error) {
return defaultValue;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment