💄 Optimize attachment editor controls

This commit is contained in:
LittleSheep 2024-09-27 00:12:30 +08:00
parent bbee825cf4
commit fdc68fc5e1
5 changed files with 66 additions and 61 deletions

View File

@ -459,5 +459,5 @@
"friendAdd": "添加好友",
"blockUser": "屏蔽用户",
"unblockUser": "解除屏蔽用户",
"learMoreAboutPerson": "了解关于 TA 的更多"
"learnMoreAboutPerson": "了解关于 TA 的更多"
}

View File

@ -34,7 +34,7 @@ class Attachment {
String alt;
String mimetype;
String hash;
String destination;
int destination;
bool isAnalyzed;
bool isUploaded;
Map<String, dynamic>? metadata;

View File

@ -36,7 +36,7 @@ Attachment _$AttachmentFromJson(Map<String, dynamic> json) => Attachment(
alt: json['alt'] as String,
mimetype: json['mimetype'] as String,
hash: json['hash'] as String,
destination: json['destination'] as String,
destination: (json['destination'] as num).toInt(),
isAnalyzed: json['is_analyzed'] as bool,
isUploaded: json['is_uploaded'] as bool,
metadata: json['metadata'] as Map<String, dynamic>?,

View File

@ -744,8 +744,8 @@ class _AttachmentEditorPopupState extends State<AttachmentEditorPopup> {
return IgnorePointer(
ignoring: _uploadController.isUploading.value,
child: Container(
height: 64,
width: MediaQuery.of(context).size.width,
padding: const EdgeInsets.all(8),
decoration: BoxDecoration(
border: Border(
top: BorderSide(
@ -754,67 +754,72 @@ class _AttachmentEditorPopupState extends State<AttachmentEditorPopup> {
),
),
),
child: SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Wrap(
spacing: 8,
runSpacing: 0,
alignment: WrapAlignment.center,
runAlignment: WrapAlignment.center,
children: [
if ((PlatformInfo.isDesktop ||
PlatformInfo.isIOS ||
PlatformInfo.isWeb) &&
!widget.imageOnly)
ElevatedButton.icon(
icon: const Icon(Icons.paste),
label: Text('attachmentAddClipboard'.tr),
style: const ButtonStyle(visualDensity: density),
onPressed: () => _pasteFileToUpload(),
),
ElevatedButton.icon(
icon: const Icon(Icons.add_photo_alternate),
label: Text('attachmentAddGalleryPhoto'.tr),
child: Wrap(
spacing: 8,
runSpacing: 8,
alignment: WrapAlignment.center,
runAlignment: WrapAlignment.center,
children: [
if ((PlatformInfo.isDesktop ||
PlatformInfo.isIOS ||
PlatformInfo.isWeb) &&
!widget.imageOnly)
IconButton(
icon: const Icon(Icons.paste),
tooltip: 'attachmentAddClipboard'.tr,
style: const ButtonStyle(visualDensity: density),
onPressed: () => _pickPhotoToUpload(),
color: Theme.of(context).colorScheme.primary,
onPressed: () => _pasteFileToUpload(),
),
if (!widget.imageOnly)
ElevatedButton.icon(
icon: const Icon(Icons.add_road),
label: Text('attachmentAddGalleryVideo'.tr),
style: const ButtonStyle(visualDensity: density),
onPressed: () => _pickVideoToUpload(),
),
ElevatedButton.icon(
icon: const Icon(Icons.photo_camera_back),
label: Text('attachmentAddCameraPhoto'.tr),
IconButton(
icon: const Icon(Icons.add_photo_alternate),
tooltip: 'attachmentAddGalleryPhoto'.tr,
style: const ButtonStyle(visualDensity: density),
color: Theme.of(context).colorScheme.primary,
onPressed: () => _pickPhotoToUpload(),
),
if (!widget.imageOnly)
IconButton(
icon: const Icon(Icons.add_road),
tooltip: 'attachmentAddGalleryVideo'.tr,
style: const ButtonStyle(visualDensity: density),
color: Theme.of(context).colorScheme.primary,
onPressed: () => _pickVideoToUpload(),
),
if (PlatformInfo.isMobile)
IconButton(
icon: const Icon(Icons.photo_camera_back),
tooltip: 'attachmentAddCameraPhoto'.tr,
style: const ButtonStyle(visualDensity: density),
color: Theme.of(context).colorScheme.primary,
onPressed: () => _takeMediaToUpload(false),
),
if (!widget.imageOnly)
ElevatedButton.icon(
icon: const Icon(Icons.video_camera_back_outlined),
label: Text('attachmentAddCameraVideo'.tr),
style: const ButtonStyle(visualDensity: density),
onPressed: () => _takeMediaToUpload(true),
),
if (!widget.imageOnly)
ElevatedButton.icon(
icon: const Icon(Icons.file_present_rounded),
label: Text('attachmentAddFile'.tr),
style: const ButtonStyle(visualDensity: density),
onPressed: () => _pickFileToUpload(),
),
if (!widget.imageOnly)
ElevatedButton.icon(
icon: const Icon(Icons.link),
label: Text('attachmentAddFile'.tr),
style: const ButtonStyle(visualDensity: density),
onPressed: () => _linkAttachments(),
),
],
).paddingSymmetric(horizontal: 12),
),
if (!widget.imageOnly && PlatformInfo.isMobile)
IconButton(
icon: const Icon(Icons.video_camera_back_outlined),
tooltip: 'attachmentAddCameraVideo'.tr,
style: const ButtonStyle(visualDensity: density),
color: Theme.of(context).colorScheme.primary,
onPressed: () => _takeMediaToUpload(true),
),
if (!widget.imageOnly)
IconButton(
icon: const Icon(Icons.file_present_rounded),
tooltip: 'attachmentAddFile'.tr,
style: const ButtonStyle(visualDensity: density),
color: Theme.of(context).colorScheme.primary,
onPressed: () => _pickFileToUpload(),
),
if (!widget.imageOnly)
IconButton(
icon: const Icon(Icons.link),
tooltip: 'attachmentAddLink'.tr,
style: const ButtonStyle(visualDensity: density),
color: Theme.of(context).colorScheme.primary,
onPressed: () => _linkAttachments(),
),
],
).paddingSymmetric(horizontal: 12),
)
.animate(
target: _uploadController.isUploading.value ? 0 : 1,

View File

@ -2,7 +2,7 @@ name: solian
description: "The Solar Network App"
publish_to: "none"
version: 1.2.4+1
version: 1.2.4+2
environment:
sdk: ">=3.3.4 <4.0.0"