From 358efb20b8e896da8fa13aa0974dade0d6f6998d Mon Sep 17 00:00:00 2001 From: ashilkn Date: Fri, 4 Nov 2022 16:19:47 +0530 Subject: [PATCH] change caption on submit ('done' on keyboard) --- ...widget.dart => info_item_text_widget.dart} | 22 ++++++++++++++----- lib/ui/viewer/file/file_info_widget.dart | 8 +++---- 2 files changed, 20 insertions(+), 10 deletions(-) rename lib/ui/components/{info_item_widget.dart => info_item_text_widget.dart} (73%) diff --git a/lib/ui/components/info_item_widget.dart b/lib/ui/components/info_item_text_widget.dart similarity index 73% rename from lib/ui/components/info_item_widget.dart rename to lib/ui/components/info_item_text_widget.dart index 48b9ee352..b9cbc4bc3 100644 --- a/lib/ui/components/info_item_widget.dart +++ b/lib/ui/components/info_item_text_widget.dart @@ -1,23 +1,26 @@ import 'package:flutter/material.dart'; +import 'package:photos/models/file.dart'; import 'package:photos/theme/ente_theme.dart'; +import 'package:photos/utils/magic_util.dart'; -class InfoItemWidget extends StatefulWidget { +class InfoItemTextWidget extends StatefulWidget { final String hintText; - const InfoItemWidget({this.hintText = '', super.key}); + final File file; + const InfoItemTextWidget({required this.file, this.hintText = '', super.key}); @override - State createState() => _InfoItemWidgetState(); + State createState() => _InfoItemTextWidgetState(); } -class _InfoItemWidgetState extends State { +class _InfoItemTextWidgetState extends State { int maxLength = 280; int currentLength = 0; final _textController = TextEditingController(); final _focusNode = FocusNode(); + String caption = ""; @override void dispose() { - // save caption here _textController.dispose(); super.dispose(); } @@ -28,7 +31,7 @@ class _InfoItemWidgetState extends State { final textTheme = getEnteTextTheme(context); return TextField( onEditingComplete: () { - //save caption here + editCaption(); _focusNode.unfocus(); }, controller: _textController, @@ -57,8 +60,15 @@ class _InfoItemWidgetState extends State { onChanged: (value) { setState(() { currentLength = value.length; + caption = value; }); }, ); } + + void editCaption() { + if (caption.isNotEmpty) { + editFileCaption(context, widget.file, caption); + } + } } diff --git a/lib/ui/viewer/file/file_info_widget.dart b/lib/ui/viewer/file/file_info_widget.dart index 4f8137d74..b21418a24 100644 --- a/lib/ui/viewer/file/file_info_widget.dart +++ b/lib/ui/viewer/file/file_info_widget.dart @@ -11,7 +11,7 @@ import "package:photos/models/file.dart"; import "package:photos/models/file_type.dart"; import 'package:photos/ui/components/divider_widget.dart'; import 'package:photos/ui/components/icon_button_widget.dart'; -import 'package:photos/ui/components/info_item_widget.dart'; +import 'package:photos/ui/components/info_item_text_widget.dart'; import 'package:photos/ui/components/title_bar_widget.dart'; import 'package:photos/ui/viewer/file/collections_list_of_file_widget.dart'; import 'package:photos/ui/viewer/file/device_folders_list_of_file_widget.dart'; @@ -93,9 +93,9 @@ class _FileInfoWidgetState extends State { final bool showDimension = _exifData["resolution"] != null && _exifData["megaPixels"] != null; final listTiles = [ - const Padding( - padding: EdgeInsets.only(top: 8, bottom: 4), - child: InfoItemWidget(), + Padding( + padding: const EdgeInsets.only(top: 8, bottom: 4), + child: InfoItemTextWidget(file: widget.file), ), ListTile( horizontalTitleGap: 2,