instanceMemberGet method

  1. @override
dynamic instanceMemberGet(
  1. dynamic instance,
  2. String id, {
  3. bool ignoreUndefined = false,
})
override

Default HTExternalClass constructor. Fetch a instance member of the Dart class by the id, in the form of

object.key

Implementation

@override
dynamic instanceMemberGet(dynamic instance, String id,
    {bool ignoreUndefined = false}) {
  switch (id) {
    case 'addIfAbsent':
      return ({object, positionalArgs, namedArgs}) {
        if (!object.contains(positionalArgs.first)) {
          object.add(positionalArgs.first);
        }
      };
    case 'add':
      return ({object, positionalArgs, namedArgs}) {
        object.add(positionalArgs.first);
      };
    case 'addAll':
      return ({object, positionalArgs, namedArgs}) =>
          object.addAll(positionalArgs.first);
    case 'reversed':
      return instance.reversed;
    case 'indexOf':
      return ({object, positionalArgs, namedArgs}) =>
          object.indexOf(positionalArgs[0], positionalArgs[1]);
    case 'lastIndexOf':
      return ({object, positionalArgs, namedArgs}) =>
          object.lastIndexOf(positionalArgs[0], positionalArgs[1]);
    case 'insert':
      return ({object, positionalArgs, namedArgs}) =>
          object.insert(positionalArgs[0], positionalArgs[1]);
    case 'insertAll':
      return ({object, positionalArgs, namedArgs}) =>
          object.insertAll(positionalArgs[0], positionalArgs[1]);
    case 'clear':
      return ({object, positionalArgs, namedArgs}) => object.clear();
    case 'remove':
      return ({object, positionalArgs, namedArgs}) =>
          object.remove(positionalArgs.first);
    case 'removeAt':
      return ({object, positionalArgs, namedArgs}) =>
          object.removeAt(positionalArgs.first);
    case 'removeLast':
      return ({object, positionalArgs, namedArgs}) => object.removeLast();
    case 'removeFirst':
      return ({object, positionalArgs, namedArgs}) => object.removeAt(0);
    case 'sublist':
      return ({object, positionalArgs, namedArgs}) =>
          object.sublist(positionalArgs[0], positionalArgs[1]);
    case 'asMap':
      return ({object, positionalArgs, namedArgs}) => object.asMap();
    case 'sort':
      return ({object, positionalArgs, namedArgs}) {
        HTFunction? func = positionalArgs.first;
        int Function(dynamic, dynamic)? sortFunc;
        if (func != null) {
          sortFunc = (a, b) {
            return func.call(positionalArgs: [a, b]) as int;
          };
        }
        object.sort(sortFunc);
      };
    case 'shuffle':
      return ({object, positionalArgs, namedArgs}) => object.shuffle();
    case 'indexWhere':
      return ({object, positionalArgs, namedArgs}) {
        HTFunction func = positionalArgs.first;
        int start = positionalArgs[1];
        return object.indexWhere((element) {
          return func.call(positionalArgs: [element]) as bool;
        }, start);
      };
    case 'lastIndexWhere':
      return ({object, positionalArgs, namedArgs}) {
        HTFunction func = positionalArgs.first;
        int? start = positionalArgs[1];
        return object.lastIndexWhere((element) {
          return func.call(positionalArgs: [element]) as bool;
        }, start);
      };
    case 'removeWhere':
      return ({object, positionalArgs, namedArgs}) {
        HTFunction func = positionalArgs.first;
        object.removeWhere((element) {
          return func.call(positionalArgs: [element]) as bool;
        });
      };
    case 'retainWhere':
      return ({object, positionalArgs, namedArgs}) {
        HTFunction func = positionalArgs.first;
        object.retainWhere((element) {
          return func.call(positionalArgs: [element]) as bool;
        });
      };
    case 'getRange':
      return ({object, positionalArgs, namedArgs}) =>
          object.getRange(positionalArgs[0], positionalArgs[1]);
    case 'setRange':
      return ({object, positionalArgs, namedArgs}) => object.setRange(
          positionalArgs[0],
          positionalArgs[1],
          positionalArgs[2],
          positionalArgs[3]);
    case 'removeRange':
      return ({object, positionalArgs, namedArgs}) =>
          object.removeRange(positionalArgs[0], positionalArgs[1]);
    case 'fillRange':
      return ({object, positionalArgs, namedArgs}) => object.fillRange(
          positionalArgs[0], positionalArgs[1], positionalArgs[2]);
    case 'replaceRange':
      return ({object, positionalArgs, namedArgs}) => object.replaceRange(
          positionalArgs[0], positionalArgs[1], positionalArgs[2]);
    case 'clone':
      return ({object, positionalArgs, namedArgs}) => deepCopy(object);
    default:
      return superClass!.instanceMemberGet(instance, id);
  }
}