import 'dart:developer' as dev;
import 'package:flutter/foundation.dart';
typedef OnCall = dynamic Function(
List<dynamic> args, Map<Symbol, dynamic> kwargs);
class VariadicFunction {
VariadicFunction(this._onCall);
final OnCall _onCall;
@override
noSuchMethod(Invocation invocation) {
if (!invocation.isMethod) {
super.noSuchMethod(invocation);
}
final arguments = invocation.positionalArguments;
final kwArguments = invocation.namedArguments;
return _onCall(arguments, kwArguments);
}
}
final logs = VariadicFunction((args, kwargs) {
if (!kDebugMode) return;
final positional = args.isNotEmpty ? args.join(' ') : '';
final named = kwargs.isEmpty
? ''
: kwargs
.map((key, value) => MapEntry(
[
key.toString().replaceAll('Symbol("', "").replaceAll('")', ''),
': ',
value
].join(''),
''))
.keys
.join(' ');
dev.log(
[positional, named].join(' '),
time: DateTime.now(),
);
}) as dynamic;
Last active
February 18, 2024 06:29
-
-
Save SNNafi/ed9d4ee98ace0d5b8ec9184f6c468d39 to your computer and use it in GitHub Desktop.
Simulate varargs in Dart and create a logs function with varargs
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Explanation: https://snnafi.medium.com/simulate-varargs-in-dart-and-create-a-logs-function-with-varargs-24bdcd666004