blob: 6cbdcc479216ca0545d2cceb20d384b461166ae4 [file] [log] [blame]
// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
dynamic toJsonable(dynamic obj) {
if (obj is String ||
obj is int ||
obj is bool ||
obj is Map<dynamic, dynamic> ||
obj is List<dynamic> ||
obj == null) {
return obj;
}
return '$obj';
}
String? getStringArg(Map<String, dynamic> args, String name,
{bool required = false}) {
if (required && !args.containsKey(name)) {
throw ArgumentError('$name is required');
}
final val = args[name];
if (val != null && val is! String) {
throw ArgumentError('$name is not a String');
}
return val as String?;
}
bool? getBoolArg(Map<String, dynamic> args, String name,
{bool required = false}) {
if (required && !args.containsKey(name)) {
throw ArgumentError('$name is required');
}
final val = args[name];
if (val != null && val is! bool) throw ArgumentError('$name is not a bool');
return val as bool?;
}
int? getIntArg(Map<String, dynamic> args, String name,
{bool required = false}) {
if (required && !args.containsKey(name)) {
throw ArgumentError('$name is required');
}
final val = args[name];
if (val != null && val is! int) throw ArgumentError('$name is not an int');
return val as int?;
}