call method

Future<TextAi> call({
  1. String? prompt,
  2. bool display = false,
  3. bool encode = false,
})

Calls the Pollinations API to generate text based on the provided prompt.

@param prompt The prompt to use for text generation. If null, the last message in the list is used. @param display Whether to display the response character by character. Default is false. @param encode Whether to encode the response. Default is false. @return A Future that resolves to a TextAi object with the generated text.

Implementation

Future<TextAi> call({
  String? prompt,
  bool display = false,
  bool encode = false,
}) async {
  if (prompt == null) {
    if (messages.isNotEmpty) {
      this.prompt = messages.last.content;
    }
  } else {
    this.prompt = prompt;
  }

  //this.messages = messages.map((message) {return message; }).toList();

  this.request = Request(
    model: model,
    prompt: this.prompt ?? "",
    system: system,
    contextual: contextual,
    messages: messages,
    images: images,
    seed: seed,
    private: private,
    reasoningEffort: reasoningEffort,
    jsonMode: jsonMode,
    referrer: referrer,
  );

  this.response = await request!.call(encode: encode);
  this.time = DateTime.now();

  messages.add(Message(role: Role.user, content: this.prompt ?? ""));
  messages.add(Message(role: Role.assistant, content: response));

  // Implement display logic if needed (requires console output in Flutter)
  if (display) {
    //  Use a function to simulate the character-by-character display
    await _displayResponse(response);
  }

  return this;
}