💄 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": "添加好友", "friendAdd": "添加好友",
"blockUser": "屏蔽用户", "blockUser": "屏蔽用户",
"unblockUser": "解除屏蔽用户", "unblockUser": "解除屏蔽用户",
"learMoreAboutPerson": "了解关于 TA 的更多" "learnMoreAboutPerson": "了解关于 TA 的更多"
} }

View File

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

View File

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

View File

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

View File

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