handled image insertion in action taken

This commit is contained in:
2026-02-21 20:12:30 +08:00
parent 1b2b89d506
commit 8bb69a80af
2 changed files with 158 additions and 5 deletions
+43 -5
View File
@@ -1,3 +1,4 @@
// ignore_for_file: use_build_context_synchronously
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
@@ -1612,25 +1613,62 @@ class _TaskDetailScreenState extends ConsumerState<TaskDetailScreen>
if (bytes == null) {
return;
}
final b64 =
base64Encode(bytes);
final ext =
file.extension ??
'png';
final dataUri =
'data:image/$ext;base64,$b64';
final messenger =
ScaffoldMessenger.of(
context,
);
String? url;
try {
url = await ref
.read(
tasksControllerProvider,
)
.uploadActionImage(
taskId: task.id,
bytes: bytes,
extension: ext,
);
} catch (e) {
messenger.showSnackBar(
SnackBar(
content: Text(
'Upload error: $e',
),
),
);
return;
}
if (url == null) {
messenger.showSnackBar(
const SnackBar(
content: Text(
'Image upload failed (no URL returned)',
),
),
);
return;
}
final trimmedUrl = url
.trim();
final idx =
_actionController
?.selection
.baseOffset ??
0;
// ignore: avoid_print
print(
'inserting image embed idx=$idx url=$trimmedUrl',
);
_actionController
?.document
.insert(
idx,
quill
.BlockEmbed.image(
dataUri,
trimmedUrl,
),
);
} catch (_) {}