newService function
Implementation
String newService(String className, String methods) {
return '''
class ${className}IDLService {
${className}IDLService({
required this.canisterId,
required this.uri,
this.identity,
this.createActorMethod,
this.debug = true,
}) : idl = ${className}IDL.idl;
final String canisterId;
final Uri uri;
final Service idl;
final Identity? identity;
final bool debug;
final CreateActorMethod? createActorMethod;
Completer<CanisterActor>? _actor;
Future<CanisterActor> getActor() {
if (_actor != null) {
return _actor!.future;
}
final completer = Completer<CanisterActor>();
_actor = completer;
Future(() async {
final httpAgent = HttpAgent(
defaultProtocol: uri.scheme,
defaultHost: uri.host,
defaultPort: uri.port,
options: HttpAgentOptions(identity: identity),
);
if (debug) {
await httpAgent.fetchRootKey();
}
httpAgent.addTransform(
HttpAgentRequestTransformFn(call: makeNonceTransform()),
);
return CanisterActor(
ActorConfig(
canisterId: Principal.fromText(canisterId),
agent: httpAgent,
),
idl,
createActorMethod: createActorMethod,
);
}).then(completer.complete).catchError((e, s) {
completer.completeError(e, s);
_actor = null;
});
return completer.future;
}
$methods
}
''';
}