memberGet method

  1. @override
dynamic memberGet(
  1. String id, {
  2. String? from,
  3. bool isRecursive = false,
  4. bool ignoreUndefined = false,
})
override

Fetch a member by the id, in the form of

object.id

id must be of String type.

Implementation

@override
dynamic memberGet(String id,
    {String? from, bool isRecursive = false, bool ignoreUndefined = false}) {
  switch (id) {
    case 'Future':
      return ({positionalArgs, namedArgs}) {
        final HTFunction func = positionalArgs.first;
        return Future(() => func.call());
      };
    case 'Future.wait':
      return ({positionalArgs, namedArgs}) {
        final futures = List<Future<dynamic>>.from(positionalArgs.first);
        // final HTFunction? func = namedArgs['cleanUp'];
        return Future.wait(futures);
        // , cleanUp: (value) {
        //   if (func != null) func.call(positionalArgs: [value]);
        // });
      };
    case 'Future.value':
      return ({object, positionalArgs, namedArgs}) {
        return Future.value(positionalArgs.first);
      };
    case 'Future.delayed':
      return ({object, positionalArgs, namedArgs}) {
        return Future.delayed(
            Duration(milliseconds: (positionalArgs[0] * 1000).truncate()),
            () => positionalArgs[1]?.call());
      };
    default:
      if (!ignoreUndefined) throw HTError.undefined(id);
  }
}