From cfc0a97da7b6a4ba6f8ae7549f00d3c51f90fbe9 Mon Sep 17 00:00:00 2001 From: hailin Date: Sat, 28 Feb 2026 04:45:19 -0800 Subject: [PATCH] fix: correct super_clipboard getFile API call signature getFile requires two positional args: format and callback. Wrapped in Completer for async/await usage. Co-Authored-By: Claude Opus 4.6 --- .../chat/presentation/pages/chat_page.dart | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/it0_app/lib/features/chat/presentation/pages/chat_page.dart b/it0_app/lib/features/chat/presentation/pages/chat_page.dart index 21b5c22..d683a73 100644 --- a/it0_app/lib/features/chat/presentation/pages/chat_page.dart +++ b/it0_app/lib/features/chat/presentation/pages/chat_page.dart @@ -1,3 +1,4 @@ +import 'dart:async'; import 'dart:convert'; import 'dart:io'; import 'package:flutter/material.dart'; @@ -209,20 +210,27 @@ class _ChatPageState extends ConsumerState { // Try PNG first, then JPEG for (final format in [Formats.png, Formats.jpeg]) { if (item.canProvide(format)) { - final completer = item.getFile(format); - if (completer != null) { - final file = await completer; - final bytes = await file.readAll(); - final mediaType = format == Formats.png ? 'image/png' : 'image/jpeg'; - setState(() { - _pendingAttachments.add(ChatAttachment( - base64Data: base64Encode(bytes), - mediaType: mediaType, - fileName: 'clipboard.${format == Formats.png ? "png" : "jpg"}', - )); - }); - return; - } + final completer = Completer>(); + item.getFile(format, (file) async { + try { + final bytes = await file.readAll(); + completer.complete(bytes); + } catch (e) { + completer.completeError(e); + } + }, onError: (e) { + if (!completer.isCompleted) completer.completeError(e); + }); + final bytes = await completer.future; + final mediaType = format == Formats.png ? 'image/png' : 'image/jpeg'; + setState(() { + _pendingAttachments.add(ChatAttachment( + base64Data: base64Encode(bytes), + mediaType: mediaType, + fileName: 'clipboard.${format == Formats.png ? "png" : "jpg"}', + )); + }); + return; } } }