change caption on submit ('done' on keyboard)

This commit is contained in:
ashilkn 2022-11-04 16:19:47 +05:30
parent 2bea592925
commit 358efb20b8
2 changed files with 20 additions and 10 deletions

View file

@ -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<InfoItemWidget> createState() => _InfoItemWidgetState();
State<InfoItemTextWidget> createState() => _InfoItemTextWidgetState();
}
class _InfoItemWidgetState extends State<InfoItemWidget> {
class _InfoItemTextWidgetState extends State<InfoItemTextWidget> {
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<InfoItemWidget> {
final textTheme = getEnteTextTheme(context);
return TextField(
onEditingComplete: () {
//save caption here
editCaption();
_focusNode.unfocus();
},
controller: _textController,
@ -57,8 +60,15 @@ class _InfoItemWidgetState extends State<InfoItemWidget> {
onChanged: (value) {
setState(() {
currentLength = value.length;
caption = value;
});
},
);
}
void editCaption() {
if (caption.isNotEmpty) {
editFileCaption(context, widget.file, caption);
}
}
}

View file

@ -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<FileInfoWidget> {
final bool showDimension =
_exifData["resolution"] != null && _exifData["megaPixels"] != null;
final listTiles = <Widget>[
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,